diff --git a/.gitignore b/.gitignore index 5af638b..26a4a54 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ docs/.vite/ indexserver.ts dbs/ config.jsonc -config.json \ No newline at end of file +config.json +cache/ \ No newline at end of file diff --git a/config.ts b/config.ts index 6daeb91..bed2c60 100644 --- a/config.ts +++ b/config.ts @@ -2,7 +2,7 @@ import { parse } from "jsr:@std/jsonc"; import * as z from "npm:zod"; // configure these from the config.jsonc file (you can use config.jsonc.example as reference) -const indexTarget = z.string().refine( +export const indexTarget = z.string().refine( (val) => { const parts = val.split("#"); if (parts.length !== 2) return false; diff --git a/deno.lock b/deno.lock index 7ec9e54..6a66577 100644 --- a/deno.lock +++ b/deno.lock @@ -3,8 +3,6 @@ "specifiers": { "jsr:@db/sqlite@0.11": "0.11.1", "jsr:@denosaurs/plug@1": "1.1.0", - "jsr:@noble/secp256k1@*": "2.3.0", - "jsr:@panva/jose@*": "6.0.12", "jsr:@std/assert@0.217": "0.217.0", "jsr:@std/encoding@1": "1.0.10", "jsr:@std/fmt@1": "1.0.8", @@ -14,26 +12,22 @@ "jsr:@std/path@0.217": "0.217.0", "jsr:@std/path@1": "1.1.1", "jsr:@std/path@^1.1.1": "1.1.1", - "npm:@atproto/api@*": "0.15.12", + "npm:@atproto/api@*": "0.16.2", "npm:@atproto/identity@*": "0.4.8", - "npm:@atproto/lex-cli@*": "0.9.1", - "npm:@atproto/lexicon@*": "0.4.11", + "npm:@atproto/lexicon@*": "0.4.12", "npm:@atproto/xrpc-server@*": "0.9.1", "npm:@atproto/xrpc@*": "0.7.1", - "npm:@ipld/car@*": "5.4.2", - "npm:@ipld/dag-cbor@*": "9.2.4", - "npm:@types/express@4.17.15": "4.17.15", - "npm:@types/node@*": "22.15.15", + "npm:@babel/core@*": "7.28.3", + "npm:babel-plugin-react-compiler@*": "19.1.0-rc.2", "npm:did-jwt@*": "8.0.17", "npm:did-resolver@*": "4.1.0", - "npm:docsify-cli@*": "4.4.4", - "npm:express@*": "5.1.0", + "npm:esbuild-plugin-cache@*": "0.2.10", + "npm:esbuild@0.20.2": "0.20.2", "npm:ky@*": "1.8.1", "npm:multiformats@*": "13.4.0", "npm:quick-lru@*": "7.0.1", - "npm:vite@*": "7.1.3_@types+node@22.15.15_picomatch@4.0.3", "npm:web-did-resolver@*": "2.0.30", - "npm:zod@*": "3.25.46" + "npm:zod@*": "4.0.17" }, "jsr": { "@db/sqlite@0.11.1": { @@ -52,12 +46,6 @@ "jsr:@std/path@1" ] }, - "@noble/secp256k1@2.3.0": { - "integrity": "63eb4479a7c548e0ddea1cb5ea9bf7efacafe495e7f1c07bce1b4108df95967f" - }, - "@panva/jose@6.0.12": { - "integrity": "b228cf79558ccc979046855bb140cd5d7bd86564dc047e563632a686b1346dcc" - }, "@std/assert@0.217.0": { "integrity": "c98e279362ca6982d5285c3b89517b757c1e3477ee9f14eb2fdf80a45aaa9642" }, @@ -94,17 +82,24 @@ } }, "npm": { - "@atproto/api@0.15.12": { - "integrity": "sha512-51IHenZMA+Ekfe2OlZL/mTFqvZQU93jI4xsLvTFhGc4tSQYCHV9r/AJTANPZLFrhm9GfWZ0n90r/9IQl9eicjg==", + "@ampproject/remapping@2.3.0": { + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": [ + "@jridgewell/gen-mapping", + "@jridgewell/trace-mapping" + ] + }, + "@atproto/api@0.16.2": { + "integrity": "sha512-sSTg31J8ws8DNaoiizp+/uJideRxRaJsq+Nyl8rnSxGw0w3oCvoeRU19iRWh2t0jZEmiRJAGkveGu23NKmPYEQ==", "dependencies": [ "@atproto/common-web", - "@atproto/lexicon@0.4.11", + "@atproto/lexicon", "@atproto/syntax", - "@atproto/xrpc@0.7.0", + "@atproto/xrpc", "await-lock", "multiformats@9.9.0", "tlds", - "zod" + "zod@3.25.76" ] }, "@atproto/common-web@0.4.2": { @@ -113,14 +108,14 @@ "graphemer", "multiformats@9.9.0", "uint8arrays@3.0.0", - "zod" + "zod@3.25.76" ] }, "@atproto/common@0.4.11": { "integrity": "sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==", "dependencies": [ "@atproto/common-web", - "@ipld/dag-cbor@7.0.3", + "@ipld/dag-cbor", "cbor-x", "iso-datestring-validator", "multiformats@9.9.0", @@ -142,30 +137,6 @@ "@atproto/crypto" ] }, - "@atproto/lex-cli@0.9.1": { - "integrity": "sha512-ftcUZd8rElHeUJq6pTcQkURnTEe7woCF4I1NK3j5GpT/itacEZtcppabjy5o2aUsbktZsALj3ch3xm7ZZ+Zp0w==", - "dependencies": [ - "@atproto/lexicon@0.4.12", - "@atproto/syntax", - "chalk@4.1.2", - "commander", - "prettier", - "ts-morph", - "yesno", - "zod" - ], - "bin": true - }, - "@atproto/lexicon@0.4.11": { - "integrity": "sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==", - "dependencies": [ - "@atproto/common-web", - "@atproto/syntax", - "iso-datestring-validator", - "multiformats@9.9.0", - "zod" - ] - }, "@atproto/lexicon@0.4.12": { "integrity": "sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==", "dependencies": [ @@ -173,7 +144,7 @@ "@atproto/syntax", "iso-datestring-validator", "multiformats@9.9.0", - "zod" + "zod@3.25.76" ] }, "@atproto/syntax@0.4.0": { @@ -184,30 +155,143 @@ "dependencies": [ "@atproto/common", "@atproto/crypto", - "@atproto/lexicon@0.4.12", - "@atproto/xrpc@0.7.1", + "@atproto/lexicon", + "@atproto/xrpc", "cbor-x", - "express@4.21.2", + "express", "http-errors", - "mime-types@2.1.35", + "mime-types", "rate-limiter-flexible", "uint8arrays@3.0.0", - "ws@8.18.3", - "zod" + "ws", + "zod@3.25.76" ] }, - "@atproto/xrpc@0.7.0": { - "integrity": "sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==", + "@atproto/xrpc@0.7.1": { + "integrity": "sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==", "dependencies": [ - "@atproto/lexicon@0.4.11", - "zod" + "@atproto/lexicon", + "zod@3.25.76" ] }, - "@atproto/xrpc@0.7.1": { - "integrity": "sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==", + "@babel/code-frame@7.27.1": { + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dependencies": [ + "@babel/helper-validator-identifier", + "js-tokens", + "picocolors" + ] + }, + "@babel/compat-data@7.28.0": { + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==" + }, + "@babel/core@7.28.3": { + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "dependencies": [ + "@ampproject/remapping", + "@babel/code-frame", + "@babel/generator", + "@babel/helper-compilation-targets", + "@babel/helper-module-transforms", + "@babel/helpers", + "@babel/parser", + "@babel/template", + "@babel/traverse", + "@babel/types", + "convert-source-map", + "debug@4.4.1", + "gensync", + "json5", + "semver" + ] + }, + "@babel/generator@7.28.3": { + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dependencies": [ + "@babel/parser", + "@babel/types", + "@jridgewell/gen-mapping", + "@jridgewell/trace-mapping", + "jsesc" + ] + }, + "@babel/helper-compilation-targets@7.27.2": { + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dependencies": [ + "@babel/compat-data", + "@babel/helper-validator-option", + "browserslist", + "lru-cache", + "semver" + ] + }, + "@babel/helper-globals@7.28.0": { + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" + }, + "@babel/helper-module-imports@7.27.1": { + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dependencies": [ + "@babel/traverse", + "@babel/types" + ] + }, + "@babel/helper-module-transforms@7.28.3_@babel+core@7.28.3": { + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dependencies": [ + "@babel/core", + "@babel/helper-module-imports", + "@babel/helper-validator-identifier", + "@babel/traverse" + ] + }, + "@babel/helper-string-parser@7.27.1": { + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" + }, + "@babel/helper-validator-identifier@7.27.1": { + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" + }, + "@babel/helper-validator-option@7.27.1": { + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" + }, + "@babel/helpers@7.28.3": { + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", "dependencies": [ - "@atproto/lexicon@0.4.12", - "zod" + "@babel/template", + "@babel/types" + ] + }, + "@babel/parser@7.28.3": { + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "dependencies": [ + "@babel/types" + ], + "bin": true + }, + "@babel/template@7.27.2": { + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dependencies": [ + "@babel/code-frame", + "@babel/parser", + "@babel/types" + ] + }, + "@babel/traverse@7.28.3": { + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", + "dependencies": [ + "@babel/code-frame", + "@babel/generator", + "@babel/helper-globals", + "@babel/parser", + "@babel/template", + "@babel/types", + "debug@4.4.1" + ] + }, + "@babel/types@7.28.2": { + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dependencies": [ + "@babel/helper-string-parser", + "@babel/helper-validator-identifier" ] }, "@cbor-extract/cbor-extract-darwin-arm64@2.2.0": { @@ -240,157 +324,146 @@ "os": ["win32"], "cpu": ["x64"] }, - "@esbuild/aix-ppc64@0.25.9": { - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "@esbuild/aix-ppc64@0.20.2": { + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "os": ["aix"], "cpu": ["ppc64"] }, - "@esbuild/android-arm64@0.25.9": { - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "@esbuild/android-arm64@0.20.2": { + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "os": ["android"], "cpu": ["arm64"] }, - "@esbuild/android-arm@0.25.9": { - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "@esbuild/android-arm@0.20.2": { + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "os": ["android"], "cpu": ["arm"] }, - "@esbuild/android-x64@0.25.9": { - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "@esbuild/android-x64@0.20.2": { + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "os": ["android"], "cpu": ["x64"] }, - "@esbuild/darwin-arm64@0.25.9": { - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "@esbuild/darwin-arm64@0.20.2": { + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "os": ["darwin"], "cpu": ["arm64"] }, - "@esbuild/darwin-x64@0.25.9": { - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "@esbuild/darwin-x64@0.20.2": { + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "os": ["darwin"], "cpu": ["x64"] }, - "@esbuild/freebsd-arm64@0.25.9": { - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "@esbuild/freebsd-arm64@0.20.2": { + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "os": ["freebsd"], "cpu": ["arm64"] }, - "@esbuild/freebsd-x64@0.25.9": { - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "@esbuild/freebsd-x64@0.20.2": { + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "os": ["freebsd"], "cpu": ["x64"] }, - "@esbuild/linux-arm64@0.25.9": { - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "@esbuild/linux-arm64@0.20.2": { + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "os": ["linux"], "cpu": ["arm64"] }, - "@esbuild/linux-arm@0.25.9": { - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "@esbuild/linux-arm@0.20.2": { + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "os": ["linux"], "cpu": ["arm"] }, - "@esbuild/linux-ia32@0.25.9": { - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "@esbuild/linux-ia32@0.20.2": { + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "os": ["linux"], "cpu": ["ia32"] }, - "@esbuild/linux-loong64@0.25.9": { - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "@esbuild/linux-loong64@0.20.2": { + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "os": ["linux"], "cpu": ["loong64"] }, - "@esbuild/linux-mips64el@0.25.9": { - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "@esbuild/linux-mips64el@0.20.2": { + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "os": ["linux"], "cpu": ["mips64el"] }, - "@esbuild/linux-ppc64@0.25.9": { - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "@esbuild/linux-ppc64@0.20.2": { + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "os": ["linux"], "cpu": ["ppc64"] }, - "@esbuild/linux-riscv64@0.25.9": { - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "@esbuild/linux-riscv64@0.20.2": { + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "os": ["linux"], "cpu": ["riscv64"] }, - "@esbuild/linux-s390x@0.25.9": { - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "@esbuild/linux-s390x@0.20.2": { + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "os": ["linux"], "cpu": ["s390x"] }, - "@esbuild/linux-x64@0.25.9": { - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "@esbuild/linux-x64@0.20.2": { + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "os": ["linux"], "cpu": ["x64"] }, - "@esbuild/netbsd-arm64@0.25.9": { - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", - "os": ["netbsd"], - "cpu": ["arm64"] - }, - "@esbuild/netbsd-x64@0.25.9": { - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "@esbuild/netbsd-x64@0.20.2": { + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "os": ["netbsd"], "cpu": ["x64"] }, - "@esbuild/openbsd-arm64@0.25.9": { - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", - "os": ["openbsd"], - "cpu": ["arm64"] - }, - "@esbuild/openbsd-x64@0.25.9": { - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "@esbuild/openbsd-x64@0.20.2": { + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "os": ["openbsd"], "cpu": ["x64"] }, - "@esbuild/openharmony-arm64@0.25.9": { - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", - "os": ["openharmony"], - "cpu": ["arm64"] - }, - "@esbuild/sunos-x64@0.25.9": { - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "@esbuild/sunos-x64@0.20.2": { + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "os": ["sunos"], "cpu": ["x64"] }, - "@esbuild/win32-arm64@0.25.9": { - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "@esbuild/win32-arm64@0.20.2": { + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "os": ["win32"], "cpu": ["arm64"] }, - "@esbuild/win32-ia32@0.25.9": { - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "@esbuild/win32-ia32@0.20.2": { + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "os": ["win32"], "cpu": ["ia32"] }, - "@esbuild/win32-x64@0.25.9": { - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "@esbuild/win32-x64@0.20.2": { + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "os": ["win32"], "cpu": ["x64"] }, - "@ipld/car@5.4.2": { - "integrity": "sha512-gfyrJvePyXnh2Fbj8mPg4JYvEZ3izhk8C9WgAle7xIYbrJNSXmNQ6BxAls8Gof97vvGbCROdxbTWRmHJtTCbcg==", - "dependencies": [ - "@ipld/dag-cbor@9.2.4", - "cborg@4.2.11", - "multiformats@13.4.0", - "varint" - ] - }, "@ipld/dag-cbor@7.0.3": { "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", "dependencies": [ - "cborg@1.10.2", + "cborg", "multiformats@9.9.0" ] }, - "@ipld/dag-cbor@9.2.4": { - "integrity": "sha512-GbDWYl2fdJgkYtIJN0HY9oO0o50d1nB4EQb7uYWKUd2ztxCjxiEW3PjwGG0nqUpN1G4Cug6LX8NzbA7fKT+zfA==", + "@jridgewell/gen-mapping@0.3.13": { + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dependencies": [ - "cborg@4.2.11", - "multiformats@13.4.0" + "@jridgewell/sourcemap-codec", + "@jridgewell/trace-mapping" + ] + }, + "@jridgewell/resolve-uri@3.1.2": { + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + }, + "@jridgewell/sourcemap-codec@1.5.5": { + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + }, + "@jridgewell/trace-mapping@0.3.30": { + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "dependencies": [ + "@jridgewell/resolve-uri", + "@jridgewell/sourcemap-codec" ] }, "@multiformats/base-x@4.0.1": { @@ -408,165 +481,18 @@ "@noble/hashes@1.8.0": { "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==" }, - "@rollup/rollup-android-arm-eabi@4.46.4": { - "integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==", - "os": ["android"], - "cpu": ["arm"] - }, - "@rollup/rollup-android-arm64@4.46.4": { - "integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==", - "os": ["android"], - "cpu": ["arm64"] - }, - "@rollup/rollup-darwin-arm64@4.46.4": { - "integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@rollup/rollup-darwin-x64@4.46.4": { - "integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@rollup/rollup-freebsd-arm64@4.46.4": { - "integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==", - "os": ["freebsd"], - "cpu": ["arm64"] - }, - "@rollup/rollup-freebsd-x64@4.46.4": { - "integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "@rollup/rollup-linux-arm-gnueabihf@4.46.4": { - "integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@rollup/rollup-linux-arm-musleabihf@4.46.4": { - "integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@rollup/rollup-linux-arm64-gnu@4.46.4": { - "integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@rollup/rollup-linux-arm64-musl@4.46.4": { - "integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@rollup/rollup-linux-loongarch64-gnu@4.46.4": { - "integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==", - "os": ["linux"], - "cpu": ["loong64"] - }, - "@rollup/rollup-linux-ppc64-gnu@4.46.4": { - "integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==", - "os": ["linux"], - "cpu": ["ppc64"] - }, - "@rollup/rollup-linux-riscv64-gnu@4.46.4": { - "integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==", - "os": ["linux"], - "cpu": ["riscv64"] - }, - "@rollup/rollup-linux-riscv64-musl@4.46.4": { - "integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==", - "os": ["linux"], - "cpu": ["riscv64"] - }, - "@rollup/rollup-linux-s390x-gnu@4.46.4": { - "integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==", - "os": ["linux"], - "cpu": ["s390x"] - }, - "@rollup/rollup-linux-x64-gnu@4.46.4": { - "integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@rollup/rollup-linux-x64-musl@4.46.4": { - "integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@rollup/rollup-win32-arm64-msvc@4.46.4": { - "integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "@rollup/rollup-win32-ia32-msvc@4.46.4": { - "integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==", - "os": ["win32"], - "cpu": ["ia32"] - }, - "@rollup/rollup-win32-x64-msvc@4.46.4": { - "integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==", - "os": ["win32"], - "cpu": ["x64"] - }, "@scure/base@1.2.6": { "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==" }, - "@sindresorhus/is@0.14.0": { - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer@1.1.2": { - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": [ - "defer-to-connect" - ] - }, - "@ts-morph/common@0.25.0": { - "integrity": "sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==", - "dependencies": [ - "minimatch", - "path-browserify", - "tinyglobby" - ] - }, - "@types/body-parser@1.19.6": { - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "@types/node-fetch@2.6.13": { + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", "dependencies": [ - "@types/connect", - "@types/node" + "@types/node@22.15.15", + "form-data" ] }, - "@types/connect@3.4.38": { - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dependencies": [ - "@types/node" - ] - }, - "@types/estree@1.0.8": { - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" - }, - "@types/express-serve-static-core@4.19.6": { - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dependencies": [ - "@types/node", - "@types/qs", - "@types/range-parser", - "@types/send" - ] - }, - "@types/express@4.17.15": { - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", - "dependencies": [ - "@types/body-parser", - "@types/express-serve-static-core", - "@types/qs", - "@types/serve-static" - ] - }, - "@types/http-errors@2.0.5": { - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" - }, - "@types/mime@1.3.5": { - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "@types/node@14.18.63": { + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" }, "@types/node@22.15.15": { "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", @@ -574,27 +500,6 @@ "undici-types" ] }, - "@types/qs@6.14.0": { - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" - }, - "@types/range-parser@1.2.7": { - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "@types/send@0.17.5": { - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", - "dependencies": [ - "@types/mime", - "@types/node" - ] - }, - "@types/serve-static@1.15.8": { - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", - "dependencies": [ - "@types/http-errors", - "@types/node", - "@types/send" - ] - }, "abort-controller@3.0.0": { "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": [ @@ -604,72 +509,31 @@ "accepts@1.3.8": { "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": [ - "mime-types@2.1.35", - "negotiator@0.6.3" - ] - }, - "accepts@2.0.0": { - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dependencies": [ - "mime-types@3.0.1", - "negotiator@1.0.0" - ] - }, - "ansi-align@3.0.1": { - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dependencies": [ - "string-width" - ] - }, - "ansi-colors@4.1.3": { - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - }, - "ansi-regex@2.1.1": { - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "ansi-regex@5.0.1": { - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles@2.2.1": { - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - }, - "ansi-styles@3.2.1": { - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": [ - "color-convert@1.9.3" - ] - }, - "ansi-styles@4.3.0": { - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": [ - "color-convert@2.0.1" - ] - }, - "anymatch@3.1.3": { - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": [ - "normalize-path", - "picomatch@2.3.1" + "mime-types", + "negotiator" ] }, "array-flatten@1.1.1": { "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "asynckit@0.4.0": { + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "atomic-sleep@1.0.0": { "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" }, "await-lock@2.2.2": { "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" }, - "balanced-match@1.0.2": { - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "babel-plugin-react-compiler@19.1.0-rc.2": { + "integrity": "sha512-kSNA//p5fMO6ypG8EkEVPIqAjwIXm5tMjfD1XRPL/sRjYSbJ6UsvORfaeolNWnZ9n310aM0xJP7peW26BuCVzA==", + "dependencies": [ + "@babel/types" + ] }, "base64-js@1.5.1": { "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "binary-extensions@2.3.0": { - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" - }, "body-parser@1.20.3": { "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": [ @@ -679,52 +543,23 @@ "depd", "destroy", "http-errors", - "iconv-lite@0.4.24", - "on-finished@2.4.1", - "qs@6.13.0", - "raw-body@2.5.2", - "type-is@1.6.18", + "iconv-lite", + "on-finished", + "qs", + "raw-body", + "type-is", "unpipe" ] }, - "body-parser@2.2.0": { - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "dependencies": [ - "bytes", - "content-type", - "debug@4.4.1", - "http-errors", - "iconv-lite@0.6.3", - "on-finished@2.4.1", - "qs@6.14.0", - "raw-body@3.0.0", - "type-is@2.0.1" - ] - }, - "boxen@4.2.0": { - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dependencies": [ - "ansi-align", - "camelcase", - "chalk@3.0.0", - "cli-boxes", - "string-width", - "term-size", - "type-fest", - "widest-line" - ] - }, - "brace-expansion@2.0.2": { - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "browserslist@4.25.3": { + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", "dependencies": [ - "balanced-match" - ] - }, - "braces@3.0.3": { - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": [ - "fill-range" - ] + "caniuse-lite", + "electron-to-chromium", + "node-releases", + "update-browserslist-db" + ], + "bin": true }, "buffer@6.0.3": { "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", @@ -736,18 +571,6 @@ "bytes@3.1.2": { "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, - "cacheable-request@6.1.0": { - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": [ - "clone-response", - "get-stream@5.2.0", - "http-cache-semantics", - "keyv", - "lowercase-keys@2.0.0", - "normalize-url", - "responselike" - ] - }, "call-bind-apply-helpers@1.0.2": { "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dependencies": [ @@ -762,8 +585,8 @@ "get-intrinsic" ] }, - "camelcase@5.3.1": { - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "caniuse-lite@1.0.30001737": { + "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==" }, "canonicalize@2.1.0": { "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", @@ -795,276 +618,90 @@ "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", "bin": true }, - "cborg@4.2.11": { - "integrity": "sha512-7gs3iaqtsD9OHowgqzc6ixQGwSBONqosVR2co0Bg0pARgrLap+LCcEIXJuuIz2jHy0WWQeDMFPEsU2r17I2XPQ==", - "bin": true - }, - "chalk@1.1.3": { - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "combined-stream@1.0.8": { + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": [ - "ansi-styles@2.2.1", - "escape-string-regexp", - "has-ansi", - "strip-ansi@3.0.1", - "supports-color@2.0.0" + "delayed-stream" ] }, - "chalk@2.4.2": { - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "content-disposition@0.5.4": { + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": [ - "ansi-styles@3.2.1", - "escape-string-regexp", - "supports-color@5.5.0" + "safe-buffer" ] }, - "chalk@3.0.0": { - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": [ - "ansi-styles@4.3.0", - "supports-color@7.2.0" - ] + "content-type@1.0.5": { + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, - "chalk@4.1.2": { - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": [ - "ansi-styles@4.3.0", - "supports-color@7.2.0" - ] + "convert-source-map@2.0.0": { + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, - "chokidar@3.6.0": { - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": [ - "anymatch", - "braces", - "glob-parent", - "is-binary-path", - "is-glob", - "normalize-path", - "readdirp" - ], - "optionalDependencies": [ - "fsevents" - ] + "cookie-signature@1.0.6": { + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, - "ci-info@2.0.0": { - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "cookie@0.7.1": { + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" }, - "cli-boxes@2.2.1": { - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "cross-fetch@4.1.0": { + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dependencies": [ + "node-fetch" + ] }, - "cliui@6.0.0": { - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "debug@2.6.9": { + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": [ - "string-width", - "strip-ansi@6.0.1", - "wrap-ansi" + "ms@2.0.0" ] }, - "clone-response@1.0.3": { - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "debug@4.4.1": { + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dependencies": [ - "mimic-response" + "ms@2.1.3" ] }, - "code-block-writer@13.0.3": { - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==" + "delayed-stream@1.0.0": { + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "color-convert@1.9.3": { - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "deno-cache@0.2.12": { + "integrity": "sha512-Jv8utRPQhsm+kx9ky0OdUnTWBLKGlFcBoLjQqrpuDd9zhuciCLPmklbz1YYfdaeM0dgp1nwRoqlHu5sH3vmJGQ==", "dependencies": [ - "color-name@1.1.3" + "@types/node@14.18.63", + "@types/node-fetch", + "node-fetch" ] }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "deno-importmap@0.1.6": { + "integrity": "sha512-nZ5ZA8qW5F0Yzq1VhRp1wARpWSfD0FQvI1IUHXbE3oROO6tcYomTIWSAZGzO4LGQl1hTG6UmhPNTP3d4uMXzMg==", "dependencies": [ - "color-name@1.1.4" + "@types/node@14.18.63" ] }, - "color-name@1.1.3": { - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "depd@2.0.0": { + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "destroy@1.2.0": { + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, - "commander@9.5.0": { - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + "detect-libc@2.0.4": { + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==" }, - "configstore@5.0.1": { - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "did-jwt@8.0.17": { + "integrity": "sha512-qWPog796seH8CzvNShvqvs6YeCRVAYWmKzcPtirnhvH6wjiFvhquztJZwr5E9VHnTosW6V7bclWzrp7/HGJbSw==", "dependencies": [ - "dot-prop", - "graceful-fs", - "make-dir", - "unique-string", - "write-file-atomic", - "xdg-basedir" + "@noble/ciphers", + "@noble/curves", + "@noble/hashes", + "@scure/base", + "canonicalize", + "did-resolver", + "multibase", + "multiformats@9.9.0", + "uint8arrays@3.1.1" ] }, - "connect-history-api-fallback@1.6.0": { - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "connect-livereload@0.6.1": { - "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==" - }, - "connect@3.7.0": { - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dependencies": [ - "debug@2.6.9", - "finalhandler@1.1.2", - "parseurl", - "utils-merge" - ] - }, - "content-disposition@0.5.4": { - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": [ - "safe-buffer" - ] - }, - "content-disposition@1.0.0": { - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dependencies": [ - "safe-buffer" - ] - }, - "content-type@1.0.5": { - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "cookie-signature@1.0.6": { - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookie-signature@1.2.2": { - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==" - }, - "cookie@0.7.1": { - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" - }, - "cookie@0.7.2": { - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" - }, - "cp-file@7.0.0": { - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", - "dependencies": [ - "graceful-fs", - "make-dir", - "nested-error-stacks", - "p-event" - ] - }, - "cross-fetch@4.1.0": { - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dependencies": [ - "node-fetch" - ] - }, - "crypto-random-string@2.0.0": { - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "debug@2.6.9": { - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": [ - "ms@2.0.0" - ] - }, - "debug@4.4.1": { - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dependencies": [ - "ms@2.1.3" - ] - }, - "decamelize@1.2.0": { - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, - "decompress-response@3.3.0": { - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dependencies": [ - "mimic-response" - ] - }, - "deep-extend@0.6.0": { - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "defer-to-connect@1.1.3": { - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "depd@2.0.0": { - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy@1.2.0": { - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-libc@2.0.4": { - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==" - }, - "did-jwt@8.0.17": { - "integrity": "sha512-qWPog796seH8CzvNShvqvs6YeCRVAYWmKzcPtirnhvH6wjiFvhquztJZwr5E9VHnTosW6V7bclWzrp7/HGJbSw==", - "dependencies": [ - "@noble/ciphers", - "@noble/curves", - "@noble/hashes", - "@scure/base", - "canonicalize", - "did-resolver", - "multibase", - "multiformats@9.9.0", - "uint8arrays@3.1.1" - ] - }, - "did-resolver@4.1.0": { - "integrity": "sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA==" - }, - "docsify-cli@4.4.4": { - "integrity": "sha512-NAZgg6b0BsDuq/Pe+P19Qb2J1d+ZVbS0eGkeCNxyu4F9/CQSsRqZqAvPJ9/0I+BCHn4sgftA2jluqhQVzKzrSA==", - "dependencies": [ - "chalk@2.4.2", - "connect", - "connect-history-api-fallback", - "connect-livereload", - "cp-file", - "docsify", - "docsify-server-renderer", - "enquirer", - "fs-extra", - "get-port", - "livereload", - "lru-cache", - "open", - "serve-static@1.16.2", - "update-notifier", - "yargonaut", - "yargs" - ], - "bin": true - }, - "docsify-server-renderer@4.13.1": { - "integrity": "sha512-XNJeCK3zp+mVO7JZFn0bH4hNBAMMC1MbuCU7CBsjLHYn4NHrjIgCBGmylzEan3/4Qm6kbSzQx8XzUK5T7GQxHw==", - "dependencies": [ - "debug@4.4.1", - "docsify", - "node-fetch", - "resolve-pathname" - ], - "deprecated": true - }, - "docsify@4.13.1": { - "integrity": "sha512-BsDypTBhw0mfslw9kZgAspCMZSM+sUIIDg5K/t1hNLkvbem9h64ZQc71e1IpY+iWsi/KdeqfazDfg52y2Lmm0A==", - "dependencies": [ - "marked", - "medium-zoom", - "opencollective-postinstall", - "prismjs", - "strip-indent", - "tinydate", - "tweezer.js" - ], - "scripts": true - }, - "dot-prop@5.3.0": { - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": [ - "is-obj" - ] + "did-resolver@4.1.0": { + "integrity": "sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA==" }, "dunder-proto@1.0.1": { "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", @@ -1074,14 +711,11 @@ "gopd" ] }, - "duplexer3@0.1.5": { - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, "ee-first@1.1.1": { "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "emoji-regex@8.0.0": { - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "electron-to-chromium@1.5.209": { + "integrity": "sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==" }, "encodeurl@1.0.2": { "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" @@ -1089,19 +723,6 @@ "encodeurl@2.0.0": { "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, - "end-of-stream@1.4.5": { - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dependencies": [ - "once" - ] - }, - "enquirer@2.4.1": { - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dependencies": [ - "ansi-colors", - "strip-ansi@6.0.1" - ] - }, "es-define-property@1.0.1": { "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, @@ -1114,8 +735,24 @@ "es-errors" ] }, - "esbuild@0.25.9": { - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "es-set-tostringtag@2.1.0": { + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": [ + "es-errors", + "get-intrinsic", + "has-tostringtag", + "hasown" + ] + }, + "esbuild-plugin-cache@0.2.10": { + "integrity": "sha512-e2Z8TgorvVKuj2A8/VP+sC04rt47JTpaew+9uP4CN7106W/cQxY1cqC1KWm+szwpfzJbBqXOpAqN4JPRySbW+A==", + "dependencies": [ + "deno-cache", + "deno-importmap" + ] + }, + "esbuild@0.20.2": { + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "optionalDependencies": [ "@esbuild/aix-ppc64", "@esbuild/android-arm", @@ -1134,11 +771,8 @@ "@esbuild/linux-riscv64", "@esbuild/linux-s390x", "@esbuild/linux-x64", - "@esbuild/netbsd-arm64", "@esbuild/netbsd-x64", - "@esbuild/openbsd-arm64", "@esbuild/openbsd-x64", - "@esbuild/openharmony-arm64", "@esbuild/sunos-x64", "@esbuild/win32-arm64", "@esbuild/win32-ia32", @@ -1147,15 +781,12 @@ "scripts": true, "bin": true }, - "escape-goat@2.1.1": { - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "escalade@3.2.0": { + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" }, "escape-html@1.0.3": { "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "escape-string-regexp@1.0.5": { - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, "etag@1.8.1": { "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, @@ -1168,133 +799,62 @@ "express@4.21.2": { "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": [ - "accepts@1.3.8", + "accepts", "array-flatten", - "body-parser@1.20.3", - "content-disposition@0.5.4", + "body-parser", + "content-disposition", "content-type", - "cookie@0.7.1", - "cookie-signature@1.0.6", + "cookie", + "cookie-signature", "debug@2.6.9", "depd", "encodeurl@2.0.0", "escape-html", "etag", - "finalhandler@1.3.1", - "fresh@0.5.2", + "finalhandler", + "fresh", "http-errors", - "merge-descriptors@1.0.3", + "merge-descriptors", "methods", - "on-finished@2.4.1", + "on-finished", "parseurl", - "path-to-regexp@0.1.12", + "path-to-regexp", "proxy-addr", - "qs@6.13.0", + "qs", "range-parser", "safe-buffer", - "send@0.19.0", - "serve-static@1.16.2", + "send", + "serve-static", "setprototypeof", - "statuses@2.0.1", - "type-is@1.6.18", + "statuses", + "type-is", "utils-merge", "vary" ] }, - "express@5.1.0": { - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "dependencies": [ - "accepts@2.0.0", - "body-parser@2.2.0", - "content-disposition@1.0.0", - "content-type", - "cookie@0.7.2", - "cookie-signature@1.2.2", - "debug@4.4.1", - "encodeurl@2.0.0", - "escape-html", - "etag", - "finalhandler@2.1.0", - "fresh@2.0.0", - "http-errors", - "merge-descriptors@2.0.0", - "mime-types@3.0.1", - "on-finished@2.4.1", - "once", - "parseurl", - "proxy-addr", - "qs@6.14.0", - "range-parser", - "router", - "send@1.2.0", - "serve-static@2.2.0", - "statuses@2.0.2", - "type-is@2.0.1", - "vary" - ] - }, "fast-redact@3.5.0": { "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==" }, - "fdir@6.5.0_picomatch@4.0.3": { - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dependencies": [ - "picomatch@4.0.3" - ], - "optionalPeers": [ - "picomatch@4.0.3" - ] - }, - "figlet@1.8.2": { - "integrity": "sha512-iPCpE9B/rOcjewIzDnagP9F2eySzGeHReX8WlrZQJkqFBk2wvq8gY0c6U6Hd2y9HnX1LQcYSeP7aEHoPt6sVKQ==", - "bin": true - }, - "fill-range@7.1.1": { - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": [ - "to-regex-range" - ] - }, - "finalhandler@1.1.2": { - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": [ - "debug@2.6.9", - "encodeurl@1.0.2", - "escape-html", - "on-finished@2.3.0", - "parseurl", - "statuses@1.5.0", - "unpipe" - ] - }, "finalhandler@1.3.1": { "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": [ "debug@2.6.9", "encodeurl@2.0.0", "escape-html", - "on-finished@2.4.1", + "on-finished", "parseurl", - "statuses@2.0.1", + "statuses", "unpipe" ] }, - "finalhandler@2.1.0": { - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "form-data@4.0.4": { + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dependencies": [ - "debug@4.4.1", - "encodeurl@2.0.0", - "escape-html", - "on-finished@2.4.1", - "parseurl", - "statuses@2.0.2" - ] - }, - "find-up@4.1.0": { - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": [ - "locate-path", - "path-exists" + "asynckit", + "combined-stream", + "es-set-tostringtag", + "hasown", + "mime-types" ] }, "forwarded@0.2.0": { @@ -1303,27 +863,11 @@ "fresh@0.5.2": { "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, - "fresh@2.0.0": { - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==" - }, - "fs-extra@8.1.0": { - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": [ - "graceful-fs", - "jsonfile", - "universalify" - ] - }, - "fsevents@2.3.3": { - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "os": ["darwin"], - "scripts": true - }, "function-bind@1.1.2": { "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "get-caller-file@2.0.5": { - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "gensync@1.0.0-beta.2": { + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-intrinsic@1.3.0": { "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", @@ -1340,9 +884,6 @@ "math-intrinsics" ] }, - "get-port@5.1.1": { - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - }, "get-proto@1.0.1": { "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dependencies": [ @@ -1350,72 +891,20 @@ "es-object-atoms" ] }, - "get-stream@4.1.0": { - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": [ - "pump" - ] - }, - "get-stream@5.2.0": { - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": [ - "pump" - ] - }, - "glob-parent@5.1.2": { - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": [ - "is-glob" - ] - }, - "global-dirs@2.1.0": { - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dependencies": [ - "ini" - ] - }, "gopd@1.2.0": { "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, - "got@9.6.0": { - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": [ - "@sindresorhus/is", - "@szmarczak/http-timer", - "cacheable-request", - "decompress-response", - "duplexer3", - "get-stream@4.1.0", - "lowercase-keys@1.0.1", - "mimic-response", - "p-cancelable", - "to-readable-stream", - "url-parse-lax" - ] - }, - "graceful-fs@4.2.11": { - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "graphemer@1.4.0": { "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, - "has-ansi@2.0.0": { - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dependencies": [ - "ansi-regex@2.1.1" - ] - }, - "has-flag@3.0.0": { - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-flag@4.0.0": { - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, "has-symbols@1.1.0": { "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, - "has-yarn@2.1.0": { - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "has-tostringtag@1.0.2": { + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": [ + "has-symbols" + ] }, "hasown@2.0.2": { "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", @@ -1423,16 +912,13 @@ "function-bind" ] }, - "http-cache-semantics@4.2.0": { - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" - }, "http-errors@2.0.0": { "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": [ "depd", "inherits", "setprototypeof", - "statuses@2.0.1", + "statuses", "toidentifier" ] }, @@ -1442,212 +928,63 @@ "safer-buffer" ] }, - "iconv-lite@0.6.3": { - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": [ - "safer-buffer" - ] - }, "ieee754@1.2.1": { "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "import-lazy@2.1.0": { - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" - }, - "imurmurhash@0.1.4": { - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, "inherits@2.0.4": { "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini@1.3.7": { - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" - }, "ipaddr.js@1.9.1": { "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "is-binary-path@2.1.0": { - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": [ - "binary-extensions" - ] - }, - "is-ci@2.0.0": { - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": [ - "ci-info" - ], - "bin": true - }, - "is-extglob@2.1.1": { - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point@3.0.0": { - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob@4.0.3": { - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": [ - "is-extglob" - ] - }, - "is-installed-globally@0.3.2": { - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dependencies": [ - "global-dirs", - "is-path-inside" - ] - }, - "is-npm@4.0.0": { - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" - }, - "is-number@7.0.0": { - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-obj@2.0.0": { - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-inside@3.0.3": { - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-promise@4.0.0": { - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" - }, - "is-typedarray@1.0.0": { - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-wsl@1.1.0": { - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - }, - "is-yarn-global@0.3.0": { - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, "iso-datestring-validator@2.2.2": { "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" }, - "json-buffer@3.0.0": { - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "jsonfile@4.0.0": { - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": [ - "graceful-fs" - ] + "jsesc@3.1.0": { + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "bin": true }, - "keyv@3.1.0": { - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": [ - "json-buffer" - ] + "json5@2.2.3": { + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": true }, "ky@1.8.1": { "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==" }, - "latest-version@5.1.0": { - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dependencies": [ - "package-json" - ] - }, - "livereload-js@3.4.1": { - "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==" - }, - "livereload@0.9.3": { - "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", - "dependencies": [ - "chokidar", - "livereload-js", - "opts", - "ws@7.5.10" - ], - "bin": true - }, - "locate-path@5.0.0": { - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": [ - "p-locate" - ] - }, - "lowercase-keys@1.0.1": { - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lowercase-keys@2.0.0": { - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, "lru-cache@5.1.1": { "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dependencies": [ "yallist" ] }, - "make-dir@3.1.0": { - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": [ - "semver" - ] - }, - "marked@1.2.9": { - "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==", - "bin": true - }, "math-intrinsics@1.1.0": { "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" }, "media-typer@0.3.0": { "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, - "media-typer@1.1.0": { - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" - }, - "medium-zoom@1.1.0": { - "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==" - }, "merge-descriptors@1.0.3": { "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, - "merge-descriptors@2.0.0": { - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==" - }, "methods@1.1.2": { "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "mime-db@1.52.0": { "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, - "mime-db@1.54.0": { - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" - }, "mime-types@2.1.35": { "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": [ - "mime-db@1.52.0" - ] - }, - "mime-types@3.0.1": { - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": [ - "mime-db@1.54.0" + "mime-db" ] }, "mime@1.6.0": { "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": true }, - "mimic-response@1.0.1": { - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-indent@1.0.1": { - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "minimatch@9.0.5": { - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dependencies": [ - "brace-expansion" - ] - }, - "minimist@1.2.8": { - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, "ms@2.0.0": { "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, @@ -1667,19 +1004,9 @@ "multiformats@9.9.0": { "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" }, - "nanoid@3.3.11": { - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "bin": true - }, "negotiator@0.6.3": { "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "negotiator@1.0.0": { - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" - }, - "nested-error-stacks@2.1.1": { - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" - }, "node-fetch@2.7.0": { "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": [ @@ -1693,11 +1020,8 @@ ], "bin": true }, - "normalize-path@3.0.0": { - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-url@4.5.1": { - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + "node-releases@2.0.19": { + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "object-inspect@1.13.4": { "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" @@ -1705,106 +1029,21 @@ "on-exit-leak-free@2.1.2": { "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==" }, - "on-finished@2.3.0": { - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": [ - "ee-first" - ] - }, "on-finished@2.4.1": { "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": [ "ee-first" ] }, - "once@1.4.0": { - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": [ - "wrappy" - ] - }, - "open@6.4.0": { - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dependencies": [ - "is-wsl" - ] - }, - "opencollective-postinstall@2.0.3": { - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "bin": true - }, - "opts@2.0.2": { - "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" - }, - "p-cancelable@1.1.0": { - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-event@4.2.0": { - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dependencies": [ - "p-timeout" - ] - }, - "p-finally@1.0.0": { - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-limit@2.3.0": { - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": [ - "p-try" - ] - }, - "p-locate@4.1.0": { - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": [ - "p-limit" - ] - }, - "p-timeout@3.2.0": { - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": [ - "p-finally" - ] - }, - "p-try@2.2.0": { - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "package-json@6.5.0": { - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dependencies": [ - "got", - "registry-auth-token", - "registry-url", - "semver" - ] - }, - "parent-require@1.0.0": { - "integrity": "sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ==" - }, "parseurl@1.3.3": { "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "path-browserify@1.0.1": { - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "path-exists@4.0.0": { - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, "path-to-regexp@0.1.12": { "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, - "path-to-regexp@8.2.0": { - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==" - }, "picocolors@1.1.1": { "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, - "picomatch@2.3.1": { - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "picomatch@4.0.3": { - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" - }, "pino-abstract-transport@1.2.0": { "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", "dependencies": [ @@ -1832,24 +1071,6 @@ ], "bin": true }, - "postcss@8.5.6": { - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dependencies": [ - "nanoid", - "picocolors", - "source-map-js" - ] - }, - "prepend-http@2.0.0": { - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - }, - "prettier@3.6.2": { - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "bin": true - }, - "prismjs@1.30.0": { - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==" - }, "process-warning@3.0.0": { "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, @@ -1863,31 +1084,12 @@ "ipaddr.js" ] }, - "pump@3.0.3": { - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "dependencies": [ - "end-of-stream", - "once" - ] - }, - "pupa@2.1.1": { - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dependencies": [ - "escape-goat" - ] - }, "qs@6.13.0": { "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": [ "side-channel" ] }, - "qs@6.14.0": { - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dependencies": [ - "side-channel" - ] - }, "quick-format-unescaped@4.0.4": { "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, @@ -1905,29 +1107,10 @@ "dependencies": [ "bytes", "http-errors", - "iconv-lite@0.4.24", - "unpipe" - ] - }, - "raw-body@3.0.0": { - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "dependencies": [ - "bytes", - "http-errors", - "iconv-lite@0.6.3", + "iconv-lite", "unpipe" ] }, - "rc@1.2.8": { - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": [ - "deep-extend", - "ini", - "minimist", - "strip-json-comments" - ], - "bin": true - }, "readable-stream@4.7.0": { "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dependencies": [ @@ -1938,82 +1121,9 @@ "string_decoder" ] }, - "readdirp@3.6.0": { - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": [ - "picomatch@2.3.1" - ] - }, "real-require@0.2.0": { "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" }, - "registry-auth-token@4.2.2": { - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "dependencies": [ - "rc" - ] - }, - "registry-url@5.1.0": { - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dependencies": [ - "rc" - ] - }, - "require-directory@2.1.1": { - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-main-filename@2.0.0": { - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "resolve-pathname@3.0.0": { - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "responselike@1.0.2": { - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dependencies": [ - "lowercase-keys@1.0.1" - ] - }, - "rollup@4.46.4": { - "integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==", - "dependencies": [ - "@types/estree" - ], - "optionalDependencies": [ - "@rollup/rollup-android-arm-eabi", - "@rollup/rollup-android-arm64", - "@rollup/rollup-darwin-arm64", - "@rollup/rollup-darwin-x64", - "@rollup/rollup-freebsd-arm64", - "@rollup/rollup-freebsd-x64", - "@rollup/rollup-linux-arm-gnueabihf", - "@rollup/rollup-linux-arm-musleabihf", - "@rollup/rollup-linux-arm64-gnu", - "@rollup/rollup-linux-arm64-musl", - "@rollup/rollup-linux-loongarch64-gnu", - "@rollup/rollup-linux-ppc64-gnu", - "@rollup/rollup-linux-riscv64-gnu", - "@rollup/rollup-linux-riscv64-musl", - "@rollup/rollup-linux-s390x-gnu", - "@rollup/rollup-linux-x64-gnu", - "@rollup/rollup-linux-x64-musl", - "@rollup/rollup-win32-arm64-msvc", - "@rollup/rollup-win32-ia32-msvc", - "@rollup/rollup-win32-x64-msvc", - "fsevents" - ], - "bin": true - }, - "router@2.2.0": { - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "dependencies": [ - "debug@4.4.1", - "depd", - "is-promise", - "parseurl", - "path-to-regexp@8.2.0" - ] - }, "safe-buffer@5.2.1": { "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, @@ -2023,12 +1133,6 @@ "safer-buffer@2.1.2": { "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "semver-diff@3.1.1": { - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dependencies": [ - "semver" - ] - }, "semver@6.3.1": { "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": true @@ -2042,29 +1146,13 @@ "encodeurl@1.0.2", "escape-html", "etag", - "fresh@0.5.2", + "fresh", "http-errors", "mime", "ms@2.1.3", - "on-finished@2.4.1", + "on-finished", "range-parser", - "statuses@2.0.1" - ] - }, - "send@1.2.0": { - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "dependencies": [ - "debug@4.4.1", - "encodeurl@2.0.0", - "escape-html", - "etag", - "fresh@2.0.0", - "http-errors", - "mime-types@3.0.1", - "ms@2.1.3", - "on-finished@2.4.1", - "range-parser", - "statuses@2.0.2" + "statuses" ] }, "serve-static@1.16.2": { @@ -2073,21 +1161,9 @@ "encodeurl@2.0.0", "escape-html", "parseurl", - "send@0.19.0" - ] - }, - "serve-static@2.2.0": { - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "dependencies": [ - "encodeurl@2.0.0", - "escape-html", - "parseurl", - "send@1.2.0" + "send" ] }, - "set-blocking@2.0.0": { - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, "setprototypeof@1.2.0": { "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, @@ -2127,150 +1203,45 @@ "side-channel-weakmap" ] }, - "signal-exit@3.0.7": { - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "sonic-boom@3.8.1": { "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", "dependencies": [ "atomic-sleep" ] }, - "source-map-js@1.2.1": { - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" - }, "split2@4.2.0": { "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" }, - "statuses@1.5.0": { - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - }, "statuses@2.0.1": { "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, - "statuses@2.0.2": { - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" - }, - "string-width@4.2.3": { - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": [ - "emoji-regex", - "is-fullwidth-code-point", - "strip-ansi@6.0.1" - ] - }, "string_decoder@1.3.0": { "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": [ "safe-buffer" ] }, - "strip-ansi@3.0.1": { - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": [ - "ansi-regex@2.1.1" - ] - }, - "strip-ansi@6.0.1": { - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": [ - "ansi-regex@5.0.1" - ] - }, - "strip-indent@3.0.0": { - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": [ - "min-indent" - ] - }, - "strip-json-comments@2.0.1": { - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - }, - "supports-color@2.0.0": { - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - }, - "supports-color@5.5.0": { - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": [ - "has-flag@3.0.0" - ] - }, - "supports-color@7.2.0": { - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": [ - "has-flag@4.0.0" - ] - }, - "term-size@2.2.1": { - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - }, "thread-stream@2.7.0": { "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", "dependencies": [ "real-require" ] }, - "tinydate@1.3.0": { - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" - }, - "tinyglobby@0.2.14_picomatch@4.0.3": { - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dependencies": [ - "fdir", - "picomatch@4.0.3" - ] - }, "tlds@1.259.0": { "integrity": "sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==", "bin": true }, - "to-readable-stream@1.0.0": { - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "to-regex-range@5.0.1": { - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": [ - "is-number" - ] - }, "toidentifier@1.0.1": { "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tr46@0.0.3": { "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "ts-morph@24.0.0": { - "integrity": "sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==", - "dependencies": [ - "@ts-morph/common", - "code-block-writer" - ] - }, - "tweezer.js@1.5.0": { - "integrity": "sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ==" - }, - "type-fest@0.8.1": { - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, "type-is@1.6.18": { "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": [ - "media-typer@0.3.0", - "mime-types@2.1.35" - ] - }, - "type-is@2.0.1": { - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dependencies": [ - "content-type", - "media-typer@1.1.0", - "mime-types@3.0.1" - ] - }, - "typedarray-to-buffer@3.1.5": { - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": [ - "is-typedarray" + "media-typer", + "mime-types" ] }, "uint8arrays@3.0.0": { @@ -2288,70 +1259,24 @@ "undici-types@6.21.0": { "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, - "unique-string@2.0.0": { - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": [ - "crypto-random-string" - ] - }, - "universalify@0.1.2": { - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "update-notifier@4.1.3": { - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dependencies": [ - "boxen", - "chalk@3.0.0", - "configstore", - "has-yarn", - "import-lazy", - "is-ci", - "is-installed-globally", - "is-npm", - "is-yarn-global", - "latest-version", - "pupa", - "semver-diff", - "xdg-basedir" - ] - }, - "url-parse-lax@3.0.0": { - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "update-browserslist-db@1.1.3_browserslist@4.25.3": { + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dependencies": [ - "prepend-http" - ] + "browserslist", + "escalade", + "picocolors" + ], + "bin": true }, "utils-merge@1.0.1": { "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, - "varint@6.0.0": { - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" - }, "vary@1.1.2": { "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, - "vite@7.1.3_@types+node@22.15.15_picomatch@4.0.3": { - "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", - "dependencies": [ - "@types/node", - "esbuild", - "fdir", - "picomatch@4.0.3", - "postcss", - "rollup", - "tinyglobby" - ], - "optionalDependencies": [ - "fsevents" - ], - "optionalPeers": [ - "@types/node" - ], - "bin": true - }, "web-did-resolver@2.0.30": { "integrity": "sha512-lsv0T+y/zD1bEVkcNfcppk4hQXBlqqoXfYcRG4183Yv53FkY29HNPGErwkNI/AG+lxxsUIR77JqS6pn9uHw/Vw==", "dependencies": [ @@ -2369,94 +1294,447 @@ "webidl-conversions" ] }, - "which-module@2.0.1": { - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, - "widest-line@3.1.0": { - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": [ - "string-width" - ] - }, - "wrap-ansi@6.2.0": { - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": [ - "ansi-styles@4.3.0", - "string-width", - "strip-ansi@6.0.1" - ] - }, - "wrappy@1.0.2": { - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic@3.0.3": { - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": [ - "imurmurhash", - "is-typedarray", - "signal-exit", - "typedarray-to-buffer" - ] - }, - "ws@7.5.10": { - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==" - }, "ws@8.18.3": { "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" }, - "xdg-basedir@4.0.0": { - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - }, - "y18n@4.0.3": { - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, "yallist@3.1.1": { "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "yargonaut@1.1.4": { - "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==", - "dependencies": [ - "chalk@1.1.3", - "figlet", - "parent-require" - ] - }, - "yargs-parser@18.1.3": { - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dependencies": [ - "camelcase", - "decamelize" - ] + "zod@3.25.76": { + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==" }, - "yargs@15.4.1": { - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dependencies": [ - "cliui", - "decamelize", - "find-up", - "get-caller-file", - "require-directory", - "require-main-filename", - "set-blocking", - "string-width", - "which-module", - "y18n", - "yargs-parser" - ] - }, - "yesno@0.4.0": { - "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==" - }, - "zod@3.25.46": { - "integrity": "sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ==" + "zod@4.0.17": { + "integrity": "sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==" } }, + "redirects": { + "https://esm.sh/@alloc/quick-lru@^5.2.0?target=denonext": "https://esm.sh/@alloc/quick-lru@5.2.0?target=denonext", + "https://esm.sh/@jridgewell/gen-mapping@^0.3.2?target=denonext": "https://esm.sh/@jridgewell/gen-mapping@0.3.13?target=denonext", + "https://esm.sh/@jridgewell/resolve-uri@^3.1.0?target=denonext": "https://esm.sh/@jridgewell/resolve-uri@3.1.2?target=denonext", + "https://esm.sh/@jridgewell/sourcemap-codec@^1.4.14?target=denonext": "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext", + "https://esm.sh/@jridgewell/sourcemap-codec@^1.5.0?target=denonext": "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext", + "https://esm.sh/@jridgewell/trace-mapping@^0.3.24?target=denonext": "https://esm.sh/@jridgewell/trace-mapping@0.3.30?target=denonext", + "https://esm.sh/@nodelib/fs.stat@^2.0.2?target=denonext": "https://esm.sh/@nodelib/fs.stat@2.0.5?target=denonext", + "https://esm.sh/@nodelib/fs.walk@^1.2.3?target=denonext": "https://esm.sh/@nodelib/fs.walk@1.2.8?target=denonext", + "https://esm.sh/@tailwindcss/line-clamp?target=denonext": "https://esm.sh/@tailwindcss/line-clamp@0.4.4?target=denonext", + "https://esm.sh/autoprefixer@10": "https://esm.sh/autoprefixer@10.4.21", + "https://esm.sh/braces@^3.0.3?target=denonext": "https://esm.sh/braces@3.0.3?target=denonext", + "https://esm.sh/browserslist@^4.24.4?target=denonext": "https://esm.sh/browserslist@4.25.3?target=denonext", + "https://esm.sh/camelcase-css@^2.0.1?target=denonext": "https://esm.sh/camelcase-css@2.0.1?target=denonext", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "https://esm.sh/cssesc@^3.0.0?target=denonext": "https://esm.sh/cssesc@3.0.0?target=denonext", + "https://esm.sh/didyoumean@^1.2.2?target=denonext": "https://esm.sh/didyoumean@1.2.2?target=denonext", + "https://esm.sh/dlv@^1.1.3?target=denonext": "https://esm.sh/dlv@1.1.3?target=denonext", + "https://esm.sh/electron-to-chromium@^1.5.204/versions?target=denonext": "https://esm.sh/electron-to-chromium@1.5.209/versions?target=denonext", + "https://esm.sh/fast-glob@^3.3.2?target=denonext": "https://esm.sh/fast-glob@3.3.3?target=denonext", + "https://esm.sh/fastq@^1.6.0?target=denonext": "https://esm.sh/fastq@1.19.1?target=denonext", + "https://esm.sh/fill-range@^7.1.1?target=denonext": "https://esm.sh/fill-range@7.1.1?target=denonext", + "https://esm.sh/fraction.js@^4.3.7?target=denonext": "https://esm.sh/fraction.js@4.3.7?target=denonext", + "https://esm.sh/glob-parent@^5.1.2?target=denonext": "https://esm.sh/glob-parent@5.1.2?target=denonext", + "https://esm.sh/glob-parent@^6.0.2?target=denonext": "https://esm.sh/glob-parent@6.0.2?target=denonext", + "https://esm.sh/is-extglob@^2.1.1?target=denonext": "https://esm.sh/is-extglob@2.1.1?target=denonext", + "https://esm.sh/is-glob@^4.0.1?target=denonext": "https://esm.sh/is-glob@4.0.3?target=denonext", + "https://esm.sh/is-glob@^4.0.3?target=denonext": "https://esm.sh/is-glob@4.0.3?target=denonext", + "https://esm.sh/jiti@^1.21.6/dist/babel?target=denonext": "https://esm.sh/jiti@1.21.7/dist/babel?target=denonext", + "https://esm.sh/jiti@^1.21.6?target=denonext": "https://esm.sh/jiti@1.21.7?target=denonext", + "https://esm.sh/lines-and-columns@^1.1.6?target=denonext": "https://esm.sh/lines-and-columns@1.2.4?target=denonext", + "https://esm.sh/merge2@^1.3.0?target=denonext": "https://esm.sh/merge2@1.4.1?target=denonext", + "https://esm.sh/micromatch@^4.0.8?target=denonext": "https://esm.sh/micromatch@4.0.8?target=denonext", + "https://esm.sh/nanoid@^3.3.11/non-secure?target=denonext": "https://esm.sh/nanoid@3.3.11/non-secure?target=denonext", + "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", + "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", + "https://esm.sh/normalize-path@^3.0.0?target=denonext": "https://esm.sh/normalize-path@3.0.0?target=denonext", + "https://esm.sh/normalize-range@^0.1.2?target=denonext": "https://esm.sh/normalize-range@0.1.2?target=denonext", + "https://esm.sh/object-hash@^3.0.0?target=denonext": "https://esm.sh/object-hash@3.0.0?target=denonext", + "https://esm.sh/picocolors@^1.1.1?target=denonext": "https://esm.sh/picocolors@1.1.1?target=denonext", + "https://esm.sh/picomatch@^2.3.1/lib/utils?target=denonext": "https://esm.sh/picomatch@2.3.1/lib/utils?target=denonext", + "https://esm.sh/picomatch@^2.3.1?target=denonext": "https://esm.sh/picomatch@2.3.1?target=denonext", + "https://esm.sh/postcss-js@^4.0.1?target=denonext": "https://esm.sh/postcss-js@4.0.1?target=denonext", + "https://esm.sh/postcss-nested@^6.2.0?target=denonext": "https://esm.sh/postcss-nested@6.2.0?target=denonext", + "https://esm.sh/postcss-selector-parser@^6.1.1?target=denonext": "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext", + "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", + "https://esm.sh/postcss-selector-parser@^6.1.2?target=denonext": "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext", + "https://esm.sh/postcss-value-parser@^4.2.0?target=denonext": "https://esm.sh/postcss-value-parser@4.2.0?target=denonext", + "https://esm.sh/postcss@8": "https://esm.sh/postcss@8.5.6", + "https://esm.sh/postcss@^8.1.0?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", + "https://esm.sh/postcss@^8.2.14?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", + "https://esm.sh/postcss@^8.4.21?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", + "https://esm.sh/postcss@^8.4.47?target=denonext": "https://esm.sh/postcss@8.5.6?target=denonext", + "https://esm.sh/queue-microtask@^1.2.2?target=denonext": "https://esm.sh/queue-microtask@1.2.3?target=denonext", + "https://esm.sh/reusify@^1.0.4?target=denonext": "https://esm.sh/reusify@1.1.0?target=denonext", + "https://esm.sh/run-parallel@^1.1.9?target=denonext": "https://esm.sh/run-parallel@1.2.0?target=denonext", + "https://esm.sh/source-map-js@^1.2.1?target=denonext": "https://esm.sh/source-map-js@1.2.1?target=denonext", + "https://esm.sh/sucrase@^3.35.0?target=denonext": "https://esm.sh/sucrase@3.35.0?target=denonext", + "https://esm.sh/tailwindcss@3": "https://esm.sh/tailwindcss@3.4.17", + "https://esm.sh/tailwindcss@^4.0.0-beta.9/plugin?target=denonext": "https://esm.sh/tailwindcss@4.1.12/plugin?target=denonext", + "https://esm.sh/to-regex-range@^5.0.1?target=denonext": "https://esm.sh/to-regex-range@5.0.1?target=denonext", + "https://esm.sh/ts-interface-checker@^0.1.9?target=denonext": "https://esm.sh/ts-interface-checker@0.1.13?target=denonext", + "https://esm.sh/util-deprecate@^1.0.2?target=denonext": "https://esm.sh/util-deprecate@1.0.2?target=denonext" + }, "remote": { - "https://deno.land/x/lru@1.0.2/mod.ts": "1d44b87c4d40ff33749ae5fd85fe234344e0dace835fdfeb48413edea9461159", - "https://esm.sh/multiformats@13.1.1/bases/base58": "3ec9726ed217d96c33924e3357102a0c4ee9130f68ea362525a1a4df0ff306a4", - "https://esm.sh/multiformats@13.1.1/denonext/bases/base58.mjs": "d99841a98cda1b2685519b4914e62e61fd22dc2647a02cc6f70bee0658635302", - "https://esm.sh/multiformats@13.1.1/denonext/bytes.mjs": "d8578dcc54b8e5c345f6b3b83ed1ada64f400353fc2e7d8b15179723856d7315", - "https://esm.sh/multiformats@13.1.1/denonext/dist/src/bases/base.mjs": "a72250e285c1709319c71742654598cd0f149b03b616b268a0abd63fe396fc6c" + "https://esm.sh/@alloc/quick-lru@5.2.0/denonext/quick-lru.mjs": "18d5ab8b0ee2b8c0ba55eab65a86f126f480d5d0ca85eeefa32f9ee2e399f110", + "https://esm.sh/@alloc/quick-lru@5.2.0?target=denonext": "8506b81cc497d3d01a8b06176598c36333efab2f6773b5f681f4bfbeba33079d", + "https://esm.sh/@jridgewell/gen-mapping@0.3.13/denonext/gen-mapping.mjs": "297f733cd1f48cde4050055e4379df23b701394106946ec8692f41fd4fbc06a3", + "https://esm.sh/@jridgewell/gen-mapping@0.3.13?target=denonext": "d3eb8a4aee09dd989ae0d8121874e9ef41d7b1c2261a8809250654d040b54e83", + "https://esm.sh/@jridgewell/resolve-uri@3.1.2/denonext/resolve-uri.mjs": "2da147ad4f55ddeff542640347c789ff19db8db4ead77cce27a0c171f5f5c349", + "https://esm.sh/@jridgewell/resolve-uri@3.1.2?target=denonext": "9f734a6f626960d09b0ddb1965c08a7d5960fec667f891b4a0a55d23d0bfac51", + "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5/denonext/sourcemap-codec.mjs": "51baa3e273e77b02f11ce4ed87b71cad04b839a47ba88ab320aafd5d96780eb8", + "https://esm.sh/@jridgewell/sourcemap-codec@1.5.5?target=denonext": "92c30f6ceeb81e53eb90d72ecbe02f22216c2c8613582768f10fca120d3812ab", + "https://esm.sh/@jridgewell/trace-mapping@0.3.30/denonext/trace-mapping.mjs": "76ce197a54a9e8296ccefda22951f70f8c889c29bc6ba3ee49f11b6b51084478", + "https://esm.sh/@jridgewell/trace-mapping@0.3.30?target=denonext": "b48a6080590350f580de059f118f46810488cdceb1158dc2f53513a25451cc08", + "https://esm.sh/@nodelib/fs.scandir@2.1.5/denonext/fs.scandir.mjs": "274e376535b7b253c73f86a42b3bda10049b6fea75db4cc7b53b88db339286b9", + "https://esm.sh/@nodelib/fs.stat@2.0.5/denonext/fs.stat.mjs": "54da00841dc5e6b5581f50e299fb9fd23864c11526145c2bd581e5b40737cecf", + "https://esm.sh/@nodelib/fs.stat@2.0.5?target=denonext": "7703befd72f56697b978206aa0942d7f53aab31b0a55f1244b4fd794fc81499c", + "https://esm.sh/@nodelib/fs.walk@1.2.8/denonext/fs.walk.mjs": "ce895194f61083880e5aef2390ea4edcfc12597f308be1561a1266392f0f67eb", + "https://esm.sh/@nodelib/fs.walk@1.2.8?target=denonext": "a68ec3adf7a2812351a3ed3cb8df689acad4c7afc70fee986dcd895be3a9bbbb", + "https://esm.sh/@tailwindcss/line-clamp@0.4.4/denonext/line-clamp.mjs": "252fa8d82ac4e569e3ee8140c9ca3e216760631da1019cac48e6750feb89d8d3", + "https://esm.sh/@tailwindcss/line-clamp@0.4.4?target=denonext": "1fbc5f55d06b23c8fc79d58f00831983224f1c15b5249de3cd0a2d51fed22572", + "https://esm.sh/autoprefixer@10.4.21": "2bb14916b2e4881a32ee311720679c3e57e2d04f45ac808f4f71ae4e0923801c", + "https://esm.sh/autoprefixer@10.4.21/denonext/autoprefixer.mjs": "0d9874129a69bb35c1392f38f09e6a5a747c0eeb8c2b29e7fc8d4c1868337d92", + "https://esm.sh/braces@3.0.3/denonext/braces.mjs": "a3909393c947301c3b6348ab2378bd4f96fe001009b9beb44dcf1030dd717f47", + "https://esm.sh/braces@3.0.3?target=denonext": "58c0fed5cc432a2192aad7eeaf6e3988b96830a6c6ec0ad51dfc97578b2e8dee", + "https://esm.sh/browserslist@4.25.3/denonext/browserslist.mjs": "df95a5657a9d8a83aa8e834a82e1747b3d6e8ea1ee8d41676c665e05d803c103", + "https://esm.sh/browserslist@4.25.3?target=denonext": "31d80d40c1963ce619917d0fdb33cfad4ad4c3fb4d431522fde74a5b6dcab228", + "https://esm.sh/camelcase-css@2.0.1/denonext/camelcase-css.mjs": "1aa67ed93327d93dae71a70444bf1408a8ab3eab8bba2a710d3643b4ed415901", + "https://esm.sh/camelcase-css@2.0.1?target=denonext": "39dbe8afdc8dc441073d55efa7ce04adb31a07d8d31619fed5d31e299be32c93", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-clip-text?target=denonext": "410cd6f12e4acbbb198bcffa735247c11b114d672cd71e5c355e550394b485fc", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/background-img-opts?target=denonext": "59bc277f34121910caebe8cbebae46596ad122040cb0fc0a32d91980641cc6e5", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-image?target=denonext": "eaa8f44f48530b9f5b5bde4040ec6bedc60482324912efdbb9c7cbe23b4c40e6", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/border-radius?target=denonext": "2793c2fb8b38abcc35fd76f4151a8562b1ffbb360090f54d43ef0f69cabdd953", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/calc?target=denonext": "6810ac3373ad65b4f1df8d5f5df2ee51de539337676380505c69fdfba33b718a", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-animation?target=denonext": "cd08f5a8d560b438fc4742ccdb35babf59978cee4f0f4d0ea0ce35e532280b77", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-any-link?target=denonext": "5f170cdba78f28591bbc12bc2c353345fa9c9b99302767673b8ed84518a8f148", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-appearance?target=denonext": "c6fe9a1b6943c32b48604e96e3719ab7de884c02d94a5a86b299798a56c0ced3", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-autofill?target=denonext": "2d0fac9e144ea16f0cb22fc09748b4c1525475ed76df9069056e1016ca04694f", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-backdrop-filter?target=denonext": "1cbb5e4e0dc743651ad302d564dabadf9d7db009e8ecfc67459e68d6899276ef", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxdecorationbreak?target=denonext": "a384c16f0a989c7c11037a7beac2704b6e20880884b20e2b68ccd5caa09b1041", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-boxshadow?target=denonext": "e2d56528ee8e1fdf7b1c84f7d742411c910d8e1c5e774ca7c6f35fd4aff0185b", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-clip-path?target=denonext": "da574566b0b2e0f75e4dd20da5ace9303cc3aa783051c9a74d4990ce5783875d", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-crisp-edges?target=denonext": "d836bcdd65d84c66e14dec3713cc577416fab771869eff01d1c259d0731c60ca", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-cross-fade?target=denonext": "a1255ba2cc65f09a24d794b120e9042e53cf8182a39088f3deee1acfe4ba30e8", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-deviceadaptation?target=denonext": "5d279ede28f380339f2317871583446a89858852ff404a7c2f2681169dcdf63c", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-element-function?target=denonext": "86df7c505abc3598c283cf3bb4e1262272185d5c9c04d0bd0bc4241e744d07af", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-featurequeries?target=denonext": "cb26e40828c397b118377fe9c46d8827bb49a5c95720ed47155368f9dd9072d5", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-file-selector-button?target=denonext": "d2efe044761f04e8daa85c6931f2edb53ae8a076efee72a62bbcde98404c4546", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filter-function?target=denonext": "00dfd6452d13e7fd78eac05c4b4460d5fca56e59a16f900e6b1aaddc13316c34", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-filters?target=denonext": "c0ed7f7a41725e851ab52e6f67c7d147566d04e2b501e3dab2c8b3d2dc8f7454", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-gradients?target=denonext": "723eac5e8252240a41abde46919d8b977516f1a1ba6acb8173a49a547d5b4c47", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-grid?target=denonext": "6dda1d6ba3b27b5d73f6b924bb8a82a34f1eb109415a20ac8f3284e75fa2c075", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-hyphens?target=denonext": "1e16430cc4bf0439bf66e6e80965ad89ac2c83a4f684b959289f1cef5929f382", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-image-set?target=denonext": "c74d4ea198e1e44dbe3a4437a58dd45ad7f9c0dbc68731903643d6aff28159eb", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-logical-props?target=denonext": "e1d3d069d199e623d5cbfd5a99b74f838fa8a29b4b9535809cc3e6061678fd71", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-masks?target=denonext": "49b3001ebf77fd07798fb3d1f8bfa397926a86c15d66ec3c745e19df652b0266", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-media-resolution?target=denonext": "44c93f9033a112f25bb41028a7aea9284c25fa0950f2b14005b5649b86acc2c2", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-overscroll-behavior?target=denonext": "fa8b69dabf3ad7cca1b765ce9b8277469d12fd92bf8dad3fe537c25ba0bc46ad", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder-shown?target=denonext": "eb885bd8860c72500e69088c19d985752d839d0bccbb21f8f5a8515afdc21e2a", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-placeholder?target=denonext": "3b845f3c43353b5bf195ec1e826bf79d299535693f0deb208693160cdf87de00", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-print-color-adjust?target=denonext": "89d6b59aef0ca1baacd771a908372ef4f3f011f9e01cd6a2c01b8ae6cb9cbc91", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-read-only-write?target=denonext": "98a11fd4a5f865982e18d76eea1c3f154bf78e3474a6c3b66e794ce59b3c6fc7", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-regions?target=denonext": "ed41dcd2492b49a91a8d3b9cdb195f56c231c0feb97470954af91c1d95f5c45f", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-selection?target=denonext": "166b5f4697cba38a485f734f88fc111158b6e8d022cc95f0da91740ef7068f4a", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-shapes?target=denonext": "62eb44b6c358eeaf93589babc2f3209f224b6749d56d8d4a87cc459ad014c085", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-snappoints?target=denonext": "8ec2ae78e2fa3635526e139a5751234da704942a912e753ba4c270aa0b3ab87d", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-sticky?target=denonext": "4b0cc7d05e9ef45fbe86a3285e915af119ecee64fa11d745ca6ae66dfa416a28", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-align-last?target=denonext": "11314b76a045f01304bca81b40b61d23c93ea7f157418396775a5d350d55b6bd", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-orientation?target=denonext": "569d5ce1d38a5003618a558a522265c2b68bc6227cd15f21fe4a2a2909c85c2d", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-text-spacing?target=denonext": "4733902f15a9f42900bc1b1fc19fb468efd7ff5afe4c6cb547779b1ddaaeb2bc", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-transitions?target=denonext": "35b76706059c4ccb1e74d7274559bb8332649a0c29cd6b198ec8174ffb5cf4f1", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-width-stretch?target=denonext": "97db70aa18a7c3500e32d8caba17de65acbc533073796bf81e032995d99fb460", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css-writing-mode?target=denonext": "d8c2c92808c011fdf3948e28938f089d0656da7aef69845745e9844f2c1f5bf5", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-boxsizing?target=denonext": "8b65cba0f1db351d9f412b1a48180b7ba8e3837c2268dae681b2f957d2c76c4b", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-grab?target=denonext": "d092f9cffa858b742b93d14366f9fa0baff600b34367098da6b6b3a76efd98f4", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-cursors-newer?target=denonext": "3f6f81cf79f4f977d6bebe979392c0e19b0c4e865528d80c1869230309dba559", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/css3-tabsize?target=denonext": "bf253ccfb4095831b38de00ff84e4888b33a027ff3826bfbc44738018cbb9780", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/flexbox?target=denonext": "9a6f56410f6e89c8aa34e4df56fe24ded91f4a5df9d7164abadaef021ab26642", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-feature?target=denonext": "4b0b57ea532fa7de37e99570197c4fb4af9dec2aed32da35e8fac42645400729", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/font-kerning?target=denonext": "e5155e132f2a99faa3c7585d36581a4bd11d64204b156be806287b4d4547b262", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/fullscreen?target=denonext": "62069c47a7f1f1eb3ce947d4af0c777859bcb9524b5393669e5fc731915e58d0", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/intrinsic-width?target=denonext": "3d081e99e46156d3630ea3ee2a027dc5fca3f256b693daf160d8348720ae70b0", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-backdrop-pseudo-element?target=denonext": "c36d9ae3ea67434ef7141f9e57750b9fbef89723d9fe4a4e021bebe73ee00ed6", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate-override?target=denonext": "b5cf96212c3858b21e4345ea5164b23d54cc0b8d205b3e469ef7a5b2562f4266", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-isolate?target=denonext": "249db094ff9a765fe829d325dbca9efd06622515d6435f865bd2761040850b64", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-css-unicode-bidi-plaintext?target=denonext": "02a939cc49f116e74495813b3912600f7c1f541a71be82ab897c5eabe5910e7a", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-color?target=denonext": "364776cd45c73a6b11089ae8c8d3352fe829950c3a2dc06ed47b091b544fb146", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-line?target=denonext": "a639f52a7f11ae01303194ae61238c3f1ea228d6d4349846e9a76ef5dacb4405", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-shorthand?target=denonext": "8d27f04a38b7be26f8bdb2e2a8c4b5b9cb53adcccea404fdb538bb273ec1f3fc", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/mdn-text-decoration-style?target=denonext": "353e35877b7ec3ade3679f7101ba8b2363e6c39ea5eea8972ea1d386d6998038", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/multicolumn?target=denonext": "5c819517e4c89e4cdc626a97802996df69d2c269d01ea1ce6aca75a684448517", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/object-fit?target=denonext": "fd6fc4f7ae57de5712e5073ee6961bb57afb0c9e947b9837ea38f1842924468d", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/pointer?target=denonext": "783269befdd4f21a426a12bbb95bdc4667ecaf9e240ca8851d549e0a200494ac", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-decoration?target=denonext": "090bbeb9e7969784e4db951257aed5babaf0a4e98552877dbc9cf138917a2155", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-emphasis?target=denonext": "c21d9db705a467e4b192a86e760b2e071edababdc106db810230262a1f262522", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-overflow?target=denonext": "6c3c48dd88e402d658461c15cb1d7eb053d91f0866a08b416914e572f149d320", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/text-size-adjust?target=denonext": "f471ff7716b89dfda4b5296ef98dbc7fe58f3de3a6640f72b553c5f1944d6620", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms2d?target=denonext": "0dcb50846de392278e49bc7f6bcd2ee37d40457ae103e2e6292726f9670cdbe9", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/transforms3d?target=denonext": "a7159901d2b73dccc4caa04bd0c0b2ab171c65cf91d7d48b3596cc727fd08316", + "https://esm.sh/caniuse-lite@1.0.30001737/data/features/user-select-none?target=denonext": "1c5d634aed511a26198d2df4ab1a6ec00fbdde084617140d391c85cf5fea8b04", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/background-clip-text.mjs": "bdb85956ae42e455d4a62d5e6f250c7fb07ae615ec130480bb3c9d3eb5ec057e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/background-img-opts.mjs": "86ec64e7c7278e916e4c7b646010b5648880b33bbde7656467d1b99f91f5e8a7", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/border-image.mjs": "93cac91d3b2beba05865ad31c591d1e25fb851b59a6ec357e1fa87c6314aa0b7", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/border-radius.mjs": "381bf81a142193a85d7a0165efea15ea2910ccf0a2bd4e3a8299b286bd30bb5d", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/calc.mjs": "eab741e8c7640da2c85222bf217e8d17c2f4c8669326d8c57a319ef4b20b79ac", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-animation.mjs": "607f634b5572f61d0a68604ea809cff0f2b085a860867e331d413dbb4c2745ee", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-any-link.mjs": "e25fe5d99e87b5585531cf89b8cb79ae610b54cf071f6e177d749d2ce35daf08", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-appearance.mjs": "87f1fafa407b96e8cda675edc88dd59ad43ac1564c48dd31de9b9f1751143827", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-autofill.mjs": "697f47c9f40f8a67bc1dcd5b2e97373bb5c5c74550e4d69f8b467d510403adb1", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-backdrop-filter.mjs": "e72583cd26a0e13335d2558bc5d0b9e0c83d6a71d73d5924a165585a638211c4", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-boxdecorationbreak.mjs": "a76be63656f090096b4f57e6dae05abb807e5d8eb8315e34b74480ab606eddc6", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-boxshadow.mjs": "3a9efa13ee4413ad69f18264ab56cd673ca0a5568d854061fb996652df3eeea6", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-clip-path.mjs": "05c24465e6080304e0d71f12996d004619dd098f1009aa6a6b4558defc46ca72", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-crisp-edges.mjs": "60822ba941125c8a9727a8157c2c42a2be08babd937da435921a1a7ee511667a", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-cross-fade.mjs": "d19d727301af8c921be97d963406203addba4dae4b2fef206b54fe5bb354bf37", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-deviceadaptation.mjs": "b6281816e7439f8c01be80825e7a183991ce53e50f0a1dc4ec1a938bbedf2874", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-element-function.mjs": "13d5108f90aed723cc0ae3ea8cd3f62e3884f4a28ff43b69b3e41c62e47d480b", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-featurequeries.mjs": "7352ae67e14b4a01c1add6a640789e7349419f2ef84ee010627d12c76093099b", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-file-selector-button.mjs": "91c7b2e32daa62f755276ee2cfd4b8891b8582b554f83952b654110754882f15", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-filter-function.mjs": "70759427567e55124a2ff510aacbd533959dbe4112219da4c5374e268cedb278", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-filters.mjs": "26f815df8032a8a379d2c7e606d18e3911720c6e31c4e276377f33a5ebd476d4", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-gradients.mjs": "e87494876bc0b56246c94253b544c73e9b1dc0d8a84e028b21dd629e8c9c3948", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-grid.mjs": "4fe4b29dc613965e55e5c22e31e229dfc9fbb80150d4efc1a8abc72f5f9b8e14", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-hyphens.mjs": "edcc22d5457cf0b7b503c60e55b5b0c951a4f0c523d523fea84b8bd88d15946c", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-image-set.mjs": "e7e7703827d9423f51956269a1a6166bca4ae457c07267ae442dc05fdcf61d67", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-logical-props.mjs": "ea1c94a9d807f68b0d40e037ebf30a290efcfb373aa7dbe272352a749efdf254", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-masks.mjs": "669925ddf125deee84c2d7adb1b87837fc537269cdd3ee51683d2ec4a1a52d23", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-media-resolution.mjs": "078b7975f25d500f87ef521fa7378e52ab97955bbba5918d7a04404107afeba0", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-overscroll-behavior.mjs": "dce019ccb76022b24143c73121c3851163256b61a2c68e6149751fd7652f54fb", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-placeholder-shown.mjs": "2b5179cefe731d536a0dd8c815e05d79726a7d7cc7061305e2eb50108cbd05f7", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-placeholder.mjs": "57df9a96cb719d02395d1f9935646e0218a1ceea5b903ac9c8c6ab890a56ccbb", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-print-color-adjust.mjs": "1b187f9fd1a418111ab3a0c76e86556a520f47123f5557010294d48dd409c13e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-read-only-write.mjs": "2c1a671c7dacb1482cf9e2e0a0415338d3026bfe5e18c0058006fe98760d50d3", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-regions.mjs": "7222af95c5ccc737fa75507c9da87854d20ecb4c5077b1f629dc6fc6e47fc2a8", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-selection.mjs": "00e7b6132d470987b628b86a22f069832b31f8183f69b46d450802e47e1f74ea", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-shapes.mjs": "8e8d0689a39a85dbeabb92a90af7077bb939fd00e2817979c48bc7701f163ce0", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-snappoints.mjs": "d10e85353ec7514cf80111f85b359adcf476e3c7bb3572bf33e8829347075302", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-sticky.mjs": "6eae33fbcf2b2262f45bc5684001ed8736cf75b77e6f89870534c4deb7a61be6", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-align-last.mjs": "cd77db521f58d08224873c34a17f0c91009f0c6d09ab4568ff87cd7a564819eb", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-orientation.mjs": "ae59a4601580e55198ac6fe5fd4c947b6a9e03e37a276412a7ebe9592671c187", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-text-spacing.mjs": "6fe05cca556cc6b2f631aec00f9e55d7e69eda940cd781be84b41140f67b4ebb", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-transitions.mjs": "ca2f6ab6dac7f45a95edd0dc36d49df93b41db39afec2e476921e0649ec4daf8", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-width-stretch.mjs": "24ec65468afeb2d23746bf98d6e1057ae13712167d72c135a07333918e50fdb4", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css-writing-mode.mjs": "dc558b48d0c72a8b0af415edcb356a4b275214e91a57c2353eb4a1fa8ba116a5", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-boxsizing.mjs": "2d449b364db28710869692dd514313a198ffbda248508829c520f9f33c94142e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-cursors-grab.mjs": "8b59711eec9bf66bf1b8fc05cf90150a0faaba7041e2a9e043ddbcc12807e7dd", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-cursors-newer.mjs": "d4d1aa096ee42dd314b903f4dd57105e7a3cb35a1162f7bed622d3015d2854b4", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/css3-tabsize.mjs": "5ffa1dd48a6e51d88f2c670da06097987114f79936fe2edde5994315613494d9", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/flexbox.mjs": "9534b126de76800b2525ec28866c6305213ef913ea733455769ffbbc2cec0794", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/font-feature.mjs": "7a980d615bf64ff3745fa5cf0905e294480783ce7c6c03194007a575adc58c8e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/font-kerning.mjs": "b83954bf08d971e63fb497fa819c1adc648cdfa785837e6524697b9381ff3c1d", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/fullscreen.mjs": "5891ff5b7ec68b989b975ed6a503954dbe80948eba1a4f94bdb324fb6d100d68", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/intrinsic-width.mjs": "f20c350a8a3fe128c6199dd420567261f1b7725f034a9fd88f83c30152c53a54", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-backdrop-pseudo-element.mjs": "179776d08999cb1b2e8c4ae8e263b49763df8399d471f4909644a6e2c5d012b7", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-isolate-override.mjs": "54c2e15741d8258d040ca81fdd37bdc6f918efc32750980734885fe664a832f7", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-isolate.mjs": "24d550a606b8b4106781d8e563f05e2ada55ca7a1699be521a92a70c819666dd", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-css-unicode-bidi-plaintext.mjs": "42b7bc117feb8219fc7f7677bcb15c2efe49a3f6548611a8cca1b557c7ad0305", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-color.mjs": "fd03e9cf4d486b231246916f5085563ddc619d36bdfc2bf609a1c55571fb9c96", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-line.mjs": "db5a1a9338a7dbe3e88cd5abef6787a232e5434b64db37888d993ef6d55fa40e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-shorthand.mjs": "9b738afd412e2c34b315ed70e59a69a7ab6ea274178720bf464876fe90fc38d9", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/mdn-text-decoration-style.mjs": "a0d504013edd6c6df38fe148fc799a957bf666b34510f24a1a610374675f7b78", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/multicolumn.mjs": "bd22ce2f445294b60b1a2b5776c7dc07d571accc521b44392dfe836adefceb87", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/object-fit.mjs": "39404d9bb268bae0c0c4b3083ae0d87e78795a02b0309ef5fe083b5fe3607e7e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/pointer.mjs": "dfbdd4ee5120d8d674b2e23f260a1e0494cbab76c6b55745f7dff1e6580df69e", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-decoration.mjs": "8f6c7af83602e141080880a6654652aea09134d29db67b24f53ad599590a3f87", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-emphasis.mjs": "38205c00c7d5604831283bfe1b1a84561914dee827a61bd1d6f2bd8f4ad6c627", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-overflow.mjs": "7d011a8bc6868ecdc1fdaafa9f6f41f6e84838e406dd46bcb4a27bab7d5f2c48", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/text-size-adjust.mjs": "10c6dad907ea072ef5f0f1e33c1bde52f01671628f527cd769f499961ea6b6a2", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/transforms2d.mjs": "aa8f3bf911095e1aabd71aae3fa093e352a99e24f6f8da8821a78276d70efadb", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/transforms3d.mjs": "f54066b13aea8a87af40013481dd0967f930dae7c860168ec120b5feacab98a9", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/data/features/user-select-none.mjs": "3342ce1ea8ef2d0728d97ae94e620416ee068471998df49d9f0cb4d29323d90b", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/agents.mjs": "41dae44eebe85a886f99258ca97e9c75994f454581fdb3e35e0e2e7592fbf1cf", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/feature.mjs": "4534f80567e4d604455937c88d77df53f9b0b080d6e2c5f69bcae8e315a4a840", + "https://esm.sh/caniuse-lite@1.0.30001737/denonext/dist/unpacker/region.mjs": "736d74f47016712cdfc6422f6285c3fb661f42358d2cd8c43d97902f65bb06d7", + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/agents?target=denonext": "36927a98266c6a725d25d812fea7c8aa1cc889b85f39a6a4323d9bb62d3e6e4f", + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/feature?target=denonext": "f258799b1015a81ad8a835cd3f9300276cad296e2380d56da2df0bffd1316c6b", + "https://esm.sh/caniuse-lite@1.0.30001737/dist/unpacker/region?target=denonext": "e6aec30f45515f3e7b72249ba55d7344395f1f524179cb2dd1fc1914299bbf96", + "https://esm.sh/cssesc@3.0.0/denonext/cssesc.mjs": "c548acc0c3c5ae183898994347dc3ae57b71cea73f3df1d1643c096c84e75d65", + "https://esm.sh/cssesc@3.0.0?target=denonext": "46b22fe658d7c495f8c683cf71f88369ec073d6aef6f0f94729672791842b80c", + "https://esm.sh/didyoumean@1.2.2/denonext/didyoumean.mjs": "eaee3cce9c279c82404e5b2e2d82a6f94c439b7bff49a2643ffed05b279e1a1c", + "https://esm.sh/didyoumean@1.2.2?target=denonext": "9c183f2cb26fa0cbefe396d71a209ccd3fb48543050a839379a69fd403c3b9d6", + "https://esm.sh/dlv@1.1.3/denonext/dlv.mjs": "0223283fdcab2dae38eb62b13a9a77bc9fe6026b4b62f2a8f94cf2cd35cac82c", + "https://esm.sh/dlv@1.1.3?target=denonext": "a3e3bfa84c6b020d6b8cf93f6ac21f95ddea3c4b486e44f0af39696a6468069b", + "https://esm.sh/electron-to-chromium@1.5.209/denonext/versions.mjs": "c20511234422f9073a83e340b2e9bec41139e3ddabb1f0beae7d78f8e50bec25", + "https://esm.sh/electron-to-chromium@1.5.209/versions?target=denonext": "249492c791195b333ade914a005df4d04da72a6070149595c95dda573caa8487", + "https://esm.sh/fast-glob@3.3.3/denonext/fast-glob.mjs": "65877d873498643483aa01a3d773ebf3c5283352687e3ed451fd8e3a04473eae", + "https://esm.sh/fast-glob@3.3.3?target=denonext": "013bbfcf40dbc297f3ae57f7c85a9fa6af2029e24258e2fd69076dbf0fac7e9f", + "https://esm.sh/fastq@1.19.1/denonext/fastq.mjs": "a637080c2d32098ce78735f27be3a80a3f33d512f4e3a38b2168e6af6b7f692b", + "https://esm.sh/fastq@1.19.1?target=denonext": "232620945fc592798bd1f7de68116c945f458f9edc9125ed4ad6aa5d9dd61b88", + "https://esm.sh/fill-range@7.1.1/denonext/fill-range.mjs": "a617c46f1e0a36d1aaefdcda2790bcf05c986c5ecff805ecc615faad25ff8d02", + "https://esm.sh/fill-range@7.1.1?target=denonext": "3a1d3f856665be6a3a26a1007b55729d1eaa4142397a605b14b752458b997241", + "https://esm.sh/fraction.js@4.3.7/denonext/fraction.mjs": "df20348b8214e3af3c8ff08526c03e86fd4ecc23bc0857706278902199d11828", + "https://esm.sh/fraction.js@4.3.7?target=denonext": "9d79c0e257aa7b4cde79d03065818bcc604a3f27f33dfe53a19e2f94169db123", + "https://esm.sh/glob-parent@5.1.2/denonext/glob-parent.mjs": "656e4f93468626b7b0c388908d24132e893315386ec1e83322b74cb0dcde5d1c", + "https://esm.sh/glob-parent@5.1.2?target=denonext": "0e04ba2ebac5a052f7d5671a73c19f72407c2660bd3d5a5be577dd1ffcdfc7dc", + "https://esm.sh/glob-parent@6.0.2/denonext/glob-parent.mjs": "e629258fece4c22cb6d3a108a97c95ea8df4d735e4c79630f2a7da870bbafa23", + "https://esm.sh/glob-parent@6.0.2?target=denonext": "e30aa6b9dc68fbde857f7495eb6f05c7c41b5e5a7453be63a48cfd62269aacdb", + "https://esm.sh/is-extglob@2.1.1/denonext/is-extglob.mjs": "adbceb33b529cc88849ee39364a0eea16088cefb795221d3be31c7d6c2b7a47d", + "https://esm.sh/is-extglob@2.1.1?target=denonext": "cc21d63edf9dcc600d613af9dc30eeac8c8ee324104dab9f978fa567ec8f3ae4", + "https://esm.sh/is-glob@4.0.3/denonext/is-glob.mjs": "4555ca21a3af8a883c44c977fd1ff03be73dd7927dea188443992d01749b845d", + "https://esm.sh/is-glob@4.0.3?target=denonext": "5fef477a765ea5f14bff33ee18156cd8398e8fba5fea6fa636ebe2280349e3ce", + "https://esm.sh/jiti@1.21.7/denonext/dist/babel.mjs": "95d8f0b529fdeeb7b12eacfa93d6ad80c4548b2b407022e08608c6789b8e7d9f", + "https://esm.sh/jiti@1.21.7/denonext/jiti.mjs": "75830015c5c1f473ae2014286ed7f9f66b88404641efdfef8c18731463295c7b", + "https://esm.sh/jiti@1.21.7/dist/babel?target=denonext": "238960d30e4169f10b16b90db8b8e0e3695d3d13b589c2cbde7a70d5eb8761b2", + "https://esm.sh/jiti@1.21.7?target=denonext": "8b16749a8a79eafecd65003c0a14082274620e9521e2a0137e5825ee353898e8", + "https://esm.sh/lines-and-columns@1.2.4/denonext/lines-and-columns.mjs": "785cd1f5843f3645f9304248e4cf77987a71c6e2e7207d5b5200c9ea8ed67cdc", + "https://esm.sh/lines-and-columns@1.2.4?target=denonext": "24df63eccd321681ded34cf71de26b252de505ac6fe86fff5f5fafb810f86441", + "https://esm.sh/merge2@1.4.1/denonext/merge2.mjs": "b7e2fe0b629b75aabc963fd1e6635d6dcf59f5f2df42111df1ced9d3d064fcec", + "https://esm.sh/merge2@1.4.1?target=denonext": "a1286ee0e809c60cde57dcd9357fe3979d10abf74324608c83eb5640088c5053", + "https://esm.sh/micromatch@4.0.8/denonext/micromatch.mjs": "3663f155546be362a116c4a6bcececb00df29ed5870b308809ddb255ade2a78b", + "https://esm.sh/micromatch@4.0.8?target=denonext": "5e66db24ea49ffe179d951391cb92d5173e4911a45a6793d189a83861dae0b2e", + "https://esm.sh/nanoid@3.3.11/denonext/non-secure.mjs": "1f166118c1c4b4d4b5356ef0050fed87acf28cdb8a76813803fee72188f18b30", + "https://esm.sh/nanoid@3.3.11/non-secure?target=denonext": "ac0c34cc5f9846db51a5d868ce6ee815f831a19b1d57a1b8bae9226fc8d68dec", + "https://esm.sh/node-releases@2.0.19/data/processed/envs.json?module": "62fef61ca0cdd9c90f89cdbf60280aa1ebff036ddb965f4174e69a30e6efb196", + "https://esm.sh/node-releases@2.0.19/data/release-schedule/release-schedule.json?module": "32b509aa9392ed0744a12a011b07eb5f86d1e0b361392699a20c1b70f631d6aa", + "https://esm.sh/normalize-path@3.0.0/denonext/normalize-path.mjs": "ecabfab5ffc4bce022eed2b9c50a777cc04b44b17c477eeef8790d7602f4eb93", + "https://esm.sh/normalize-path@3.0.0?target=denonext": "4fd9f901c0c9062a18ca83ede4b9122f9b3b67ce3839a86344bb8a4d98158359", + "https://esm.sh/normalize-range@0.1.2/denonext/normalize-range.mjs": "33d8ef29dd3b379c687be93ed8df5b1a001eb0fa2b16e14aa50191377c5dc18f", + "https://esm.sh/normalize-range@0.1.2?target=denonext": "10ac8bcf3a32c783d03b72181ab7f243aa17a1f7c8a7a87655e2573f2210a380", + "https://esm.sh/object-hash@3.0.0/denonext/object-hash.mjs": "a0de679d08f71d0ef12da988f1be37af4d050e5ef55e8a35d90d7d3489b3e9da", + "https://esm.sh/object-hash@3.0.0?target=denonext": "e218e75f3503f2bdd9f9b758658a59f8ce0a76c387ec49e979b5d2039373a97d", + "https://esm.sh/picocolors@1.1.1/denonext/picocolors.mjs": "fa0033734392d8b8ad0c565338a77fa835e8b00e9ef244bf6f36570dd699ea3f", + "https://esm.sh/picocolors@1.1.1?target=denonext": "97aaf037b1af74a20fe9f9f2beabba700924823101e86bdcd3ae2c9327376f74", + "https://esm.sh/picomatch@2.3.1/denonext/lib/utils.mjs": "78f1e101706724181555315f3d8b8d0bb19c602caec154ae911e8a645d1b0b47", + "https://esm.sh/picomatch@2.3.1/denonext/picomatch.mjs": "b238291b792bb898d06a490c316425f0921457a9ecb30b12909e00b47abd32ec", + "https://esm.sh/picomatch@2.3.1/lib/utils?target=denonext": "07ebea80a4b1cbb4dc99b7ae7f6dd81321eb5e4ba254cc39fe57bd5a61082b7b", + "https://esm.sh/picomatch@2.3.1?target=denonext": "e1e7cb8fa5f73ba0cefa1e19003d8adebe6c1dda6d934d656361df441ee5f4b0", + "https://esm.sh/postcss-js@4.0.1/denonext/async.mjs": "90a7602a50926d3491ea00b07135429174b88b537929703352c8128626c3cd8d", + "https://esm.sh/postcss-js@4.0.1/denonext/objectifier.mjs": "df146288008cae08140eede11a4152b8d3db59229a69b4d068a4254bd47850c3", + "https://esm.sh/postcss-js@4.0.1/denonext/parser.mjs": "de35017f0f8fef175ebf8759539fb7d323df119dde251b09d6d1904035d9bab6", + "https://esm.sh/postcss-js@4.0.1/denonext/postcss-js.mjs": "bc84d0914b55660b458011f5451d98d8c1d6c94096a866883443285482d6a5a7", + "https://esm.sh/postcss-js@4.0.1/denonext/process-result.mjs": "96840377db6a0c0917035314f38181d3f13451100a33c71f3412d458c4a2a2b5", + "https://esm.sh/postcss-js@4.0.1/denonext/sync.mjs": "abd39a2f4a9bc2b8c9c1cceeae397cf07f2d7fc016edc0c0edeb98b112bea04c", + "https://esm.sh/postcss-js@4.0.1?target=denonext": "aba48f8bfa332370cb382dcb55fa57ba1a98952f3f8a4f74f4611b10058a7e3a", + "https://esm.sh/postcss-nested@6.2.0/denonext/postcss-nested.mjs": "2c772eb1021a4642b60b6ce56739d8727c4f5f5f3f0598b2f25c3805a50c969d", + "https://esm.sh/postcss-nested@6.2.0?target=denonext": "3f977ced1f70abf693275963f2dfef7491c1e434736b966bd194b3561f3a0ab6", + "https://esm.sh/postcss-selector-parser@6.1.2/denonext/dist/util/unesc.mjs": "737a8526d9e2c2ace54928cbb4dc6205d850bd81550069faccf6f90dc1ce4d00", + "https://esm.sh/postcss-selector-parser@6.1.2/denonext/postcss-selector-parser.mjs": "67baf457834e84c652cdc2d2073d072226ba2ae531996094a145ab99df3fb689", + "https://esm.sh/postcss-selector-parser@6.1.2/dist/util/unesc?target=denonext": "c14466135461e10e035138f0e98fe4c514ed63c922e9a782d67cf6d568e3f9e6", + "https://esm.sh/postcss-selector-parser@6.1.2?target=denonext": "2537850e0eef50737c135b11ecf6d71bcf2b19daea0a26464889e276ab46b3ec", + "https://esm.sh/postcss-value-parser@4.2.0/denonext/postcss-value-parser.mjs": "2734c0eb4eb5e6a9905fb179ed2f329a346ac076735dbf0bc889276cbfe952bc", + "https://esm.sh/postcss-value-parser@4.2.0?target=denonext": "f11ba11f7fe1a5768433011193e133bf80a697154aab65f582bf653305a571d1", + "https://esm.sh/postcss@8.5.6": "d74fb26c8e5f2355773381813a2514b103cd99d9262961b6d43148f714f343da", + "https://esm.sh/postcss@8.5.6/denonext/lib/at-rule.mjs": "4d36edc3ca42766858a10199b14ea4295b76ff96ea6b1a81aa29b7b22af7dd45", + "https://esm.sh/postcss@8.5.6/denonext/lib/comment.mjs": "c697b26e5ba49d581727081fd3de61a65df93ae69f5ab1080df36bc523a3586f", + "https://esm.sh/postcss@8.5.6/denonext/lib/container.mjs": "842ed0e58a3120a02b91bcc27e0bf8fa8e82281dc48f04f72e78add92fe215a6", + "https://esm.sh/postcss@8.5.6/denonext/lib/css-syntax-error.mjs": "cde795b92e9c71048d87b903b9565e1ede241bc81e346cb0f9171c2c7825c6a4", + "https://esm.sh/postcss@8.5.6/denonext/lib/declaration.mjs": "e2fa6617ff8a74fbcae38ab0d4f2ff5417bdb5c300d7695fcd662acdfa300cda", + "https://esm.sh/postcss@8.5.6/denonext/lib/document.mjs": "39f9f35f25834ffd4cae54678faf5020eb68a9d990c1921cb1f4a16e8d96ec81", + "https://esm.sh/postcss@8.5.6/denonext/lib/fromJSON.mjs": "9f2e849366a659250ed1bfa3c67faf2cf1c38b5b2677594002498a1ee0fc594e", + "https://esm.sh/postcss@8.5.6/denonext/lib/input.mjs": "72c43722d17c332720bdcc5ca67925f08b7260643faf33a4328bf87532e9cd4d", + "https://esm.sh/postcss@8.5.6/denonext/lib/lazy-result.mjs": "61618d7d7bc6f68ce8c7e380b15317e18036e07a29c02cdda521e632559e034a", + "https://esm.sh/postcss@8.5.6/denonext/lib/list.mjs": "4a56db4aea2f2a981afdce9455086caea47e732c678d75b85cdb76df241314e0", + "https://esm.sh/postcss@8.5.6/denonext/lib/map-generator.mjs": "d609c0e2114a55cc61969344edec0c8652fdabec840bdd481e133ab04f817866", + "https://esm.sh/postcss@8.5.6/denonext/lib/no-work-result.mjs": "582acccf822251d8d664518339e62dd8fc7105bbb4488169ffe7cf5ef99fd392", + "https://esm.sh/postcss@8.5.6/denonext/lib/node.mjs": "9cda4baedeafe756b6a10e76e906720bce6da9f9b808c74fb247d85ae6b96965", + "https://esm.sh/postcss@8.5.6/denonext/lib/parse.mjs": "9095142e0c755897446b8fd8f9ac8633599e3ba44773498206cdcd36538bfa0a", + "https://esm.sh/postcss@8.5.6/denonext/lib/parser.mjs": "5fa9d73cc19247b2abb636ff39973fdb4d06149f183dc4670aa8106594b3ae36", + "https://esm.sh/postcss@8.5.6/denonext/lib/previous-map.mjs": "18e4af2bd986f9211a4961ca81e6b6d8f1ec10adbf6df20a0cbcd6eb8c696efa", + "https://esm.sh/postcss@8.5.6/denonext/lib/processor.mjs": "bef379a8c94cdb173337b51bde0a5576db39262bf7a759c3650b4471e1fa1c96", + "https://esm.sh/postcss@8.5.6/denonext/lib/result.mjs": "c1ba7aafbb6c66f9a213beb7fcd9bbc5c9bf8cf96c8d9d52af9ae6b6a4436b51", + "https://esm.sh/postcss@8.5.6/denonext/lib/root.mjs": "b4fdc0d0380774f92382e32a39f2c0901e111c58d0309084e728ae085570fa72", + "https://esm.sh/postcss@8.5.6/denonext/lib/rule.mjs": "35cb6df8a6b88a25c2cdae3c67153e1e322f0c5b2ff0af2a4b82621801818aa9", + "https://esm.sh/postcss@8.5.6/denonext/lib/stringifier.mjs": "f7d92b74abe94e471c03e4be188b0d63f1ef59b6124be4ce1c7e6673940f8a01", + "https://esm.sh/postcss@8.5.6/denonext/lib/stringify.mjs": "0199bda16f538996aacee2bc24d6425960706407bb966700c5e90e4ea6a18144", + "https://esm.sh/postcss@8.5.6/denonext/lib/symbols.mjs": "62ba62162b364f32caa44d4025486db497a84f1956b40047b7cc3d0ca336103b", + "https://esm.sh/postcss@8.5.6/denonext/lib/terminal-highlight.mjs": "261e50c0a1061a389cdd0abc7177a411f63916657a2d2493e42d2eabf8ca66e2", + "https://esm.sh/postcss@8.5.6/denonext/lib/tokenize.mjs": "8ae691fe6c8535964103e6cbb4be154916c96a80f22746daf6c595b6186b92fa", + "https://esm.sh/postcss@8.5.6/denonext/lib/warn-once.mjs": "29cca6093c98344a9731ad66d1935501bebfd35e11cc16c47b12ebdbb2835500", + "https://esm.sh/postcss@8.5.6/denonext/lib/warning.mjs": "71973428e45464675ca11b47c2e463ea00f88ce53aa12335fce71f22b81b1002", + "https://esm.sh/postcss@8.5.6/denonext/postcss.mjs": "95c0fe458dc732c2d727eb665f410662deba1982e63d7ae31eb09475e77dd0a4", + "https://esm.sh/postcss@8.5.6?target=denonext": "d74fb26c8e5f2355773381813a2514b103cd99d9262961b6d43148f714f343da", + "https://esm.sh/queue-microtask@1.2.3/denonext/queue-microtask.mjs": "b0e153a240d836527feea7b9ecfa99fa8e5a5ef7e48b43092b7cecd8649a8712", + "https://esm.sh/queue-microtask@1.2.3?target=denonext": "fc6002fc339a8edbab36e4e6df1d245a0c3a5dc507edf4e5fb7e857f8b117aa2", + "https://esm.sh/reusify@1.1.0/denonext/reusify.mjs": "3b91b42988a3ec3984cef34b99cd5f67b4a008609c3d4fc5d35e8f2d1aab8cef", + "https://esm.sh/reusify@1.1.0?target=denonext": "aea1fd894bd8993f740cf053799f9639ee649122854c1fe4a5425d5aa2dc5e96", + "https://esm.sh/run-parallel@1.2.0/denonext/run-parallel.mjs": "77808968c9de972bb725e73559c80e64bf9524b7d2f781941115d023fd42e7b3", + "https://esm.sh/run-parallel@1.2.0?target=denonext": "2acc47cfa930a6c5e502877b2e5ee9cd2a2ec81e4fcc579f3c0bdebe32590de6", + "https://esm.sh/source-map-js@1.2.1/denonext/source-map-js.mjs": "2129223e17c258b391a47907a69c0b86d1c87cbb66eea7e9b25ff555ec0bbc7c", + "https://esm.sh/source-map-js@1.2.1?target=denonext": "33ba5cf2ee7c1fe6b63b36c31e9075e290bc5c574055acbdc48c2f24a21d2f83", + "https://esm.sh/sucrase@3.35.0/denonext/sucrase.mjs": "1d1c05878a5f0656226ee064c90845d01adf23b2bff84521480ffaad6da16d21", + "https://esm.sh/sucrase@3.35.0?target=denonext": "2e4c449f97b0c91e2800bdb6a1192f46dfaba56fa048e0c50eb8d150bd513195", + "https://esm.sh/tailwindcss@3.4.17": "0d5c6546923ca69e2d2a1cec444214f239d2df1e5f2b90708b76043809b84c12", + "https://esm.sh/tailwindcss@3.4.17/denonext/tailwindcss.mjs": "382a6a4ed82273daead6e2eb6af426822a3fbf7303387ee49db16be7699f8b45", + "https://esm.sh/tailwindcss@4.1.12/denonext/plugin.mjs": "349369852f7afd8ca09ef1682d94766d02e84bc45f927d0f02b374b20be70c9f", + "https://esm.sh/tailwindcss@4.1.12/plugin?target=denonext": "05b784ebe25c01018a0eab3fe1e1dab62bdbceb114e2371e748f967552510c00", + "https://esm.sh/to-regex-range@5.0.1/denonext/to-regex-range.mjs": "3f099b66f908b58dd6ee20afd1fed4616ea02fd0c118dc91ff1ed3e72d795bc7", + "https://esm.sh/to-regex-range@5.0.1?target=denonext": "5d6ed8b93f9fc4009378f84ade74e2681c2264b37e79f978c557037c612086ed", + "https://esm.sh/ts-interface-checker@0.1.13/denonext/ts-interface-checker.mjs": "482a9d9214862af127455b80dbe15559b107bb8283dc4b6ba10da16757b3dfe8", + "https://esm.sh/ts-interface-checker@0.1.13?target=denonext": "b1c4bedafbacf4fc6ca1b02c22601fe4e3dee3d3dc14ca3e8fb6f8656a368e72", + "https://esm.sh/util-deprecate@1.0.2/denonext/util-deprecate.mjs": "083639894972cb68837eef26346c43bdd01357977149e0a4493f76192a4008b8", + "https://esm.sh/util-deprecate@1.0.2?target=denonext": "859f4df8ba771a4c33143185d3db6a7edb824fab1ed4f9a4b96ac0e6bc3ef1a4" }, "workspace": { "dependencies": [ diff --git a/index/spacedust.ts b/index/spacedust.ts index 8fd977a..4db14db 100644 --- a/index/spacedust.ts +++ b/index/spacedust.ts @@ -41,6 +41,7 @@ export function startSpacedust(spacedustManager: SpacedustManager) { "did:plc:zzhzjga3ab5fcs2vnsv2ist3", "did:plc:jz4ibztn56hygfld6j6zjszg", ], // this would be all users in the instance to listen for all remote mentions + instant: ["true"] // future question for managing this specifically for like remote content tracking (followed users? items that appears in custom feeds?) }); } diff --git a/indexserver.ts b/indexserver.ts index 06e8e4c..afc94fe 100644 --- a/indexserver.ts +++ b/indexserver.ts @@ -1846,6 +1846,7 @@ class UserIndexServer { //"did:plc:zzhzjga3ab5fcs2vnsv2ist3", //"did:plc:jz4ibztn56hygfld6j6zjszg", ], + instant: ["true"] }); //await connectToConstellation(this.did, this.db); } diff --git a/main-index.ts b/main-index.ts index f1bdbe9..7066052 100644 --- a/main-index.ts +++ b/main-index.ts @@ -5,6 +5,8 @@ import { cachedFetch, searchParamsToJson, withCors } from "./utils/server.ts"; import { IndexServer, IndexServerConfig } from "./indexserver.ts"; import { extractDid } from "./utils/identity.ts"; import { config } from "./config.ts"; +import { compile, devWatch } from "./shared-landing/build.ts"; +let { js, html, css } = await compile("index"); // ------------------------------------------ // AppView Setup @@ -66,66 +68,107 @@ genericIndexServer.start(); // "/xrpc/party.whey.app.bsky.feed.getListFeedPartial", // ]); -Deno.serve({ port: config.indexServer.port }, async (req: Request): Promise => { - const url = new URL(req.url); - const pathname = url.pathname; - const searchParams = searchParamsToJson(url.searchParams); - - if (pathname === "/.well-known/did.json") { - return new Response( - JSON.stringify( - didDocument( - "index", - config.indexServer.did, - config.indexServer.host, - "whatever" - ) - ), - { - headers: withCors({ "Content-Type": "application/json" }), + + +//console.log("ready to serve"); +Deno.serve( + { port: config.indexServer.port }, + async (req: Request): Promise => { + const url = new URL(req.url); + const pathname = url.pathname; + const searchParams = searchParamsToJson(url.searchParams); + + if (html && js) { + if (pathname === "/" || pathname === "") { + return new Response(html, { + headers: withCors({ "content-type": "text/html; charset=utf-8" }), + }); + } + if (pathname === "/landing-index.js") { + return new Response(js, { + headers: withCors({ + "content-type": "application/javascript; charset=utf-8", + }), + }); } - ); - } - if (pathname === "/health") { - return new Response("OK", { - status: 200, - headers: withCors({ - "Content-Type": "text/plain", - }), - }); - } - if (req.method === "OPTIONS") { - return new Response(null, { - status: 204, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "GET, POST, OPTIONS", - "Access-Control-Allow-Headers": "*", - }, - }); - } - console.log(`request for "${pathname}"`); - const constellation = pathname.startsWith("/links"); - - if (constellation) { - const target = searchParams?.target as string; - const safeDid = extractDid(target); - const targetserver = genericIndexServer.handlesDid(safeDid); - if (targetserver) { - return genericIndexServer.constellationAPIHandler(req); } else { - return new Response( - JSON.stringify({ - error: "User not found", + if (pathname === "/" || pathname === "") { + return new Response(`server is compiling your webpage. loading...`, { + headers: withCors({ "content-type": "text/html; charset=utf-8" }), + }); + } + } + if (pathname === "/app.css") { + return new Response(css, { + headers: withCors({ + "content-type": "text/css; charset=utf-8", }), + }); + } + + + if (pathname === "/.well-known/did.json") { + return new Response( + JSON.stringify( + didDocument( + "index", + config.indexServer.did, + config.indexServer.host, + "whatever" + ) + ), { - status: 404, headers: withCors({ "Content-Type": "application/json" }), } ); } - } else { - // indexServerRoutes.has(pathname) - return await genericIndexServer.indexServerHandler(req); + if (pathname === "/health") { + return new Response("OK", { + status: 200, + headers: withCors({ + "Content-Type": "text/plain", + }), + }); + } + if (req.method === "OPTIONS") { + return new Response(null, { + status: 204, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "*", + }, + }); + } + console.log(`request for "${pathname}"`); + const constellation = pathname.startsWith("/links"); + + if (constellation) { + const target = searchParams?.target as string; + const safeDid = extractDid(target); + const targetserver = genericIndexServer.handlesDid(safeDid); + if (targetserver) { + return genericIndexServer.constellationAPIHandler(req); + } else { + return new Response( + JSON.stringify({ + error: "User not found", + }), + { + status: 404, + headers: withCors({ "Content-Type": "application/json" }), + } + ); + } + } else { + // indexServerRoutes.has(pathname) + return await genericIndexServer.indexServerHandler(req); + } } -}); +); + +devWatch("index", ({ js: newjs, html: newhtml, css: newcss }) => { + js = newjs; + html = newhtml; + css = newcss; +}); \ No newline at end of file diff --git a/main-view.ts b/main-view.ts index 8cfdf81..3843f4c 100644 --- a/main-view.ts +++ b/main-view.ts @@ -5,6 +5,8 @@ import { cachedFetch, searchParamsToJson, withCors } from "./utils/server.ts"; import { ViewServer, ViewServerConfig } from "./viewserver.ts"; import { extractDid } from "./utils/identity.ts"; import { config } from "./config.ts"; +import { compile, devWatch } from "./shared-landing/build.ts"; +let { js, html, css } = await compile("view"); // ------------------------------------------ // AppView Setup @@ -55,6 +57,34 @@ Deno.serve( const pathname = url.pathname; const searchParams = searchParamsToJson(url.searchParams); + if (html && js) { + if (pathname === "/" || pathname === "") { + return new Response(html, { + headers: withCors({ "content-type": "text/html; charset=utf-8" }), + }); + } + if (pathname === "/landing-view.js") { + return new Response(js, { + headers: withCors({ + "content-type": "application/javascript; charset=utf-8", + }), + }); + } + } else { + if (pathname === "/" || pathname === "") { + return new Response(`server is compiling your webpage. loading...`, { + headers: withCors({ "content-type": "text/html; charset=utf-8" }), + }); + } + } + if (pathname === "/app.css") { + return new Response(css, { + headers: withCors({ + "content-type": "text/css; charset=utf-8", + }), + }); + } + if (pathname === "/.well-known/did.json") { return new Response( JSON.stringify( @@ -92,3 +122,10 @@ Deno.serve( return await genericViewServer.viewServerHandler(req); } ); + + +devWatch("view", ({ js: newjs, html: newhtml, css: newcss }) => { + js = newjs; + html = newhtml; + css = newcss; +}); \ No newline at end of file diff --git a/readme.md b/readme.md index ecc5510..f3275bb 100644 --- a/readme.md +++ b/readme.md @@ -4,10 +4,11 @@ an attempt to make a lightweight, easily self-hostable, scoped Bluesky appview this project uses: - live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/) - backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/) -- 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/) +- 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/) +- frontend: still deno and esbuild and tailwind and react and jsx and typescript (was fun getting these to run on deno) ## Status -(as of 26 aug 2025) +(as of 27 aug 2025) currently the state of the project is: ### Index Server - Database: @@ -15,6 +16,7 @@ currently the state of the project is: - Registration: - not there yet. currently manually adding users - onboarding backfill is probably next maybe + - got a fancy new ui (not finished) - Indexing: - Jetstream: - 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,11 +36,18 @@ currently the state of the project is: - 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 ### View Server -- pratically unimplemented -- currently mostly just proxies api.bsky.app -- i havent split the DB between the Index server and View server yet -- hydration (resolving `Ref`s, handling partials) will be implemented soon i think -- 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 )) +- Registration: + - got a fancy new ui (not finished) + - no backfill yet +- Bsky API Routes: + - currently mostly just proxies api.bsky.app + - Notifications works ! thanks to spacedust + - Following feed is probably next +- Database: + - i havent split the DB between the Index server and View server yet +- Hydration (resolving `Ref`s, handling partials): + - It works! not implemented for all routes yet but it can find a route i think maybe idk + - 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 )) ## Running 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. diff --git a/shared-landing/app.css b/shared-landing/app.css new file mode 100644 index 0000000..88872fe --- /dev/null +++ b/shared-landing/app.css @@ -0,0 +1,4 @@ +/*@import "tailwindcss";*/ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/shared-landing/browser/deno.json b/shared-landing/browser/deno.json new file mode 100644 index 0000000..0e7fad0 --- /dev/null +++ b/shared-landing/browser/deno.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "lib": ["dom", "esnext"], + "strict": true + }, + "include": ["*.ts", "*.tsx"], + "lint": { + "rules": { + "tags": ["recommended"], + "exclude": ["no-window"] + } + } +} \ No newline at end of file diff --git a/shared-landing/browser/landing-index.tsx b/shared-landing/browser/landing-index.tsx new file mode 100644 index 0000000..f111277 --- /dev/null +++ b/shared-landing/browser/landing-index.tsx @@ -0,0 +1,12 @@ +import React, { useState } from "https://esm.sh/react@19.1.1"; +import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; +import * as ATPAPI from "https://esm.sh/@atproto/api"; +import { AuthProvider } from "../browser/passauthprovider.tsx"; +import { App } from "../browser/landing-shared.tsx"; + +createRoot(document.getElementById("root")!).render( + + + +); +//hydrateRoot(document.getElementById("root")!, ); diff --git a/shared-landing/browser/landing-shared.tsx b/shared-landing/browser/landing-shared.tsx new file mode 100644 index 0000000..2332c54 --- /dev/null +++ b/shared-landing/browser/landing-shared.tsx @@ -0,0 +1,213 @@ +import React, { useState } from "https://esm.sh/react@19.1.1"; +import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; +import * as ATPAPI from "https://esm.sh/@atproto/api"; +import { AuthProvider } from "./passauthprovider.tsx"; +import Login from "./passlogin.tsx"; +//import "./app.css"; + +console.log("script loaded"); + +const exampleUri = new ATPAPI.AtUri("wow"); +const dummyUsers = [ + { + pfp: "https://i.pravatar.cc/150?u=alice", + displayName: `Alice${exampleUri}`, + handle: "@alice.bsky.social", + }, + { + pfp: "https://i.pravatar.cc/150?u=bob", + displayName: "Bob The Builder", + handle: "@bob.test", + }, + { + pfp: "https://i.pravatar.cc/150?u=carol", + displayName: "Carol", + handle: "@carol.dev", + }, + { + pfp: "https://i.pravatar.cc/150?u=dave", + displayName: "Dave", + handle: "@dave.codes", + }, + { + pfp: "https://i.pravatar.cc/150?u=alice", + displayName: "Alice", + handle: "@alice.bsky.social", + }, + { + pfp: "https://i.pravatar.cc/150?u=bob", + displayName: "Bob The Builder", + handle: "@bob.test", + }, + { + pfp: "https://i.pravatar.cc/150?u=carol", + displayName: "Carol", + handle: "@carol.dev", + }, + { + pfp: "https://i.pravatar.cc/150?u=dave", + displayName: "Dave", + handle: "@dave.codes", + }, + { + pfp: "https://i.pravatar.cc/150?u=alice", + displayName: "Alice", + handle: "@alice.bsky.social", + }, + { + pfp: "https://i.pravatar.cc/150?u=bob", + displayName: "Bob The Builder", + handle: "@bob.test", + }, + { + pfp: "https://i.pravatar.cc/150?u=carol", + displayName: "Carol", + handle: "@carol.dev", + }, + { + pfp: "https://i.pravatar.cc/150?u=dave", + displayName: "Dave", + handle: "@dave.codes", + }, +]; + +function UserList({ + users, +}: { + users: { + pfp: string; + displayName: string; + handle: string; + }[]; +}) { + return ( +
+

+ Registered Users ({users.length}) +

+
+ {users.map((user) => ( +
+ {user.displayName} +
+

{user.displayName}

+

{user.handle}

+
+
+ ))} +
+
+ ); +} + +function RegistrationForm({ isLoggedIn }: { isLoggedIn: boolean }) { + return ( +
+

+ Register a new account +

+

+ You must be logged in with an invite code to register. +

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ ); +} + +export function App({ type }: { type: "index" | "view" }) { + const [loggedIn, setLoggedIn] = useState(false); + const capitaltitle = type === "index" ? "Index" : "View"; + + return ( +
+
+
+
+

+ Skylite {capitaltitle} Server +

+

+ A lightweight {capitaltitle} server for the Bluesky network.{`\n`}( + {window.location.hostname}) +

+
+ +
+ +
+
+

+ {loggedIn ? "Welcome!" : "Get Started"} +

+ + {/* */} +
+
+ +
+
+
+ ); +} \ No newline at end of file diff --git a/shared-landing/browser/landing-view.tsx b/shared-landing/browser/landing-view.tsx new file mode 100644 index 0000000..a815ba0 --- /dev/null +++ b/shared-landing/browser/landing-view.tsx @@ -0,0 +1,12 @@ +import React, { useState } from "https://esm.sh/react@19.1.1"; +import { createRoot, hydrateRoot } from "https://esm.sh/react-dom@19.1.1/client"; +import * as ATPAPI from "https://esm.sh/@atproto/api"; +import { AuthProvider } from "./passauthprovider.tsx"; +import { App } from "./landing-shared.tsx"; + +createRoot(document.getElementById("root")!).render( + + + +); +//hydrateRoot(document.getElementById("root")!, ); diff --git a/shared-landing/browser/passauthprovider.tsx b/shared-landing/browser/passauthprovider.tsx new file mode 100644 index 0000000..75a93c9 --- /dev/null +++ b/shared-landing/browser/passauthprovider.tsx @@ -0,0 +1,144 @@ +import React, { createContext, useState, useEffect, useContext } from 'https://esm.sh/react@19.1.1'; +import { AtpAgent, type AtpSessionData } from 'https://esm.sh/@atproto/api'; + +interface AuthContextValue { + agent: AtpAgent | null; + loginStatus: boolean; + login: (user: string, password: string, service?: string) => Promise; + logout: () => Promise; + loading: boolean; + authed: boolean | undefined; + } + +const AuthContext = createContext({} as AuthContextValue); + +export const AuthProvider = ({ children } : { children: React.ReactNode }) => { + const [agent, setAgent] = useState(null); + const [loginStatus, setLoginStatus] = useState(false); + const [loading, setLoading] = useState(true); + const [increment, setIncrement] = useState(0); + const [authed, setAuthed] = useState(undefined); + + useEffect(() => { + const initialize = async () => { + try { + const service = localStorage.getItem('service'); + // const user = await AsyncStorage.getItem('user'); + // const password = await AsyncStorage.getItem('password'); + const session = localStorage.getItem("sess"); + + if (service && session) { + console.log("Auto-login service is:", service); + const apiAgent = new AtpAgent({ service }); + try { + if (!apiAgent) { + console.log("Agent is null or undefined"); + return; + } + let sess: AtpSessionData = JSON.parse(session); + console.log("resuming session is:", sess); + const { data } = await apiAgent.resumeSession(sess); + console.log("!!!8!!! agent resume session") + setAgent(apiAgent); + setLoginStatus(true); + setLoading(false); + setAuthed(true); + } catch (e) { + console.log("Failed to resume session" + e); + setLoginStatus(true); + localStorage.removeItem("sess"); + localStorage.removeItem('service'); + const apiAgent = new AtpAgent({ service: 'https://api.bsky.app' }); + setAgent(apiAgent); + setLoginStatus(true); + setLoading(false); + setAuthed(false); + return; + } + } + else { + const apiAgent = new AtpAgent({ service: 'https://api.bsky.app' }); + setAgent(apiAgent); + setLoginStatus(true); + setLoading(false); + setAuthed(false); + } + } catch (e) { + console.log('Failed to auto-login:', e); + } finally { + setLoading(false); + } + }; + + initialize(); + }, [increment]); + + const login = async (user: string, password: string, service: string = 'https://bsky.social') => { + try { + let sessionthing + const apiAgent = new AtpAgent({ + service: service, + persistSession: (evt, sess) => { + sessionthing = sess; + }, + }); + await apiAgent.login({ identifier: user, password }); + console.log("!!!8!!! agent logged on") + + localStorage.setItem('service', service); + // await AsyncStorage.setItem('user', user); + // await AsyncStorage.setItem('password', password); + if (sessionthing) { + localStorage.setItem('sess', JSON.stringify(sessionthing)); + } else { + localStorage.setItem('sess', '{}'); + } + + setAgent(apiAgent); + setLoginStatus(true); + setAuthed(true); + } catch (e) { + console.error('Login failed:', e); + } + }; + + const logout = async () => { + if (!agent) { + console.error("Agent is null or undefined"); + return; + } + setLoading(true); + try { + // check if its even in async storage before removing + if (localStorage.getItem('service') && localStorage.getItem('sess')) { + localStorage.removeItem('service'); + localStorage.removeItem('sess'); + } + await agent.logout(); + console.log("!!!8!!! agent logout") + setLoginStatus(false); + setAuthed(undefined); + await agent.com.atproto.server.deleteSession(); + console.log("!!!8!!! agent deltesession") + //setAgent(null); + setIncrement(increment + 1); + } catch (e) { + console.error("Logout failed:", e); + } finally { + setLoading(false); + } + }; + + // why the hell are we doing this + /*if (loading) { + return
Laoding...ae
; + }*/ + + return ( + + {children} + + ); +}; + +export const useAuth = () => useContext(AuthContext); \ No newline at end of file diff --git a/shared-landing/browser/passlogin.tsx b/shared-landing/browser/passlogin.tsx new file mode 100644 index 0000000..5f0f48d --- /dev/null +++ b/shared-landing/browser/passlogin.tsx @@ -0,0 +1,214 @@ +import React, { useEffect, useState, useRef } from 'https://esm.sh/react@19.1.1'; +import { useAuth } from './passauthprovider.tsx'; + +interface LoginProps { + compact?: boolean; +} + +export default function Login({ compact = false }: LoginProps) { + const { loginStatus, login, logout, loading, authed } = useAuth(); + const [user, setUser] = useState(''); + const [password, setPassword] = useState(''); + const [serviceURL, setServiceURL] = useState('bsky.social'); + const [showLoginForm, setShowLoginForm] = useState(false); + const formRef = useRef(null); + + useEffect(() => { + function handleClickOutside(event: MouseEvent) { + if (formRef.current && !formRef.current.contains(event.target as Node)) { + setShowLoginForm(false); + } + } + + if (showLoginForm) { + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [showLoginForm]); + + if (loading) { + return ( +
+ Loading... +
+ ); + } + + if (compact) { + if (authed) { + return ( + + ); + } else { + return ( +
+ + {showLoginForm && ( +
+
{ + e.preventDefault(); + login(user, password, `https://${serviceURL}`); + setShowLoginForm(false); + }} + className="flex flex-col gap-3" + > +

sorry for the temporary login,
oauth will come soon enough i swear

+ setUser(e.target.value)} + 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" + autoComplete="username" + /> + setPassword(e.target.value)} + 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" + autoComplete="current-password" + /> + setServiceURL(e.target.value)} + 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" + /> + +
+
+ )} +
+ ); + } + } + + return ( +
+ {authed ? ( +
+

You are logged in!

+ +
+ ) : ( +
{ + e.preventDefault(); + login(user, password, `https://${serviceURL}`); + }} + className="flex flex-col gap-4" + > +

sorry for the temporary login,
oauth will come soon enough i swear

+ setUser(e.target.value)} + 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" + autoComplete="username" + /> + setPassword(e.target.value)} + 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" + autoComplete="current-password" + /> + setServiceURL(e.target.value)} + 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" + /> + +
+ )} +
+ ); +} + +export const ProfileThing = () => { + const { agent, loading, loginStatus, authed } = useAuth(); + const [response, setResponse] = useState(null); + + useEffect(() => { + if (loginStatus && agent && !loading && authed) { + fetchUser(); + } + }, [loginStatus, agent, loading, authed]); + + const fetchUser = async () => { + if (!agent) { + console.error("Agent is null or undefined"); + return; + } + const res = await agent.app.bsky.actor.getProfile({ + actor: agent.assertDid, + }); + setResponse(res.data); + }; + + if (!authed) { + return ( +
+ Login +
+ ); + } + + if (!response) { + return ( +
+ + Loading... +
+ ); + } + + return ( +
+ avatar +
+
{response?.displayName}
+
@{response?.handle}
+
+
+ ); +}; \ No newline at end of file diff --git a/shared-landing/build.ts b/shared-landing/build.ts new file mode 100644 index 0000000..76e152d --- /dev/null +++ b/shared-landing/build.ts @@ -0,0 +1,79 @@ +import * as esbuild from "npm:esbuild@0.20.2"; +import { ReactCompilerEsbuildPlugin } from "./reactcompileresbuild.ts"; +import { cache } from "npm:esbuild-plugin-cache"; +import tailwindconfig from "../tailwind.config.ts"; +import tailwindcss from "https://esm.sh/tailwindcss@3"; +import postcss from "https://esm.sh/postcss@8"; +import autoprefixer from "https://esm.sh/autoprefixer@10"; + +const rawcss = await Deno.readTextFile("./shared-landing/app.css"); + +// @ts-ignore its fiiine +const cssResult = await postcss([ + tailwindcss(tailwindconfig), + autoprefixer(), +]).process(rawcss, { + from: "./shared-landing/app.css", + map: false, +}); + +// helper build function +async function build(entry: string) { + const template = await Deno.readTextFile( + `./shared-landing/template-${entry}.html` + ); + const importmap = { + imports: { + "react/jsx-runtime": "https://esm.sh/react@19.1.1/jsx-runtime", + "react/compiler-runtime": "https://esm.sh/react@19.1.1/compiler-runtime", + }, + }; + + const result = await esbuild.build({ + entryPoints: [`./shared-landing/browser/landing-${entry}.tsx`], + bundle: true, + format: "esm", + jsx: "transform", + write: false, // keep in memory + loader: { ".tsx": "tsx" }, + jsxFactory: "React.createElement", + jsxFragment: "React.Fragment", + platform: "browser", + external: ["react/jsx-runtime", "react/compiler-runtime"], + plugins: [ + cache({ importmap, directory: "./cache" }), + ReactCompilerEsbuildPlugin({ + filter: /\.tsx?$/, + sourceMaps: true, + runtimeModulePath: "https://esm.sh/react@19.1.1/jsx-runtime", + }), + ], + }); + + const js = result.outputFiles[0].text; + const html = template.replace( + "", + `` + ); + + return { js, html, css: cssResult.css }; +} + +// public compile function +export async function compile(target: "index" | "view") { + return await build(target); +} + +// watch loop +export async function devWatch( + target: "index" | "view", + onBuild: (data: { js: string; html: string; css: string }) => void +) { + for await (const event of Deno.watchFs(".")) { + if (event.paths.some((p) => p.endsWith(".tsx"))) { + console.log("Rebuilding bundle…"); + const data = await compile(target); + onBuild(data); + } + } +} diff --git a/shared-landing/reactcompileresbuild.ts b/shared-landing/reactcompileresbuild.ts new file mode 100644 index 0000000..a722658 --- /dev/null +++ b/shared-landing/reactcompileresbuild.ts @@ -0,0 +1,85 @@ +//https://gist.github.com/sikanhe/f9ac68dd4c78c914c29cc98e7b875466 +import { readFileSync } from "node:fs" +import * as babel from "npm:@babel/core" +//import BabelPluginReactCompiler from "npm:babel-plugin-react-compiler" +import BabelPluginReactCompiler from "npm:babel-plugin-react-compiler" +import * as esbuild from "npm:esbuild@0.20.2"; +import QuickLRU from "npm:quick-lru" + +export function ReactCompilerEsbuildPlugin({ + filter, + sourceMaps, + runtimeModulePath, +}: { filter: RegExp; sourceMaps: boolean; runtimeModulePath: string }): esbuild.Plugin { + return { + name: "esbuild-react-compiler-plugin", + setup(build) { + // Cache previous outputs for incremental rebuilds + const buildCache = new QuickLRU({ maxSize: 1000 }) + + let timings: number[] = [] + + build.onEnd(() => { + if (timings.length < 1) return + + const totalTime = timings.reduce((sum, x) => sum + x, 0).toFixed(0) + console.log(`[⚛️ React Compiler] ${timings.length} files changed`) + console.log(`[⚛️ React Compiler] Used ${totalTime} ms`) + + timings = [] + }) + + build.onLoad({ filter, namespace: "" }, (args) => { + const contents = readFileSync(args.path, "utf8") + + const t0 = performance.now() + + if (buildCache.has(contents)) { + return { + contents: buildCache.get(contents), + loader: "js", + } + } + + const output = build.esbuild.transformSync(contents, { + loader: "tsx", + jsx: "automatic", + define: build.initialOptions.define, + target: build.initialOptions.target, + }) + + const transformResult = babel.transformSync(output.code, { + plugins: [ + // Warning: using string config here (ie 'babel-plugin-react-compiler') instead of the directly + // imported object is much slower than directly passing the plugin object because + // Babel has to resolve the plugin file from node_modules + [ + BabelPluginReactCompiler, + { + runtimeModule: runtimeModulePath, + }, + ], + ], + filename: args.path, + caller: { + name: "esbuild-react-compiler-plugin", + supportsStaticESM: true, + }, + // TODO: figure out sourcemap setting and chaining + sourceMaps, + }) + + timings.push(performance.now() - t0) + + if (transformResult?.code) { + buildCache.set(contents, transformResult?.code) + } + + return { + contents: transformResult?.code ?? undefined, + loader: "js", + } + }) + }, + } +} \ No newline at end of file diff --git a/shared-landing/template-index.html b/shared-landing/template-index.html new file mode 100644 index 0000000..7bda0f5 --- /dev/null +++ b/shared-landing/template-index.html @@ -0,0 +1,14 @@ + + + + + + Skylite Index Server + + + + + +
+ + \ No newline at end of file diff --git a/shared-landing/template-view.html b/shared-landing/template-view.html new file mode 100644 index 0000000..1c1fb5b --- /dev/null +++ b/shared-landing/template-view.html @@ -0,0 +1,14 @@ + + + + + + Skylite View Server + + + + + +
+ + \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..4d1b60c --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,11 @@ +/** @type {import('npm:tailwindcss').Config} */ +export default { + content: ["./**/*.{tsx,html}"], // make sure all your HTML/JSX paths are here + theme: { + extend: {}, + }, + plugins: [ + // add Tailwind UI plugins if you want, like forms/typography + // require("@tailwindcss/forms"), etc. + ], +}; \ No newline at end of file diff --git a/utils/server.ts b/utils/server.ts index 3afb98b..55ddab5 100644 --- a/utils/server.ts +++ b/utils/server.ts @@ -155,7 +155,9 @@ export async function getSlingshotRecord( collection: string, rkey: string ): Promise { - const url = `${config.slingshot}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; + const identity = await resolveIdentity(did); + //const url = `${config.slingshot}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; + const url = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; const result = (await cachedFetch(url)) as GetRecord; return result as GetRecord; } diff --git a/utils/sharders.ts b/utils/sharders.ts index 776ddeb..79097b4 100644 --- a/utils/sharders.ts +++ b/utils/sharders.ts @@ -242,6 +242,7 @@ interface SpacedustParams { wantedSubjects: string[]; wantedSubjectDids: string[]; wantedSources: string[]; + instant: string[]; } export class JetstreamManager extends ShardedConnectionManager { diff --git a/viewserver.ts b/viewserver.ts index a2f532e..3ba1619 100644 --- a/viewserver.ts +++ b/viewserver.ts @@ -24,6 +24,18 @@ import { CID } from "../../Library/Caches/deno/npm/registry.npmjs.org/multiforma import { uncid } from "./indexserver.ts"; import { getAuthenticatedDid } from "./utils/auth.ts"; +const temporarydevelopmentblockednotiftypes: ATPAPI.AppBskyNotificationListNotifications.Notification["reason"][] = [ + //'like', + //'repost', + //'follow', + //'mention', + //'reply', + //'quote', + //'starterpack-joined', + //'liked-via-repost', + //'repost-via-repost', + ]; + export interface ViewServerConfig { baseDbPath: string; systemDbPath: string; @@ -35,7 +47,7 @@ interface BaseRow { cid: string | null; rev: string | null; createdat: number | null; - indexedat: number; + indexedAt: number; json: string | null; } interface GeneratorRow extends BaseRow { @@ -368,11 +380,15 @@ export class ViewServer { } case "app.bsky.actor.getProfiles": { - const jsonTyped = + const jsonhalfTyped = jsonUntyped as ViewServerTypes.AppBskyActorGetProfiles.QueryParams; - + const actors = jsonhalfTyped.actors as string[] | string + const queryactors = Array.isArray(actors) + ? actors + : [actors]; + //console.log("queryactors:",jsonTyped.actors) const response: ViewServerTypes.AppBskyActorGetProfiles.OutputSchema = { - profiles: (await this.resolveGetProfiles(jsonTyped.actors)) ?? [], + profiles: (await this.resolveGetProfiles(queryactors)) ?? [], }; return new Response(JSON.stringify(response), { @@ -465,7 +481,7 @@ export class ViewServer { jsonUntyped as ViewServerTypes.AppBskyNotificationListNotifications.QueryParams; const response: ViewServerTypes.AppBskyNotificationListNotifications.OutputSchema = - await this.queryNotificationsList(authdid, jsonTyped.cursor); + await this.queryNotificationsList(authdid, jsonTyped.cursor, jsonTyped.limit); return new Response(JSON.stringify(response), { headers: withCors({ "Content-Type": "application/json" }), @@ -719,7 +735,8 @@ export class ViewServer { } async queryNotificationsList( did: string, - cursor?: string + cursor?: string, + limit?: number ): Promise { if (!this.handlesDid(did)) { return { notifications: [] }; @@ -729,7 +746,9 @@ export class ViewServer { return { notifications: [] }; } - const NOTIFS_LIMIT = 30; + const NOTIFS_LIMIT = limit ?? 30; + const offset = cursor ? parseInt(cursor, 10) : 0; + const mapReason = ( field: string ): @@ -777,81 +796,111 @@ export class ViewServer { // --- Build Query --- let query = ` - SELECT srcuri, suburi, srcfield, indexedat + SELECT srcuri, suburi, srcfield, indexedAt FROM backlink_skeleton WHERE -- Find actions targeting the user's content or profile (suburi LIKE ? OR suburi = ?) -- Exclude notifications from the user themselves AND srcuri NOT LIKE ? + ORDER BY indexedAt DESC, srcuri DESC + LIMIT ? OFFSET ? `; - const params: (string | number)[] = [`at://${did}/%`, did, `at://${did}/%`]; - - if (cursor) { - const [indexedat, srcuri] = cursor.split("::"); - if (indexedat && srcuri) { - query += ` AND (indexedat < ? OR (indexedat = ? AND srcuri < ?))`; - params.push(parseInt(indexedat, 10), parseInt(indexedat, 10), srcuri); - } - } - - query += ` ORDER BY indexedat DESC, srcuri DESC LIMIT ${NOTIFS_LIMIT}`; + const params: (string | number)[] = [ + `at://${did}/%`, + did, + `at://${did}/%`, + NOTIFS_LIMIT, + offset + ]; + + // if (cursor) { + // const [indexedAt, srcuri] = cursor.split("::"); + // if (indexedAt && srcuri && !Number.isNaN(+indexedAt)) { + // query += ` AND (indexedAt < ? OR (indexedAt = ? AND srcuri < ?))`; + // params.push(+indexedAt, +indexedAt, srcuri); + // } + // } + + // query += ` ORDER BY indexedAt DESC, srcuri DESC LIMIT ${NOTIFS_LIMIT}`; // --- Fetch and Process --- const stmt = db.prepare(query); const rows = stmt.all(...params) as { srcuri: string; - suburi: string; + suburi: string; // might be uri, might be just a did srcfield: string; - indexedat: number; + indexedAt: number; }[]; const notificationPromises = rows.map(async (row) => { - const reason = mapReason(row.srcfield); - // Skip if it's a backlink type we don't have a notification for - if (!reason) return null; - - const srcURI = new AtUri(row.srcuri); - const [author, getrecord] = await Promise.all([ - await this.resolveProfileView(srcURI.host, ""), - await getSlingshotRecord(srcURI.host, srcURI.collection, srcURI.rkey), - // TODO: shit histhi shitshit - //this.queryProfile(authorDid), - // Assumes you have a method to fetch the raw record content by URI and CID - // This would fetch the like, repost, follow, or post record itself. - //this.getRecord(row.srcuri, row.srccid), - ]); - const reasonsubject = row.suburi; - // If we can't resolve the author or the record, we can't form a valid notification - if (!author || !getrecord || !reason || !reasonsubject) return null; - - return { - uri: row.srcuri, - cid: getrecord.cid, - author: author, - reason: reason, - // The reasonSubject is the URI of the post that was liked, reposted, or replied to - reasonSubject: reasonsubject, - record: getrecord.value, - isRead: false, // Placeholder for read-state logic - indexedAt: new Date(/*row.indexedat*/).toISOString(), - // labels: [], // Placeholder for label logic - } as ATPAPI.AppBskyNotificationListNotifications.Notification; + try { + const reason = mapReason(row.srcfield); + // i have a hunch that follow notifs are crashing the client + if (!reason || temporarydevelopmentblockednotiftypes.includes(reason)) { + return null; + } + // Skip if it's a backlink type we don't have a notification for + if (!reason) return null; + + const srcURI = new AtUri(row.srcuri); + const [authorRes, recordRes] = await Promise.allSettled([ + this.resolveProfileView(srcURI.host, ""), + getSlingshotRecord(srcURI.host, srcURI.collection, srcURI.rkey), + ]); + + const author = authorRes.status === "fulfilled" ? authorRes.value : null; + const getrecord = recordRes.status === "fulfilled" ? recordRes.value : null; + + const reasonsubject = + row.suburi.startsWith("at://") ? row.suburi : `at://${row.suburi}`; + // If we can't resolve the author or the record, we can't form a valid notification + if (!author || !getrecord || !reason || !reasonsubject) return null; + + author.viewer = { + "muted": false, + "blockedBy": false, + //"following": + } // TODO: proper mutes and blocks here + + if (!getrecord?.value?.$type) getrecord.value.$type = srcURI.collection + return { + uri: row.srcuri, + cid: getrecord.cid, + author: author, + reason: reason, + // The reasonSubject is the URI of the post that was liked, reposted, or replied to + reasonSubject: reasonsubject, + record: getrecord.value, + isRead: false, // Placeholder for read-state logic + indexedAt: new Date(row.indexedAt).toISOString(), + labels: [], // Placeholder for label logic + } as ATPAPI.AppBskyNotificationListNotifications.Notification; + } catch (e) {console.log("error:",e)} }); - const notifications = (await Promise.all(notificationPromises)).filter( - (n): n is ATPAPI.AppBskyNotificationListNotifications.Notification => !!n - ); + const seen = new Set(); + const notifications = (await Promise.all(notificationPromises)) + .filter((n): n is ATPAPI.AppBskyNotificationListNotifications.Notification => { + if (!n) return false; + const key = `${n.uri}:${n.reason}:${n.reasonSubject}`; + if (seen.has(key)) return false; + seen.add(key); + return true; + }); // --- Create next cursor --- - const lastItem = rows[rows.length - 1]; - const nextCursor = lastItem - ? `${lastItem.indexedat}::${lastItem.srcuri}` - : undefined; + const nextCursor:number = Number(offset) + Number(limit ?? 0) + // const lastItem = rows[rows.length - 1]; + // const nextCursor = lastItem + // ? `${lastItem.indexedAt}::${lastItem.srcuri}` + // : undefined; return { - cursor: nextCursor, + cursor: `${nextCursor}`,//nextCursor, notifications: notifications, + priority:false, + seenAt: new Date().toISOString() }; } async resolveProfileView( @@ -1140,6 +1189,7 @@ class UserViewServer { //"did:plc:zzhzjga3ab5fcs2vnsv2ist3", //"did:plc:jz4ibztn56hygfld6j6zjszg", ], + instant: ["true"] }); //await connectToConstellation(this.did, this.db); } @@ -1176,10 +1226,11 @@ async function getServiceEndpointFromIdentity( did: string, kind: "skylite_index" | "bsky_appview" ): Promise { - const identity = await resolveIdentity(did); - const declUrl = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${identity.did}&collection=party.whey.skylite.declaration&rkey=self`; + //const identity = await resolveIdentity(did); + //const declUrl = `${identity.pds}/xrpc/com.atproto.repo.getRecord?repo=${identity.did}&collection=party.whey.skylite.declaration&rkey=self`; - const data = (await cachedFetch(declUrl)) as any; + //const data = (await cachedFetch(declUrl)) as any; + const data = await getSlingshotRecord(did,"party.whey.skylite.declaration","self") as any; //if (!resp.ok) throw new Error(`Failed to fetch declaration for ${did}`); //const data = await resp.json();