an appview-less Bluesky client using Constellation and PDS Queries reddwarf.app
frontend spa bluesky reddwarf microcosm

questionable perf boost for navigation to home page

rimar1337 5f459ed9 55f010da

Changed files
+2550 -109
src
+2442 -1
package-lock.json
··· 16 16 "@tanstack/react-router": "^1.130.2", 17 17 "@tanstack/react-router-devtools": "^1.131.5", 18 18 "@tanstack/router-plugin": "^1.121.2", 19 + "i": "^0.3.7", 19 20 "idb-keyval": "^6.2.2", 20 21 "jotai": "^2.13.1", 22 + "npm": "^11.6.2", 21 23 "react": "^19.0.0", 22 24 "react-dom": "^19.0.0", 23 25 "react-player": "^3.3.2", 24 - "tailwindcss": "^4.0.6" 26 + "tailwindcss": "^4.0.6", 27 + "tanstack-router-keepalive": "^1.0.0" 25 28 }, 26 29 "devDependencies": { 27 30 "@eslint-react/eslint-plugin": "^2.2.1", ··· 5036 5039 "node": ">=0.10.0" 5037 5040 } 5038 5041 }, 5042 + "node_modules/eventemitter3": { 5043 + "version": "5.0.1", 5044 + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 5045 + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 5046 + "license": "MIT" 5047 + }, 5039 5048 "node_modules/expect-type": { 5040 5049 "version": "1.2.2", 5041 5050 "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", ··· 5582 5591 }, 5583 5592 "engines": { 5584 5593 "node": ">= 14" 5594 + } 5595 + }, 5596 + "node_modules/i": { 5597 + "version": "0.3.7", 5598 + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", 5599 + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", 5600 + "engines": { 5601 + "node": ">=0.4" 5585 5602 } 5586 5603 }, 5587 5604 "node_modules/iconv-lite": { ··· 6639 6656 "url": "https://github.com/sponsors/sindresorhus" 6640 6657 } 6641 6658 }, 6659 + "node_modules/lodash.clonedeep": { 6660 + "version": "4.5.0", 6661 + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 6662 + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", 6663 + "license": "MIT" 6664 + }, 6642 6665 "node_modules/lodash.merge": { 6643 6666 "version": "4.6.2", 6644 6667 "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", ··· 6857 6880 "node": ">=0.10.0" 6858 6881 } 6859 6882 }, 6883 + "node_modules/npm": { 6884 + "version": "11.6.2", 6885 + "resolved": "https://registry.npmjs.org/npm/-/npm-11.6.2.tgz", 6886 + "integrity": "sha512-7iKzNfy8lWYs3zq4oFPa8EXZz5xt9gQNKJZau3B1ErLBb6bF7sBJ00x09485DOvRT2l5Gerbl3VlZNT57MxJVA==", 6887 + "bundleDependencies": [ 6888 + "@isaacs/string-locale-compare", 6889 + "@npmcli/arborist", 6890 + "@npmcli/config", 6891 + "@npmcli/fs", 6892 + "@npmcli/map-workspaces", 6893 + "@npmcli/package-json", 6894 + "@npmcli/promise-spawn", 6895 + "@npmcli/redact", 6896 + "@npmcli/run-script", 6897 + "@sigstore/tuf", 6898 + "abbrev", 6899 + "archy", 6900 + "cacache", 6901 + "chalk", 6902 + "ci-info", 6903 + "cli-columns", 6904 + "fastest-levenshtein", 6905 + "fs-minipass", 6906 + "glob", 6907 + "graceful-fs", 6908 + "hosted-git-info", 6909 + "ini", 6910 + "init-package-json", 6911 + "is-cidr", 6912 + "json-parse-even-better-errors", 6913 + "libnpmaccess", 6914 + "libnpmdiff", 6915 + "libnpmexec", 6916 + "libnpmfund", 6917 + "libnpmorg", 6918 + "libnpmpack", 6919 + "libnpmpublish", 6920 + "libnpmsearch", 6921 + "libnpmteam", 6922 + "libnpmversion", 6923 + "make-fetch-happen", 6924 + "minimatch", 6925 + "minipass", 6926 + "minipass-pipeline", 6927 + "ms", 6928 + "node-gyp", 6929 + "nopt", 6930 + "npm-audit-report", 6931 + "npm-install-checks", 6932 + "npm-package-arg", 6933 + "npm-pick-manifest", 6934 + "npm-profile", 6935 + "npm-registry-fetch", 6936 + "npm-user-validate", 6937 + "p-map", 6938 + "pacote", 6939 + "parse-conflict-json", 6940 + "proc-log", 6941 + "qrcode-terminal", 6942 + "read", 6943 + "semver", 6944 + "spdx-expression-parse", 6945 + "ssri", 6946 + "supports-color", 6947 + "tar", 6948 + "text-table", 6949 + "tiny-relative-date", 6950 + "treeverse", 6951 + "validate-npm-package-name", 6952 + "which" 6953 + ], 6954 + "license": "Artistic-2.0", 6955 + "workspaces": [ 6956 + "docs", 6957 + "smoke-tests", 6958 + "mock-globals", 6959 + "mock-registry", 6960 + "workspaces/*" 6961 + ], 6962 + "dependencies": { 6963 + "@isaacs/string-locale-compare": "^1.1.0", 6964 + "@npmcli/arborist": "^9.1.6", 6965 + "@npmcli/config": "^10.4.2", 6966 + "@npmcli/fs": "^4.0.0", 6967 + "@npmcli/map-workspaces": "^5.0.0", 6968 + "@npmcli/package-json": "^7.0.1", 6969 + "@npmcli/promise-spawn": "^8.0.3", 6970 + "@npmcli/redact": "^3.2.2", 6971 + "@npmcli/run-script": "^10.0.0", 6972 + "@sigstore/tuf": "^4.0.0", 6973 + "abbrev": "^3.0.1", 6974 + "archy": "~1.0.0", 6975 + "cacache": "^20.0.1", 6976 + "chalk": "^5.6.2", 6977 + "ci-info": "^4.3.1", 6978 + "cli-columns": "^4.0.0", 6979 + "fastest-levenshtein": "^1.0.16", 6980 + "fs-minipass": "^3.0.3", 6981 + "glob": "^11.0.3", 6982 + "graceful-fs": "^4.2.11", 6983 + "hosted-git-info": "^9.0.2", 6984 + "ini": "^5.0.0", 6985 + "init-package-json": "^8.2.2", 6986 + "is-cidr": "^6.0.1", 6987 + "json-parse-even-better-errors": "^4.0.0", 6988 + "libnpmaccess": "^10.0.3", 6989 + "libnpmdiff": "^8.0.9", 6990 + "libnpmexec": "^10.1.8", 6991 + "libnpmfund": "^7.0.9", 6992 + "libnpmorg": "^8.0.1", 6993 + "libnpmpack": "^9.0.9", 6994 + "libnpmpublish": "^11.1.2", 6995 + "libnpmsearch": "^9.0.1", 6996 + "libnpmteam": "^8.0.2", 6997 + "libnpmversion": "^8.0.2", 6998 + "make-fetch-happen": "^15.0.2", 6999 + "minimatch": "^10.0.3", 7000 + "minipass": "^7.1.1", 7001 + "minipass-pipeline": "^1.2.4", 7002 + "ms": "^2.1.2", 7003 + "node-gyp": "^11.4.2", 7004 + "nopt": "^8.1.0", 7005 + "npm-audit-report": "^6.0.0", 7006 + "npm-install-checks": "^7.1.2", 7007 + "npm-package-arg": "^13.0.1", 7008 + "npm-pick-manifest": "^11.0.1", 7009 + "npm-profile": "^12.0.0", 7010 + "npm-registry-fetch": "^19.0.0", 7011 + "npm-user-validate": "^3.0.0", 7012 + "p-map": "^7.0.3", 7013 + "pacote": "^21.0.3", 7014 + "parse-conflict-json": "^4.0.0", 7015 + "proc-log": "^5.0.0", 7016 + "qrcode-terminal": "^0.12.0", 7017 + "read": "^4.1.0", 7018 + "semver": "^7.7.3", 7019 + "spdx-expression-parse": "^4.0.0", 7020 + "ssri": "^12.0.0", 7021 + "supports-color": "^10.2.2", 7022 + "tar": "^7.5.1", 7023 + "text-table": "~0.2.0", 7024 + "tiny-relative-date": "^2.0.2", 7025 + "treeverse": "^3.0.0", 7026 + "validate-npm-package-name": "^6.0.2", 7027 + "which": "^5.0.0" 7028 + }, 7029 + "bin": { 7030 + "npm": "bin/npm-cli.js", 7031 + "npx": "bin/npx-cli.js" 7032 + }, 7033 + "engines": { 7034 + "node": "^20.17.0 || >=22.9.0" 7035 + } 7036 + }, 7037 + "node_modules/npm/node_modules/@isaacs/balanced-match": { 7038 + "version": "4.0.1", 7039 + "inBundle": true, 7040 + "license": "MIT", 7041 + "engines": { 7042 + "node": "20 || >=22" 7043 + } 7044 + }, 7045 + "node_modules/npm/node_modules/@isaacs/brace-expansion": { 7046 + "version": "5.0.0", 7047 + "inBundle": true, 7048 + "license": "MIT", 7049 + "dependencies": { 7050 + "@isaacs/balanced-match": "^4.0.1" 7051 + }, 7052 + "engines": { 7053 + "node": "20 || >=22" 7054 + } 7055 + }, 7056 + "node_modules/npm/node_modules/@isaacs/cliui": { 7057 + "version": "8.0.2", 7058 + "inBundle": true, 7059 + "license": "ISC", 7060 + "dependencies": { 7061 + "string-width": "^5.1.2", 7062 + "string-width-cjs": "npm:string-width@^4.2.0", 7063 + "strip-ansi": "^7.0.1", 7064 + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 7065 + "wrap-ansi": "^8.1.0", 7066 + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 7067 + }, 7068 + "engines": { 7069 + "node": ">=12" 7070 + } 7071 + }, 7072 + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { 7073 + "version": "6.2.2", 7074 + "inBundle": true, 7075 + "license": "MIT", 7076 + "engines": { 7077 + "node": ">=12" 7078 + }, 7079 + "funding": { 7080 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 7081 + } 7082 + }, 7083 + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { 7084 + "version": "9.2.2", 7085 + "inBundle": true, 7086 + "license": "MIT" 7087 + }, 7088 + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { 7089 + "version": "5.1.2", 7090 + "inBundle": true, 7091 + "license": "MIT", 7092 + "dependencies": { 7093 + "eastasianwidth": "^0.2.0", 7094 + "emoji-regex": "^9.2.2", 7095 + "strip-ansi": "^7.0.1" 7096 + }, 7097 + "engines": { 7098 + "node": ">=12" 7099 + }, 7100 + "funding": { 7101 + "url": "https://github.com/sponsors/sindresorhus" 7102 + } 7103 + }, 7104 + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { 7105 + "version": "7.1.2", 7106 + "inBundle": true, 7107 + "license": "MIT", 7108 + "dependencies": { 7109 + "ansi-regex": "^6.0.1" 7110 + }, 7111 + "engines": { 7112 + "node": ">=12" 7113 + }, 7114 + "funding": { 7115 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 7116 + } 7117 + }, 7118 + "node_modules/npm/node_modules/@isaacs/fs-minipass": { 7119 + "version": "4.0.1", 7120 + "inBundle": true, 7121 + "license": "ISC", 7122 + "dependencies": { 7123 + "minipass": "^7.0.4" 7124 + }, 7125 + "engines": { 7126 + "node": ">=18.0.0" 7127 + } 7128 + }, 7129 + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { 7130 + "version": "1.1.0", 7131 + "inBundle": true, 7132 + "license": "ISC" 7133 + }, 7134 + "node_modules/npm/node_modules/@npmcli/agent": { 7135 + "version": "4.0.0", 7136 + "inBundle": true, 7137 + "license": "ISC", 7138 + "dependencies": { 7139 + "agent-base": "^7.1.0", 7140 + "http-proxy-agent": "^7.0.0", 7141 + "https-proxy-agent": "^7.0.1", 7142 + "lru-cache": "^11.2.1", 7143 + "socks-proxy-agent": "^8.0.3" 7144 + }, 7145 + "engines": { 7146 + "node": "^20.17.0 || >=22.9.0" 7147 + } 7148 + }, 7149 + "node_modules/npm/node_modules/@npmcli/arborist": { 7150 + "version": "9.1.6", 7151 + "inBundle": true, 7152 + "license": "ISC", 7153 + "dependencies": { 7154 + "@isaacs/string-locale-compare": "^1.1.0", 7155 + "@npmcli/fs": "^4.0.0", 7156 + "@npmcli/installed-package-contents": "^3.0.0", 7157 + "@npmcli/map-workspaces": "^5.0.0", 7158 + "@npmcli/metavuln-calculator": "^9.0.2", 7159 + "@npmcli/name-from-folder": "^3.0.0", 7160 + "@npmcli/node-gyp": "^4.0.0", 7161 + "@npmcli/package-json": "^7.0.0", 7162 + "@npmcli/query": "^4.0.0", 7163 + "@npmcli/redact": "^3.0.0", 7164 + "@npmcli/run-script": "^10.0.0", 7165 + "bin-links": "^5.0.0", 7166 + "cacache": "^20.0.1", 7167 + "common-ancestor-path": "^1.0.1", 7168 + "hosted-git-info": "^9.0.0", 7169 + "json-stringify-nice": "^1.1.4", 7170 + "lru-cache": "^11.2.1", 7171 + "minimatch": "^10.0.3", 7172 + "nopt": "^8.0.0", 7173 + "npm-install-checks": "^7.1.0", 7174 + "npm-package-arg": "^13.0.0", 7175 + "npm-pick-manifest": "^11.0.1", 7176 + "npm-registry-fetch": "^19.0.0", 7177 + "pacote": "^21.0.2", 7178 + "parse-conflict-json": "^4.0.0", 7179 + "proc-log": "^5.0.0", 7180 + "proggy": "^3.0.0", 7181 + "promise-all-reject-late": "^1.0.0", 7182 + "promise-call-limit": "^3.0.1", 7183 + "semver": "^7.3.7", 7184 + "ssri": "^12.0.0", 7185 + "treeverse": "^3.0.0", 7186 + "walk-up-path": "^4.0.0" 7187 + }, 7188 + "bin": { 7189 + "arborist": "bin/index.js" 7190 + }, 7191 + "engines": { 7192 + "node": "^20.17.0 || >=22.9.0" 7193 + } 7194 + }, 7195 + "node_modules/npm/node_modules/@npmcli/config": { 7196 + "version": "10.4.2", 7197 + "inBundle": true, 7198 + "license": "ISC", 7199 + "dependencies": { 7200 + "@npmcli/map-workspaces": "^5.0.0", 7201 + "@npmcli/package-json": "^7.0.0", 7202 + "ci-info": "^4.0.0", 7203 + "ini": "^5.0.0", 7204 + "nopt": "^8.1.0", 7205 + "proc-log": "^5.0.0", 7206 + "semver": "^7.3.5", 7207 + "walk-up-path": "^4.0.0" 7208 + }, 7209 + "engines": { 7210 + "node": "^20.17.0 || >=22.9.0" 7211 + } 7212 + }, 7213 + "node_modules/npm/node_modules/@npmcli/fs": { 7214 + "version": "4.0.0", 7215 + "inBundle": true, 7216 + "license": "ISC", 7217 + "dependencies": { 7218 + "semver": "^7.3.5" 7219 + }, 7220 + "engines": { 7221 + "node": "^18.17.0 || >=20.5.0" 7222 + } 7223 + }, 7224 + "node_modules/npm/node_modules/@npmcli/git": { 7225 + "version": "7.0.0", 7226 + "inBundle": true, 7227 + "license": "ISC", 7228 + "dependencies": { 7229 + "@npmcli/promise-spawn": "^8.0.0", 7230 + "ini": "^5.0.0", 7231 + "lru-cache": "^11.2.1", 7232 + "npm-pick-manifest": "^11.0.1", 7233 + "proc-log": "^5.0.0", 7234 + "promise-retry": "^2.0.1", 7235 + "semver": "^7.3.5", 7236 + "which": "^5.0.0" 7237 + }, 7238 + "engines": { 7239 + "node": "^20.17.0 || >=22.9.0" 7240 + } 7241 + }, 7242 + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { 7243 + "version": "3.0.0", 7244 + "inBundle": true, 7245 + "license": "ISC", 7246 + "dependencies": { 7247 + "npm-bundled": "^4.0.0", 7248 + "npm-normalize-package-bin": "^4.0.0" 7249 + }, 7250 + "bin": { 7251 + "installed-package-contents": "bin/index.js" 7252 + }, 7253 + "engines": { 7254 + "node": "^18.17.0 || >=20.5.0" 7255 + } 7256 + }, 7257 + "node_modules/npm/node_modules/@npmcli/map-workspaces": { 7258 + "version": "5.0.0", 7259 + "inBundle": true, 7260 + "license": "ISC", 7261 + "dependencies": { 7262 + "@npmcli/name-from-folder": "^3.0.0", 7263 + "@npmcli/package-json": "^7.0.0", 7264 + "glob": "^11.0.3", 7265 + "minimatch": "^10.0.3" 7266 + }, 7267 + "engines": { 7268 + "node": "^20.17.0 || >=22.9.0" 7269 + } 7270 + }, 7271 + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { 7272 + "version": "9.0.2", 7273 + "inBundle": true, 7274 + "license": "ISC", 7275 + "dependencies": { 7276 + "cacache": "^20.0.0", 7277 + "json-parse-even-better-errors": "^4.0.0", 7278 + "pacote": "^21.0.0", 7279 + "proc-log": "^5.0.0", 7280 + "semver": "^7.3.5" 7281 + }, 7282 + "engines": { 7283 + "node": "^20.17.0 || >=22.9.0" 7284 + } 7285 + }, 7286 + "node_modules/npm/node_modules/@npmcli/name-from-folder": { 7287 + "version": "3.0.0", 7288 + "inBundle": true, 7289 + "license": "ISC", 7290 + "engines": { 7291 + "node": "^18.17.0 || >=20.5.0" 7292 + } 7293 + }, 7294 + "node_modules/npm/node_modules/@npmcli/node-gyp": { 7295 + "version": "4.0.0", 7296 + "inBundle": true, 7297 + "license": "ISC", 7298 + "engines": { 7299 + "node": "^18.17.0 || >=20.5.0" 7300 + } 7301 + }, 7302 + "node_modules/npm/node_modules/@npmcli/package-json": { 7303 + "version": "7.0.1", 7304 + "inBundle": true, 7305 + "license": "ISC", 7306 + "dependencies": { 7307 + "@npmcli/git": "^7.0.0", 7308 + "glob": "^11.0.3", 7309 + "hosted-git-info": "^9.0.0", 7310 + "json-parse-even-better-errors": "^4.0.0", 7311 + "proc-log": "^5.0.0", 7312 + "semver": "^7.5.3", 7313 + "validate-npm-package-license": "^3.0.4" 7314 + }, 7315 + "engines": { 7316 + "node": "^20.17.0 || >=22.9.0" 7317 + } 7318 + }, 7319 + "node_modules/npm/node_modules/@npmcli/promise-spawn": { 7320 + "version": "8.0.3", 7321 + "inBundle": true, 7322 + "license": "ISC", 7323 + "dependencies": { 7324 + "which": "^5.0.0" 7325 + }, 7326 + "engines": { 7327 + "node": "^18.17.0 || >=20.5.0" 7328 + } 7329 + }, 7330 + "node_modules/npm/node_modules/@npmcli/query": { 7331 + "version": "4.0.1", 7332 + "inBundle": true, 7333 + "license": "ISC", 7334 + "dependencies": { 7335 + "postcss-selector-parser": "^7.0.0" 7336 + }, 7337 + "engines": { 7338 + "node": "^18.17.0 || >=20.5.0" 7339 + } 7340 + }, 7341 + "node_modules/npm/node_modules/@npmcli/redact": { 7342 + "version": "3.2.2", 7343 + "inBundle": true, 7344 + "license": "ISC", 7345 + "engines": { 7346 + "node": "^18.17.0 || >=20.5.0" 7347 + } 7348 + }, 7349 + "node_modules/npm/node_modules/@npmcli/run-script": { 7350 + "version": "10.0.0", 7351 + "inBundle": true, 7352 + "license": "ISC", 7353 + "dependencies": { 7354 + "@npmcli/node-gyp": "^4.0.0", 7355 + "@npmcli/package-json": "^7.0.0", 7356 + "@npmcli/promise-spawn": "^8.0.0", 7357 + "node-gyp": "^11.0.0", 7358 + "proc-log": "^5.0.0", 7359 + "which": "^5.0.0" 7360 + }, 7361 + "engines": { 7362 + "node": "^20.17.0 || >=22.9.0" 7363 + } 7364 + }, 7365 + "node_modules/npm/node_modules/@pkgjs/parseargs": { 7366 + "version": "0.11.0", 7367 + "inBundle": true, 7368 + "license": "MIT", 7369 + "optional": true, 7370 + "engines": { 7371 + "node": ">=14" 7372 + } 7373 + }, 7374 + "node_modules/npm/node_modules/@sigstore/bundle": { 7375 + "version": "4.0.0", 7376 + "inBundle": true, 7377 + "license": "Apache-2.0", 7378 + "dependencies": { 7379 + "@sigstore/protobuf-specs": "^0.5.0" 7380 + }, 7381 + "engines": { 7382 + "node": "^20.17.0 || >=22.9.0" 7383 + } 7384 + }, 7385 + "node_modules/npm/node_modules/@sigstore/core": { 7386 + "version": "3.0.0", 7387 + "inBundle": true, 7388 + "license": "Apache-2.0", 7389 + "engines": { 7390 + "node": "^20.17.0 || >=22.9.0" 7391 + } 7392 + }, 7393 + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { 7394 + "version": "0.5.0", 7395 + "inBundle": true, 7396 + "license": "Apache-2.0", 7397 + "engines": { 7398 + "node": "^18.17.0 || >=20.5.0" 7399 + } 7400 + }, 7401 + "node_modules/npm/node_modules/@sigstore/sign": { 7402 + "version": "4.0.1", 7403 + "inBundle": true, 7404 + "license": "Apache-2.0", 7405 + "dependencies": { 7406 + "@sigstore/bundle": "^4.0.0", 7407 + "@sigstore/core": "^3.0.0", 7408 + "@sigstore/protobuf-specs": "^0.5.0", 7409 + "make-fetch-happen": "^15.0.2", 7410 + "proc-log": "^5.0.0", 7411 + "promise-retry": "^2.0.1" 7412 + }, 7413 + "engines": { 7414 + "node": "^20.17.0 || >=22.9.0" 7415 + } 7416 + }, 7417 + "node_modules/npm/node_modules/@sigstore/tuf": { 7418 + "version": "4.0.0", 7419 + "inBundle": true, 7420 + "license": "Apache-2.0", 7421 + "dependencies": { 7422 + "@sigstore/protobuf-specs": "^0.5.0", 7423 + "tuf-js": "^4.0.0" 7424 + }, 7425 + "engines": { 7426 + "node": "^20.17.0 || >=22.9.0" 7427 + } 7428 + }, 7429 + "node_modules/npm/node_modules/@sigstore/verify": { 7430 + "version": "3.0.0", 7431 + "inBundle": true, 7432 + "license": "Apache-2.0", 7433 + "dependencies": { 7434 + "@sigstore/bundle": "^4.0.0", 7435 + "@sigstore/core": "^3.0.0", 7436 + "@sigstore/protobuf-specs": "^0.5.0" 7437 + }, 7438 + "engines": { 7439 + "node": "^20.17.0 || >=22.9.0" 7440 + } 7441 + }, 7442 + "node_modules/npm/node_modules/@tufjs/canonical-json": { 7443 + "version": "2.0.0", 7444 + "inBundle": true, 7445 + "license": "MIT", 7446 + "engines": { 7447 + "node": "^16.14.0 || >=18.0.0" 7448 + } 7449 + }, 7450 + "node_modules/npm/node_modules/@tufjs/models": { 7451 + "version": "4.0.0", 7452 + "inBundle": true, 7453 + "license": "MIT", 7454 + "dependencies": { 7455 + "@tufjs/canonical-json": "2.0.0", 7456 + "minimatch": "^9.0.5" 7457 + }, 7458 + "engines": { 7459 + "node": "^20.17.0 || >=22.9.0" 7460 + } 7461 + }, 7462 + "node_modules/npm/node_modules/@tufjs/models/node_modules/minimatch": { 7463 + "version": "9.0.5", 7464 + "inBundle": true, 7465 + "license": "ISC", 7466 + "dependencies": { 7467 + "brace-expansion": "^2.0.1" 7468 + }, 7469 + "engines": { 7470 + "node": ">=16 || 14 >=14.17" 7471 + }, 7472 + "funding": { 7473 + "url": "https://github.com/sponsors/isaacs" 7474 + } 7475 + }, 7476 + "node_modules/npm/node_modules/abbrev": { 7477 + "version": "3.0.1", 7478 + "inBundle": true, 7479 + "license": "ISC", 7480 + "engines": { 7481 + "node": "^18.17.0 || >=20.5.0" 7482 + } 7483 + }, 7484 + "node_modules/npm/node_modules/agent-base": { 7485 + "version": "7.1.4", 7486 + "inBundle": true, 7487 + "license": "MIT", 7488 + "engines": { 7489 + "node": ">= 14" 7490 + } 7491 + }, 7492 + "node_modules/npm/node_modules/ansi-regex": { 7493 + "version": "5.0.1", 7494 + "inBundle": true, 7495 + "license": "MIT", 7496 + "engines": { 7497 + "node": ">=8" 7498 + } 7499 + }, 7500 + "node_modules/npm/node_modules/ansi-styles": { 7501 + "version": "6.2.3", 7502 + "inBundle": true, 7503 + "license": "MIT", 7504 + "engines": { 7505 + "node": ">=12" 7506 + }, 7507 + "funding": { 7508 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 7509 + } 7510 + }, 7511 + "node_modules/npm/node_modules/aproba": { 7512 + "version": "2.1.0", 7513 + "inBundle": true, 7514 + "license": "ISC" 7515 + }, 7516 + "node_modules/npm/node_modules/archy": { 7517 + "version": "1.0.0", 7518 + "inBundle": true, 7519 + "license": "MIT" 7520 + }, 7521 + "node_modules/npm/node_modules/balanced-match": { 7522 + "version": "1.0.2", 7523 + "inBundle": true, 7524 + "license": "MIT" 7525 + }, 7526 + "node_modules/npm/node_modules/bin-links": { 7527 + "version": "5.0.0", 7528 + "inBundle": true, 7529 + "license": "ISC", 7530 + "dependencies": { 7531 + "cmd-shim": "^7.0.0", 7532 + "npm-normalize-package-bin": "^4.0.0", 7533 + "proc-log": "^5.0.0", 7534 + "read-cmd-shim": "^5.0.0", 7535 + "write-file-atomic": "^6.0.0" 7536 + }, 7537 + "engines": { 7538 + "node": "^18.17.0 || >=20.5.0" 7539 + } 7540 + }, 7541 + "node_modules/npm/node_modules/binary-extensions": { 7542 + "version": "3.1.0", 7543 + "inBundle": true, 7544 + "license": "MIT", 7545 + "engines": { 7546 + "node": ">=18.20" 7547 + }, 7548 + "funding": { 7549 + "url": "https://github.com/sponsors/sindresorhus" 7550 + } 7551 + }, 7552 + "node_modules/npm/node_modules/brace-expansion": { 7553 + "version": "2.0.2", 7554 + "inBundle": true, 7555 + "license": "MIT", 7556 + "dependencies": { 7557 + "balanced-match": "^1.0.0" 7558 + } 7559 + }, 7560 + "node_modules/npm/node_modules/cacache": { 7561 + "version": "20.0.1", 7562 + "inBundle": true, 7563 + "license": "ISC", 7564 + "dependencies": { 7565 + "@npmcli/fs": "^4.0.0", 7566 + "fs-minipass": "^3.0.0", 7567 + "glob": "^11.0.3", 7568 + "lru-cache": "^11.1.0", 7569 + "minipass": "^7.0.3", 7570 + "minipass-collect": "^2.0.1", 7571 + "minipass-flush": "^1.0.5", 7572 + "minipass-pipeline": "^1.2.4", 7573 + "p-map": "^7.0.2", 7574 + "ssri": "^12.0.0", 7575 + "unique-filename": "^4.0.0" 7576 + }, 7577 + "engines": { 7578 + "node": "^20.17.0 || >=22.9.0" 7579 + } 7580 + }, 7581 + "node_modules/npm/node_modules/chalk": { 7582 + "version": "5.6.2", 7583 + "inBundle": true, 7584 + "license": "MIT", 7585 + "engines": { 7586 + "node": "^12.17.0 || ^14.13 || >=16.0.0" 7587 + }, 7588 + "funding": { 7589 + "url": "https://github.com/chalk/chalk?sponsor=1" 7590 + } 7591 + }, 7592 + "node_modules/npm/node_modules/chownr": { 7593 + "version": "3.0.0", 7594 + "inBundle": true, 7595 + "license": "BlueOak-1.0.0", 7596 + "engines": { 7597 + "node": ">=18" 7598 + } 7599 + }, 7600 + "node_modules/npm/node_modules/ci-info": { 7601 + "version": "4.3.1", 7602 + "funding": [ 7603 + { 7604 + "type": "github", 7605 + "url": "https://github.com/sponsors/sibiraj-s" 7606 + } 7607 + ], 7608 + "inBundle": true, 7609 + "license": "MIT", 7610 + "engines": { 7611 + "node": ">=8" 7612 + } 7613 + }, 7614 + "node_modules/npm/node_modules/cidr-regex": { 7615 + "version": "5.0.1", 7616 + "inBundle": true, 7617 + "license": "BSD-2-Clause", 7618 + "dependencies": { 7619 + "ip-regex": "5.0.0" 7620 + }, 7621 + "engines": { 7622 + "node": ">=20" 7623 + } 7624 + }, 7625 + "node_modules/npm/node_modules/cli-columns": { 7626 + "version": "4.0.0", 7627 + "inBundle": true, 7628 + "license": "MIT", 7629 + "dependencies": { 7630 + "string-width": "^4.2.3", 7631 + "strip-ansi": "^6.0.1" 7632 + }, 7633 + "engines": { 7634 + "node": ">= 10" 7635 + } 7636 + }, 7637 + "node_modules/npm/node_modules/cmd-shim": { 7638 + "version": "7.0.0", 7639 + "inBundle": true, 7640 + "license": "ISC", 7641 + "engines": { 7642 + "node": "^18.17.0 || >=20.5.0" 7643 + } 7644 + }, 7645 + "node_modules/npm/node_modules/color-convert": { 7646 + "version": "2.0.1", 7647 + "inBundle": true, 7648 + "license": "MIT", 7649 + "dependencies": { 7650 + "color-name": "~1.1.4" 7651 + }, 7652 + "engines": { 7653 + "node": ">=7.0.0" 7654 + } 7655 + }, 7656 + "node_modules/npm/node_modules/color-name": { 7657 + "version": "1.1.4", 7658 + "inBundle": true, 7659 + "license": "MIT" 7660 + }, 7661 + "node_modules/npm/node_modules/common-ancestor-path": { 7662 + "version": "1.0.1", 7663 + "inBundle": true, 7664 + "license": "ISC" 7665 + }, 7666 + "node_modules/npm/node_modules/cross-spawn": { 7667 + "version": "7.0.6", 7668 + "inBundle": true, 7669 + "license": "MIT", 7670 + "dependencies": { 7671 + "path-key": "^3.1.0", 7672 + "shebang-command": "^2.0.0", 7673 + "which": "^2.0.1" 7674 + }, 7675 + "engines": { 7676 + "node": ">= 8" 7677 + } 7678 + }, 7679 + "node_modules/npm/node_modules/cross-spawn/node_modules/isexe": { 7680 + "version": "2.0.0", 7681 + "inBundle": true, 7682 + "license": "ISC" 7683 + }, 7684 + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { 7685 + "version": "2.0.2", 7686 + "inBundle": true, 7687 + "license": "ISC", 7688 + "dependencies": { 7689 + "isexe": "^2.0.0" 7690 + }, 7691 + "bin": { 7692 + "node-which": "bin/node-which" 7693 + }, 7694 + "engines": { 7695 + "node": ">= 8" 7696 + } 7697 + }, 7698 + "node_modules/npm/node_modules/cssesc": { 7699 + "version": "3.0.0", 7700 + "inBundle": true, 7701 + "license": "MIT", 7702 + "bin": { 7703 + "cssesc": "bin/cssesc" 7704 + }, 7705 + "engines": { 7706 + "node": ">=4" 7707 + } 7708 + }, 7709 + "node_modules/npm/node_modules/debug": { 7710 + "version": "4.4.3", 7711 + "inBundle": true, 7712 + "license": "MIT", 7713 + "dependencies": { 7714 + "ms": "^2.1.3" 7715 + }, 7716 + "engines": { 7717 + "node": ">=6.0" 7718 + }, 7719 + "peerDependenciesMeta": { 7720 + "supports-color": { 7721 + "optional": true 7722 + } 7723 + } 7724 + }, 7725 + "node_modules/npm/node_modules/diff": { 7726 + "version": "8.0.2", 7727 + "inBundle": true, 7728 + "license": "BSD-3-Clause", 7729 + "engines": { 7730 + "node": ">=0.3.1" 7731 + } 7732 + }, 7733 + "node_modules/npm/node_modules/eastasianwidth": { 7734 + "version": "0.2.0", 7735 + "inBundle": true, 7736 + "license": "MIT" 7737 + }, 7738 + "node_modules/npm/node_modules/emoji-regex": { 7739 + "version": "8.0.0", 7740 + "inBundle": true, 7741 + "license": "MIT" 7742 + }, 7743 + "node_modules/npm/node_modules/encoding": { 7744 + "version": "0.1.13", 7745 + "inBundle": true, 7746 + "license": "MIT", 7747 + "optional": true, 7748 + "dependencies": { 7749 + "iconv-lite": "^0.6.2" 7750 + } 7751 + }, 7752 + "node_modules/npm/node_modules/env-paths": { 7753 + "version": "2.2.1", 7754 + "inBundle": true, 7755 + "license": "MIT", 7756 + "engines": { 7757 + "node": ">=6" 7758 + } 7759 + }, 7760 + "node_modules/npm/node_modules/err-code": { 7761 + "version": "2.0.3", 7762 + "inBundle": true, 7763 + "license": "MIT" 7764 + }, 7765 + "node_modules/npm/node_modules/exponential-backoff": { 7766 + "version": "3.1.2", 7767 + "inBundle": true, 7768 + "license": "Apache-2.0" 7769 + }, 7770 + "node_modules/npm/node_modules/fastest-levenshtein": { 7771 + "version": "1.0.16", 7772 + "inBundle": true, 7773 + "license": "MIT", 7774 + "engines": { 7775 + "node": ">= 4.9.1" 7776 + } 7777 + }, 7778 + "node_modules/npm/node_modules/foreground-child": { 7779 + "version": "3.3.1", 7780 + "inBundle": true, 7781 + "license": "ISC", 7782 + "dependencies": { 7783 + "cross-spawn": "^7.0.6", 7784 + "signal-exit": "^4.0.1" 7785 + }, 7786 + "engines": { 7787 + "node": ">=14" 7788 + }, 7789 + "funding": { 7790 + "url": "https://github.com/sponsors/isaacs" 7791 + } 7792 + }, 7793 + "node_modules/npm/node_modules/fs-minipass": { 7794 + "version": "3.0.3", 7795 + "inBundle": true, 7796 + "license": "ISC", 7797 + "dependencies": { 7798 + "minipass": "^7.0.3" 7799 + }, 7800 + "engines": { 7801 + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 7802 + } 7803 + }, 7804 + "node_modules/npm/node_modules/glob": { 7805 + "version": "11.0.3", 7806 + "inBundle": true, 7807 + "license": "ISC", 7808 + "dependencies": { 7809 + "foreground-child": "^3.3.1", 7810 + "jackspeak": "^4.1.1", 7811 + "minimatch": "^10.0.3", 7812 + "minipass": "^7.1.2", 7813 + "package-json-from-dist": "^1.0.0", 7814 + "path-scurry": "^2.0.0" 7815 + }, 7816 + "bin": { 7817 + "glob": "dist/esm/bin.mjs" 7818 + }, 7819 + "engines": { 7820 + "node": "20 || >=22" 7821 + }, 7822 + "funding": { 7823 + "url": "https://github.com/sponsors/isaacs" 7824 + } 7825 + }, 7826 + "node_modules/npm/node_modules/graceful-fs": { 7827 + "version": "4.2.11", 7828 + "inBundle": true, 7829 + "license": "ISC" 7830 + }, 7831 + "node_modules/npm/node_modules/hosted-git-info": { 7832 + "version": "9.0.2", 7833 + "inBundle": true, 7834 + "license": "ISC", 7835 + "dependencies": { 7836 + "lru-cache": "^11.1.0" 7837 + }, 7838 + "engines": { 7839 + "node": "^20.17.0 || >=22.9.0" 7840 + } 7841 + }, 7842 + "node_modules/npm/node_modules/http-cache-semantics": { 7843 + "version": "4.2.0", 7844 + "inBundle": true, 7845 + "license": "BSD-2-Clause" 7846 + }, 7847 + "node_modules/npm/node_modules/http-proxy-agent": { 7848 + "version": "7.0.2", 7849 + "inBundle": true, 7850 + "license": "MIT", 7851 + "dependencies": { 7852 + "agent-base": "^7.1.0", 7853 + "debug": "^4.3.4" 7854 + }, 7855 + "engines": { 7856 + "node": ">= 14" 7857 + } 7858 + }, 7859 + "node_modules/npm/node_modules/https-proxy-agent": { 7860 + "version": "7.0.6", 7861 + "inBundle": true, 7862 + "license": "MIT", 7863 + "dependencies": { 7864 + "agent-base": "^7.1.2", 7865 + "debug": "4" 7866 + }, 7867 + "engines": { 7868 + "node": ">= 14" 7869 + } 7870 + }, 7871 + "node_modules/npm/node_modules/iconv-lite": { 7872 + "version": "0.6.3", 7873 + "inBundle": true, 7874 + "license": "MIT", 7875 + "optional": true, 7876 + "dependencies": { 7877 + "safer-buffer": ">= 2.1.2 < 3.0.0" 7878 + }, 7879 + "engines": { 7880 + "node": ">=0.10.0" 7881 + } 7882 + }, 7883 + "node_modules/npm/node_modules/ignore-walk": { 7884 + "version": "8.0.0", 7885 + "inBundle": true, 7886 + "license": "ISC", 7887 + "dependencies": { 7888 + "minimatch": "^10.0.3" 7889 + }, 7890 + "engines": { 7891 + "node": "^20.17.0 || >=22.9.0" 7892 + } 7893 + }, 7894 + "node_modules/npm/node_modules/imurmurhash": { 7895 + "version": "0.1.4", 7896 + "inBundle": true, 7897 + "license": "MIT", 7898 + "engines": { 7899 + "node": ">=0.8.19" 7900 + } 7901 + }, 7902 + "node_modules/npm/node_modules/ini": { 7903 + "version": "5.0.0", 7904 + "inBundle": true, 7905 + "license": "ISC", 7906 + "engines": { 7907 + "node": "^18.17.0 || >=20.5.0" 7908 + } 7909 + }, 7910 + "node_modules/npm/node_modules/init-package-json": { 7911 + "version": "8.2.2", 7912 + "inBundle": true, 7913 + "license": "ISC", 7914 + "dependencies": { 7915 + "@npmcli/package-json": "^7.0.0", 7916 + "npm-package-arg": "^13.0.0", 7917 + "promzard": "^2.0.0", 7918 + "read": "^4.0.0", 7919 + "semver": "^7.7.2", 7920 + "validate-npm-package-license": "^3.0.4", 7921 + "validate-npm-package-name": "^6.0.2" 7922 + }, 7923 + "engines": { 7924 + "node": "^20.17.0 || >=22.9.0" 7925 + } 7926 + }, 7927 + "node_modules/npm/node_modules/ip-address": { 7928 + "version": "10.0.1", 7929 + "inBundle": true, 7930 + "license": "MIT", 7931 + "engines": { 7932 + "node": ">= 12" 7933 + } 7934 + }, 7935 + "node_modules/npm/node_modules/ip-regex": { 7936 + "version": "5.0.0", 7937 + "inBundle": true, 7938 + "license": "MIT", 7939 + "engines": { 7940 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 7941 + }, 7942 + "funding": { 7943 + "url": "https://github.com/sponsors/sindresorhus" 7944 + } 7945 + }, 7946 + "node_modules/npm/node_modules/is-cidr": { 7947 + "version": "6.0.1", 7948 + "inBundle": true, 7949 + "license": "BSD-2-Clause", 7950 + "dependencies": { 7951 + "cidr-regex": "5.0.1" 7952 + }, 7953 + "engines": { 7954 + "node": ">=20" 7955 + } 7956 + }, 7957 + "node_modules/npm/node_modules/is-fullwidth-code-point": { 7958 + "version": "3.0.0", 7959 + "inBundle": true, 7960 + "license": "MIT", 7961 + "engines": { 7962 + "node": ">=8" 7963 + } 7964 + }, 7965 + "node_modules/npm/node_modules/isexe": { 7966 + "version": "3.1.1", 7967 + "inBundle": true, 7968 + "license": "ISC", 7969 + "engines": { 7970 + "node": ">=16" 7971 + } 7972 + }, 7973 + "node_modules/npm/node_modules/jackspeak": { 7974 + "version": "4.1.1", 7975 + "inBundle": true, 7976 + "license": "BlueOak-1.0.0", 7977 + "dependencies": { 7978 + "@isaacs/cliui": "^8.0.2" 7979 + }, 7980 + "engines": { 7981 + "node": "20 || >=22" 7982 + }, 7983 + "funding": { 7984 + "url": "https://github.com/sponsors/isaacs" 7985 + } 7986 + }, 7987 + "node_modules/npm/node_modules/json-parse-even-better-errors": { 7988 + "version": "4.0.0", 7989 + "inBundle": true, 7990 + "license": "MIT", 7991 + "engines": { 7992 + "node": "^18.17.0 || >=20.5.0" 7993 + } 7994 + }, 7995 + "node_modules/npm/node_modules/json-stringify-nice": { 7996 + "version": "1.1.4", 7997 + "inBundle": true, 7998 + "license": "ISC", 7999 + "funding": { 8000 + "url": "https://github.com/sponsors/isaacs" 8001 + } 8002 + }, 8003 + "node_modules/npm/node_modules/jsonparse": { 8004 + "version": "1.3.1", 8005 + "engines": [ 8006 + "node >= 0.2.0" 8007 + ], 8008 + "inBundle": true, 8009 + "license": "MIT" 8010 + }, 8011 + "node_modules/npm/node_modules/just-diff": { 8012 + "version": "6.0.2", 8013 + "inBundle": true, 8014 + "license": "MIT" 8015 + }, 8016 + "node_modules/npm/node_modules/just-diff-apply": { 8017 + "version": "5.5.0", 8018 + "inBundle": true, 8019 + "license": "MIT" 8020 + }, 8021 + "node_modules/npm/node_modules/libnpmaccess": { 8022 + "version": "10.0.3", 8023 + "inBundle": true, 8024 + "license": "ISC", 8025 + "dependencies": { 8026 + "npm-package-arg": "^13.0.0", 8027 + "npm-registry-fetch": "^19.0.0" 8028 + }, 8029 + "engines": { 8030 + "node": "^20.17.0 || >=22.9.0" 8031 + } 8032 + }, 8033 + "node_modules/npm/node_modules/libnpmdiff": { 8034 + "version": "8.0.9", 8035 + "inBundle": true, 8036 + "license": "ISC", 8037 + "dependencies": { 8038 + "@npmcli/arborist": "^9.1.6", 8039 + "@npmcli/installed-package-contents": "^3.0.0", 8040 + "binary-extensions": "^3.0.0", 8041 + "diff": "^8.0.2", 8042 + "minimatch": "^10.0.3", 8043 + "npm-package-arg": "^13.0.0", 8044 + "pacote": "^21.0.2", 8045 + "tar": "^7.5.1" 8046 + }, 8047 + "engines": { 8048 + "node": "^20.17.0 || >=22.9.0" 8049 + } 8050 + }, 8051 + "node_modules/npm/node_modules/libnpmexec": { 8052 + "version": "10.1.8", 8053 + "inBundle": true, 8054 + "license": "ISC", 8055 + "dependencies": { 8056 + "@npmcli/arborist": "^9.1.6", 8057 + "@npmcli/package-json": "^7.0.0", 8058 + "@npmcli/run-script": "^10.0.0", 8059 + "ci-info": "^4.0.0", 8060 + "npm-package-arg": "^13.0.0", 8061 + "pacote": "^21.0.2", 8062 + "proc-log": "^5.0.0", 8063 + "promise-retry": "^2.0.1", 8064 + "read": "^4.0.0", 8065 + "semver": "^7.3.7", 8066 + "signal-exit": "^4.1.0", 8067 + "walk-up-path": "^4.0.0" 8068 + }, 8069 + "engines": { 8070 + "node": "^20.17.0 || >=22.9.0" 8071 + } 8072 + }, 8073 + "node_modules/npm/node_modules/libnpmfund": { 8074 + "version": "7.0.9", 8075 + "inBundle": true, 8076 + "license": "ISC", 8077 + "dependencies": { 8078 + "@npmcli/arborist": "^9.1.6" 8079 + }, 8080 + "engines": { 8081 + "node": "^20.17.0 || >=22.9.0" 8082 + } 8083 + }, 8084 + "node_modules/npm/node_modules/libnpmorg": { 8085 + "version": "8.0.1", 8086 + "inBundle": true, 8087 + "license": "ISC", 8088 + "dependencies": { 8089 + "aproba": "^2.0.0", 8090 + "npm-registry-fetch": "^19.0.0" 8091 + }, 8092 + "engines": { 8093 + "node": "^20.17.0 || >=22.9.0" 8094 + } 8095 + }, 8096 + "node_modules/npm/node_modules/libnpmpack": { 8097 + "version": "9.0.9", 8098 + "inBundle": true, 8099 + "license": "ISC", 8100 + "dependencies": { 8101 + "@npmcli/arborist": "^9.1.6", 8102 + "@npmcli/run-script": "^10.0.0", 8103 + "npm-package-arg": "^13.0.0", 8104 + "pacote": "^21.0.2" 8105 + }, 8106 + "engines": { 8107 + "node": "^20.17.0 || >=22.9.0" 8108 + } 8109 + }, 8110 + "node_modules/npm/node_modules/libnpmpublish": { 8111 + "version": "11.1.2", 8112 + "inBundle": true, 8113 + "license": "ISC", 8114 + "dependencies": { 8115 + "@npmcli/package-json": "^7.0.0", 8116 + "ci-info": "^4.0.0", 8117 + "npm-package-arg": "^13.0.0", 8118 + "npm-registry-fetch": "^19.0.0", 8119 + "proc-log": "^5.0.0", 8120 + "semver": "^7.3.7", 8121 + "sigstore": "^4.0.0", 8122 + "ssri": "^12.0.0" 8123 + }, 8124 + "engines": { 8125 + "node": "^20.17.0 || >=22.9.0" 8126 + } 8127 + }, 8128 + "node_modules/npm/node_modules/libnpmsearch": { 8129 + "version": "9.0.1", 8130 + "inBundle": true, 8131 + "license": "ISC", 8132 + "dependencies": { 8133 + "npm-registry-fetch": "^19.0.0" 8134 + }, 8135 + "engines": { 8136 + "node": "^20.17.0 || >=22.9.0" 8137 + } 8138 + }, 8139 + "node_modules/npm/node_modules/libnpmteam": { 8140 + "version": "8.0.2", 8141 + "inBundle": true, 8142 + "license": "ISC", 8143 + "dependencies": { 8144 + "aproba": "^2.0.0", 8145 + "npm-registry-fetch": "^19.0.0" 8146 + }, 8147 + "engines": { 8148 + "node": "^20.17.0 || >=22.9.0" 8149 + } 8150 + }, 8151 + "node_modules/npm/node_modules/libnpmversion": { 8152 + "version": "8.0.2", 8153 + "inBundle": true, 8154 + "license": "ISC", 8155 + "dependencies": { 8156 + "@npmcli/git": "^7.0.0", 8157 + "@npmcli/run-script": "^10.0.0", 8158 + "json-parse-even-better-errors": "^4.0.0", 8159 + "proc-log": "^5.0.0", 8160 + "semver": "^7.3.7" 8161 + }, 8162 + "engines": { 8163 + "node": "^20.17.0 || >=22.9.0" 8164 + } 8165 + }, 8166 + "node_modules/npm/node_modules/lru-cache": { 8167 + "version": "11.2.2", 8168 + "inBundle": true, 8169 + "license": "ISC", 8170 + "engines": { 8171 + "node": "20 || >=22" 8172 + } 8173 + }, 8174 + "node_modules/npm/node_modules/make-fetch-happen": { 8175 + "version": "15.0.2", 8176 + "inBundle": true, 8177 + "license": "ISC", 8178 + "dependencies": { 8179 + "@npmcli/agent": "^4.0.0", 8180 + "cacache": "^20.0.1", 8181 + "http-cache-semantics": "^4.1.1", 8182 + "minipass": "^7.0.2", 8183 + "minipass-fetch": "^4.0.0", 8184 + "minipass-flush": "^1.0.5", 8185 + "minipass-pipeline": "^1.2.4", 8186 + "negotiator": "^1.0.0", 8187 + "proc-log": "^5.0.0", 8188 + "promise-retry": "^2.0.1", 8189 + "ssri": "^12.0.0" 8190 + }, 8191 + "engines": { 8192 + "node": "^20.17.0 || >=22.9.0" 8193 + } 8194 + }, 8195 + "node_modules/npm/node_modules/minimatch": { 8196 + "version": "10.0.3", 8197 + "inBundle": true, 8198 + "license": "ISC", 8199 + "dependencies": { 8200 + "@isaacs/brace-expansion": "^5.0.0" 8201 + }, 8202 + "engines": { 8203 + "node": "20 || >=22" 8204 + }, 8205 + "funding": { 8206 + "url": "https://github.com/sponsors/isaacs" 8207 + } 8208 + }, 8209 + "node_modules/npm/node_modules/minipass": { 8210 + "version": "7.1.2", 8211 + "inBundle": true, 8212 + "license": "ISC", 8213 + "engines": { 8214 + "node": ">=16 || 14 >=14.17" 8215 + } 8216 + }, 8217 + "node_modules/npm/node_modules/minipass-collect": { 8218 + "version": "2.0.1", 8219 + "inBundle": true, 8220 + "license": "ISC", 8221 + "dependencies": { 8222 + "minipass": "^7.0.3" 8223 + }, 8224 + "engines": { 8225 + "node": ">=16 || 14 >=14.17" 8226 + } 8227 + }, 8228 + "node_modules/npm/node_modules/minipass-fetch": { 8229 + "version": "4.0.1", 8230 + "inBundle": true, 8231 + "license": "MIT", 8232 + "dependencies": { 8233 + "minipass": "^7.0.3", 8234 + "minipass-sized": "^1.0.3", 8235 + "minizlib": "^3.0.1" 8236 + }, 8237 + "engines": { 8238 + "node": "^18.17.0 || >=20.5.0" 8239 + }, 8240 + "optionalDependencies": { 8241 + "encoding": "^0.1.13" 8242 + } 8243 + }, 8244 + "node_modules/npm/node_modules/minipass-flush": { 8245 + "version": "1.0.5", 8246 + "inBundle": true, 8247 + "license": "ISC", 8248 + "dependencies": { 8249 + "minipass": "^3.0.0" 8250 + }, 8251 + "engines": { 8252 + "node": ">= 8" 8253 + } 8254 + }, 8255 + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { 8256 + "version": "3.3.6", 8257 + "inBundle": true, 8258 + "license": "ISC", 8259 + "dependencies": { 8260 + "yallist": "^4.0.0" 8261 + }, 8262 + "engines": { 8263 + "node": ">=8" 8264 + } 8265 + }, 8266 + "node_modules/npm/node_modules/minipass-pipeline": { 8267 + "version": "1.2.4", 8268 + "inBundle": true, 8269 + "license": "ISC", 8270 + "dependencies": { 8271 + "minipass": "^3.0.0" 8272 + }, 8273 + "engines": { 8274 + "node": ">=8" 8275 + } 8276 + }, 8277 + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { 8278 + "version": "3.3.6", 8279 + "inBundle": true, 8280 + "license": "ISC", 8281 + "dependencies": { 8282 + "yallist": "^4.0.0" 8283 + }, 8284 + "engines": { 8285 + "node": ">=8" 8286 + } 8287 + }, 8288 + "node_modules/npm/node_modules/minipass-sized": { 8289 + "version": "1.0.3", 8290 + "inBundle": true, 8291 + "license": "ISC", 8292 + "dependencies": { 8293 + "minipass": "^3.0.0" 8294 + }, 8295 + "engines": { 8296 + "node": ">=8" 8297 + } 8298 + }, 8299 + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { 8300 + "version": "3.3.6", 8301 + "inBundle": true, 8302 + "license": "ISC", 8303 + "dependencies": { 8304 + "yallist": "^4.0.0" 8305 + }, 8306 + "engines": { 8307 + "node": ">=8" 8308 + } 8309 + }, 8310 + "node_modules/npm/node_modules/minizlib": { 8311 + "version": "3.1.0", 8312 + "inBundle": true, 8313 + "license": "MIT", 8314 + "dependencies": { 8315 + "minipass": "^7.1.2" 8316 + }, 8317 + "engines": { 8318 + "node": ">= 18" 8319 + } 8320 + }, 8321 + "node_modules/npm/node_modules/ms": { 8322 + "version": "2.1.3", 8323 + "inBundle": true, 8324 + "license": "MIT" 8325 + }, 8326 + "node_modules/npm/node_modules/mute-stream": { 8327 + "version": "2.0.0", 8328 + "inBundle": true, 8329 + "license": "ISC", 8330 + "engines": { 8331 + "node": "^18.17.0 || >=20.5.0" 8332 + } 8333 + }, 8334 + "node_modules/npm/node_modules/negotiator": { 8335 + "version": "1.0.0", 8336 + "inBundle": true, 8337 + "license": "MIT", 8338 + "engines": { 8339 + "node": ">= 0.6" 8340 + } 8341 + }, 8342 + "node_modules/npm/node_modules/node-gyp": { 8343 + "version": "11.4.2", 8344 + "inBundle": true, 8345 + "license": "MIT", 8346 + "dependencies": { 8347 + "env-paths": "^2.2.0", 8348 + "exponential-backoff": "^3.1.1", 8349 + "graceful-fs": "^4.2.6", 8350 + "make-fetch-happen": "^14.0.3", 8351 + "nopt": "^8.0.0", 8352 + "proc-log": "^5.0.0", 8353 + "semver": "^7.3.5", 8354 + "tar": "^7.4.3", 8355 + "tinyglobby": "^0.2.12", 8356 + "which": "^5.0.0" 8357 + }, 8358 + "bin": { 8359 + "node-gyp": "bin/node-gyp.js" 8360 + }, 8361 + "engines": { 8362 + "node": "^18.17.0 || >=20.5.0" 8363 + } 8364 + }, 8365 + "node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/agent": { 8366 + "version": "3.0.0", 8367 + "inBundle": true, 8368 + "license": "ISC", 8369 + "dependencies": { 8370 + "agent-base": "^7.1.0", 8371 + "http-proxy-agent": "^7.0.0", 8372 + "https-proxy-agent": "^7.0.1", 8373 + "lru-cache": "^10.0.1", 8374 + "socks-proxy-agent": "^8.0.3" 8375 + }, 8376 + "engines": { 8377 + "node": "^18.17.0 || >=20.5.0" 8378 + } 8379 + }, 8380 + "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { 8381 + "version": "19.0.1", 8382 + "inBundle": true, 8383 + "license": "ISC", 8384 + "dependencies": { 8385 + "@npmcli/fs": "^4.0.0", 8386 + "fs-minipass": "^3.0.0", 8387 + "glob": "^10.2.2", 8388 + "lru-cache": "^10.0.1", 8389 + "minipass": "^7.0.3", 8390 + "minipass-collect": "^2.0.1", 8391 + "minipass-flush": "^1.0.5", 8392 + "minipass-pipeline": "^1.2.4", 8393 + "p-map": "^7.0.2", 8394 + "ssri": "^12.0.0", 8395 + "tar": "^7.4.3", 8396 + "unique-filename": "^4.0.0" 8397 + }, 8398 + "engines": { 8399 + "node": "^18.17.0 || >=20.5.0" 8400 + } 8401 + }, 8402 + "node_modules/npm/node_modules/node-gyp/node_modules/glob": { 8403 + "version": "10.4.5", 8404 + "inBundle": true, 8405 + "license": "ISC", 8406 + "dependencies": { 8407 + "foreground-child": "^3.1.0", 8408 + "jackspeak": "^3.1.2", 8409 + "minimatch": "^9.0.4", 8410 + "minipass": "^7.1.2", 8411 + "package-json-from-dist": "^1.0.0", 8412 + "path-scurry": "^1.11.1" 8413 + }, 8414 + "bin": { 8415 + "glob": "dist/esm/bin.mjs" 8416 + }, 8417 + "funding": { 8418 + "url": "https://github.com/sponsors/isaacs" 8419 + } 8420 + }, 8421 + "node_modules/npm/node_modules/node-gyp/node_modules/jackspeak": { 8422 + "version": "3.4.3", 8423 + "inBundle": true, 8424 + "license": "BlueOak-1.0.0", 8425 + "dependencies": { 8426 + "@isaacs/cliui": "^8.0.2" 8427 + }, 8428 + "funding": { 8429 + "url": "https://github.com/sponsors/isaacs" 8430 + }, 8431 + "optionalDependencies": { 8432 + "@pkgjs/parseargs": "^0.11.0" 8433 + } 8434 + }, 8435 + "node_modules/npm/node_modules/node-gyp/node_modules/lru-cache": { 8436 + "version": "10.4.3", 8437 + "inBundle": true, 8438 + "license": "ISC" 8439 + }, 8440 + "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { 8441 + "version": "14.0.3", 8442 + "inBundle": true, 8443 + "license": "ISC", 8444 + "dependencies": { 8445 + "@npmcli/agent": "^3.0.0", 8446 + "cacache": "^19.0.1", 8447 + "http-cache-semantics": "^4.1.1", 8448 + "minipass": "^7.0.2", 8449 + "minipass-fetch": "^4.0.0", 8450 + "minipass-flush": "^1.0.5", 8451 + "minipass-pipeline": "^1.2.4", 8452 + "negotiator": "^1.0.0", 8453 + "proc-log": "^5.0.0", 8454 + "promise-retry": "^2.0.1", 8455 + "ssri": "^12.0.0" 8456 + }, 8457 + "engines": { 8458 + "node": "^18.17.0 || >=20.5.0" 8459 + } 8460 + }, 8461 + "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { 8462 + "version": "9.0.5", 8463 + "inBundle": true, 8464 + "license": "ISC", 8465 + "dependencies": { 8466 + "brace-expansion": "^2.0.1" 8467 + }, 8468 + "engines": { 8469 + "node": ">=16 || 14 >=14.17" 8470 + }, 8471 + "funding": { 8472 + "url": "https://github.com/sponsors/isaacs" 8473 + } 8474 + }, 8475 + "node_modules/npm/node_modules/node-gyp/node_modules/path-scurry": { 8476 + "version": "1.11.1", 8477 + "inBundle": true, 8478 + "license": "BlueOak-1.0.0", 8479 + "dependencies": { 8480 + "lru-cache": "^10.2.0", 8481 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 8482 + }, 8483 + "engines": { 8484 + "node": ">=16 || 14 >=14.18" 8485 + }, 8486 + "funding": { 8487 + "url": "https://github.com/sponsors/isaacs" 8488 + } 8489 + }, 8490 + "node_modules/npm/node_modules/nopt": { 8491 + "version": "8.1.0", 8492 + "inBundle": true, 8493 + "license": "ISC", 8494 + "dependencies": { 8495 + "abbrev": "^3.0.0" 8496 + }, 8497 + "bin": { 8498 + "nopt": "bin/nopt.js" 8499 + }, 8500 + "engines": { 8501 + "node": "^18.17.0 || >=20.5.0" 8502 + } 8503 + }, 8504 + "node_modules/npm/node_modules/npm-audit-report": { 8505 + "version": "6.0.0", 8506 + "inBundle": true, 8507 + "license": "ISC", 8508 + "engines": { 8509 + "node": "^18.17.0 || >=20.5.0" 8510 + } 8511 + }, 8512 + "node_modules/npm/node_modules/npm-bundled": { 8513 + "version": "4.0.0", 8514 + "inBundle": true, 8515 + "license": "ISC", 8516 + "dependencies": { 8517 + "npm-normalize-package-bin": "^4.0.0" 8518 + }, 8519 + "engines": { 8520 + "node": "^18.17.0 || >=20.5.0" 8521 + } 8522 + }, 8523 + "node_modules/npm/node_modules/npm-install-checks": { 8524 + "version": "7.1.2", 8525 + "inBundle": true, 8526 + "license": "BSD-2-Clause", 8527 + "dependencies": { 8528 + "semver": "^7.1.1" 8529 + }, 8530 + "engines": { 8531 + "node": "^18.17.0 || >=20.5.0" 8532 + } 8533 + }, 8534 + "node_modules/npm/node_modules/npm-normalize-package-bin": { 8535 + "version": "4.0.0", 8536 + "inBundle": true, 8537 + "license": "ISC", 8538 + "engines": { 8539 + "node": "^18.17.0 || >=20.5.0" 8540 + } 8541 + }, 8542 + "node_modules/npm/node_modules/npm-package-arg": { 8543 + "version": "13.0.1", 8544 + "inBundle": true, 8545 + "license": "ISC", 8546 + "dependencies": { 8547 + "hosted-git-info": "^9.0.0", 8548 + "proc-log": "^5.0.0", 8549 + "semver": "^7.3.5", 8550 + "validate-npm-package-name": "^6.0.0" 8551 + }, 8552 + "engines": { 8553 + "node": "^20.17.0 || >=22.9.0" 8554 + } 8555 + }, 8556 + "node_modules/npm/node_modules/npm-packlist": { 8557 + "version": "10.0.2", 8558 + "inBundle": true, 8559 + "license": "ISC", 8560 + "dependencies": { 8561 + "ignore-walk": "^8.0.0", 8562 + "proc-log": "^5.0.0" 8563 + }, 8564 + "engines": { 8565 + "node": "^20.17.0 || >=22.9.0" 8566 + } 8567 + }, 8568 + "node_modules/npm/node_modules/npm-pick-manifest": { 8569 + "version": "11.0.1", 8570 + "inBundle": true, 8571 + "license": "ISC", 8572 + "dependencies": { 8573 + "npm-install-checks": "^7.1.0", 8574 + "npm-normalize-package-bin": "^4.0.0", 8575 + "npm-package-arg": "^13.0.0", 8576 + "semver": "^7.3.5" 8577 + }, 8578 + "engines": { 8579 + "node": "^20.17.0 || >=22.9.0" 8580 + } 8581 + }, 8582 + "node_modules/npm/node_modules/npm-profile": { 8583 + "version": "12.0.0", 8584 + "inBundle": true, 8585 + "license": "ISC", 8586 + "dependencies": { 8587 + "npm-registry-fetch": "^19.0.0", 8588 + "proc-log": "^5.0.0" 8589 + }, 8590 + "engines": { 8591 + "node": "^20.17.0 || >=22.9.0" 8592 + } 8593 + }, 8594 + "node_modules/npm/node_modules/npm-registry-fetch": { 8595 + "version": "19.0.0", 8596 + "inBundle": true, 8597 + "license": "ISC", 8598 + "dependencies": { 8599 + "@npmcli/redact": "^3.0.0", 8600 + "jsonparse": "^1.3.1", 8601 + "make-fetch-happen": "^15.0.0", 8602 + "minipass": "^7.0.2", 8603 + "minipass-fetch": "^4.0.0", 8604 + "minizlib": "^3.0.1", 8605 + "npm-package-arg": "^13.0.0", 8606 + "proc-log": "^5.0.0" 8607 + }, 8608 + "engines": { 8609 + "node": "^20.17.0 || >=22.9.0" 8610 + } 8611 + }, 8612 + "node_modules/npm/node_modules/npm-user-validate": { 8613 + "version": "3.0.0", 8614 + "inBundle": true, 8615 + "license": "BSD-2-Clause", 8616 + "engines": { 8617 + "node": "^18.17.0 || >=20.5.0" 8618 + } 8619 + }, 8620 + "node_modules/npm/node_modules/p-map": { 8621 + "version": "7.0.3", 8622 + "inBundle": true, 8623 + "license": "MIT", 8624 + "engines": { 8625 + "node": ">=18" 8626 + }, 8627 + "funding": { 8628 + "url": "https://github.com/sponsors/sindresorhus" 8629 + } 8630 + }, 8631 + "node_modules/npm/node_modules/package-json-from-dist": { 8632 + "version": "1.0.1", 8633 + "inBundle": true, 8634 + "license": "BlueOak-1.0.0" 8635 + }, 8636 + "node_modules/npm/node_modules/pacote": { 8637 + "version": "21.0.3", 8638 + "inBundle": true, 8639 + "license": "ISC", 8640 + "dependencies": { 8641 + "@npmcli/git": "^7.0.0", 8642 + "@npmcli/installed-package-contents": "^3.0.0", 8643 + "@npmcli/package-json": "^7.0.0", 8644 + "@npmcli/promise-spawn": "^8.0.0", 8645 + "@npmcli/run-script": "^10.0.0", 8646 + "cacache": "^20.0.0", 8647 + "fs-minipass": "^3.0.0", 8648 + "minipass": "^7.0.2", 8649 + "npm-package-arg": "^13.0.0", 8650 + "npm-packlist": "^10.0.1", 8651 + "npm-pick-manifest": "^11.0.1", 8652 + "npm-registry-fetch": "^19.0.0", 8653 + "proc-log": "^5.0.0", 8654 + "promise-retry": "^2.0.1", 8655 + "sigstore": "^4.0.0", 8656 + "ssri": "^12.0.0", 8657 + "tar": "^7.4.3" 8658 + }, 8659 + "bin": { 8660 + "pacote": "bin/index.js" 8661 + }, 8662 + "engines": { 8663 + "node": "^20.17.0 || >=22.9.0" 8664 + } 8665 + }, 8666 + "node_modules/npm/node_modules/parse-conflict-json": { 8667 + "version": "4.0.0", 8668 + "inBundle": true, 8669 + "license": "ISC", 8670 + "dependencies": { 8671 + "json-parse-even-better-errors": "^4.0.0", 8672 + "just-diff": "^6.0.0", 8673 + "just-diff-apply": "^5.2.0" 8674 + }, 8675 + "engines": { 8676 + "node": "^18.17.0 || >=20.5.0" 8677 + } 8678 + }, 8679 + "node_modules/npm/node_modules/path-key": { 8680 + "version": "3.1.1", 8681 + "inBundle": true, 8682 + "license": "MIT", 8683 + "engines": { 8684 + "node": ">=8" 8685 + } 8686 + }, 8687 + "node_modules/npm/node_modules/path-scurry": { 8688 + "version": "2.0.0", 8689 + "inBundle": true, 8690 + "license": "BlueOak-1.0.0", 8691 + "dependencies": { 8692 + "lru-cache": "^11.0.0", 8693 + "minipass": "^7.1.2" 8694 + }, 8695 + "engines": { 8696 + "node": "20 || >=22" 8697 + }, 8698 + "funding": { 8699 + "url": "https://github.com/sponsors/isaacs" 8700 + } 8701 + }, 8702 + "node_modules/npm/node_modules/postcss-selector-parser": { 8703 + "version": "7.1.0", 8704 + "inBundle": true, 8705 + "license": "MIT", 8706 + "dependencies": { 8707 + "cssesc": "^3.0.0", 8708 + "util-deprecate": "^1.0.2" 8709 + }, 8710 + "engines": { 8711 + "node": ">=4" 8712 + } 8713 + }, 8714 + "node_modules/npm/node_modules/proc-log": { 8715 + "version": "5.0.0", 8716 + "inBundle": true, 8717 + "license": "ISC", 8718 + "engines": { 8719 + "node": "^18.17.0 || >=20.5.0" 8720 + } 8721 + }, 8722 + "node_modules/npm/node_modules/proggy": { 8723 + "version": "3.0.0", 8724 + "inBundle": true, 8725 + "license": "ISC", 8726 + "engines": { 8727 + "node": "^18.17.0 || >=20.5.0" 8728 + } 8729 + }, 8730 + "node_modules/npm/node_modules/promise-all-reject-late": { 8731 + "version": "1.0.1", 8732 + "inBundle": true, 8733 + "license": "ISC", 8734 + "funding": { 8735 + "url": "https://github.com/sponsors/isaacs" 8736 + } 8737 + }, 8738 + "node_modules/npm/node_modules/promise-call-limit": { 8739 + "version": "3.0.2", 8740 + "inBundle": true, 8741 + "license": "ISC", 8742 + "funding": { 8743 + "url": "https://github.com/sponsors/isaacs" 8744 + } 8745 + }, 8746 + "node_modules/npm/node_modules/promise-retry": { 8747 + "version": "2.0.1", 8748 + "inBundle": true, 8749 + "license": "MIT", 8750 + "dependencies": { 8751 + "err-code": "^2.0.2", 8752 + "retry": "^0.12.0" 8753 + }, 8754 + "engines": { 8755 + "node": ">=10" 8756 + } 8757 + }, 8758 + "node_modules/npm/node_modules/promzard": { 8759 + "version": "2.0.0", 8760 + "inBundle": true, 8761 + "license": "ISC", 8762 + "dependencies": { 8763 + "read": "^4.0.0" 8764 + }, 8765 + "engines": { 8766 + "node": "^18.17.0 || >=20.5.0" 8767 + } 8768 + }, 8769 + "node_modules/npm/node_modules/qrcode-terminal": { 8770 + "version": "0.12.0", 8771 + "inBundle": true, 8772 + "bin": { 8773 + "qrcode-terminal": "bin/qrcode-terminal.js" 8774 + } 8775 + }, 8776 + "node_modules/npm/node_modules/read": { 8777 + "version": "4.1.0", 8778 + "inBundle": true, 8779 + "license": "ISC", 8780 + "dependencies": { 8781 + "mute-stream": "^2.0.0" 8782 + }, 8783 + "engines": { 8784 + "node": "^18.17.0 || >=20.5.0" 8785 + } 8786 + }, 8787 + "node_modules/npm/node_modules/read-cmd-shim": { 8788 + "version": "5.0.0", 8789 + "inBundle": true, 8790 + "license": "ISC", 8791 + "engines": { 8792 + "node": "^18.17.0 || >=20.5.0" 8793 + } 8794 + }, 8795 + "node_modules/npm/node_modules/retry": { 8796 + "version": "0.12.0", 8797 + "inBundle": true, 8798 + "license": "MIT", 8799 + "engines": { 8800 + "node": ">= 4" 8801 + } 8802 + }, 8803 + "node_modules/npm/node_modules/safer-buffer": { 8804 + "version": "2.1.2", 8805 + "inBundle": true, 8806 + "license": "MIT", 8807 + "optional": true 8808 + }, 8809 + "node_modules/npm/node_modules/semver": { 8810 + "version": "7.7.3", 8811 + "inBundle": true, 8812 + "license": "ISC", 8813 + "bin": { 8814 + "semver": "bin/semver.js" 8815 + }, 8816 + "engines": { 8817 + "node": ">=10" 8818 + } 8819 + }, 8820 + "node_modules/npm/node_modules/shebang-command": { 8821 + "version": "2.0.0", 8822 + "inBundle": true, 8823 + "license": "MIT", 8824 + "dependencies": { 8825 + "shebang-regex": "^3.0.0" 8826 + }, 8827 + "engines": { 8828 + "node": ">=8" 8829 + } 8830 + }, 8831 + "node_modules/npm/node_modules/shebang-regex": { 8832 + "version": "3.0.0", 8833 + "inBundle": true, 8834 + "license": "MIT", 8835 + "engines": { 8836 + "node": ">=8" 8837 + } 8838 + }, 8839 + "node_modules/npm/node_modules/signal-exit": { 8840 + "version": "4.1.0", 8841 + "inBundle": true, 8842 + "license": "ISC", 8843 + "engines": { 8844 + "node": ">=14" 8845 + }, 8846 + "funding": { 8847 + "url": "https://github.com/sponsors/isaacs" 8848 + } 8849 + }, 8850 + "node_modules/npm/node_modules/sigstore": { 8851 + "version": "4.0.0", 8852 + "inBundle": true, 8853 + "license": "Apache-2.0", 8854 + "dependencies": { 8855 + "@sigstore/bundle": "^4.0.0", 8856 + "@sigstore/core": "^3.0.0", 8857 + "@sigstore/protobuf-specs": "^0.5.0", 8858 + "@sigstore/sign": "^4.0.0", 8859 + "@sigstore/tuf": "^4.0.0", 8860 + "@sigstore/verify": "^3.0.0" 8861 + }, 8862 + "engines": { 8863 + "node": "^20.17.0 || >=22.9.0" 8864 + } 8865 + }, 8866 + "node_modules/npm/node_modules/smart-buffer": { 8867 + "version": "4.2.0", 8868 + "inBundle": true, 8869 + "license": "MIT", 8870 + "engines": { 8871 + "node": ">= 6.0.0", 8872 + "npm": ">= 3.0.0" 8873 + } 8874 + }, 8875 + "node_modules/npm/node_modules/socks": { 8876 + "version": "2.8.7", 8877 + "inBundle": true, 8878 + "license": "MIT", 8879 + "dependencies": { 8880 + "ip-address": "^10.0.1", 8881 + "smart-buffer": "^4.2.0" 8882 + }, 8883 + "engines": { 8884 + "node": ">= 10.0.0", 8885 + "npm": ">= 3.0.0" 8886 + } 8887 + }, 8888 + "node_modules/npm/node_modules/socks-proxy-agent": { 8889 + "version": "8.0.5", 8890 + "inBundle": true, 8891 + "license": "MIT", 8892 + "dependencies": { 8893 + "agent-base": "^7.1.2", 8894 + "debug": "^4.3.4", 8895 + "socks": "^2.8.3" 8896 + }, 8897 + "engines": { 8898 + "node": ">= 14" 8899 + } 8900 + }, 8901 + "node_modules/npm/node_modules/spdx-correct": { 8902 + "version": "3.2.0", 8903 + "inBundle": true, 8904 + "license": "Apache-2.0", 8905 + "dependencies": { 8906 + "spdx-expression-parse": "^3.0.0", 8907 + "spdx-license-ids": "^3.0.0" 8908 + } 8909 + }, 8910 + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { 8911 + "version": "3.0.1", 8912 + "inBundle": true, 8913 + "license": "MIT", 8914 + "dependencies": { 8915 + "spdx-exceptions": "^2.1.0", 8916 + "spdx-license-ids": "^3.0.0" 8917 + } 8918 + }, 8919 + "node_modules/npm/node_modules/spdx-exceptions": { 8920 + "version": "2.5.0", 8921 + "inBundle": true, 8922 + "license": "CC-BY-3.0" 8923 + }, 8924 + "node_modules/npm/node_modules/spdx-expression-parse": { 8925 + "version": "4.0.0", 8926 + "inBundle": true, 8927 + "license": "MIT", 8928 + "dependencies": { 8929 + "spdx-exceptions": "^2.1.0", 8930 + "spdx-license-ids": "^3.0.0" 8931 + } 8932 + }, 8933 + "node_modules/npm/node_modules/spdx-license-ids": { 8934 + "version": "3.0.22", 8935 + "inBundle": true, 8936 + "license": "CC0-1.0" 8937 + }, 8938 + "node_modules/npm/node_modules/ssri": { 8939 + "version": "12.0.0", 8940 + "inBundle": true, 8941 + "license": "ISC", 8942 + "dependencies": { 8943 + "minipass": "^7.0.3" 8944 + }, 8945 + "engines": { 8946 + "node": "^18.17.0 || >=20.5.0" 8947 + } 8948 + }, 8949 + "node_modules/npm/node_modules/string-width": { 8950 + "version": "4.2.3", 8951 + "inBundle": true, 8952 + "license": "MIT", 8953 + "dependencies": { 8954 + "emoji-regex": "^8.0.0", 8955 + "is-fullwidth-code-point": "^3.0.0", 8956 + "strip-ansi": "^6.0.1" 8957 + }, 8958 + "engines": { 8959 + "node": ">=8" 8960 + } 8961 + }, 8962 + "node_modules/npm/node_modules/string-width-cjs": { 8963 + "name": "string-width", 8964 + "version": "4.2.3", 8965 + "inBundle": true, 8966 + "license": "MIT", 8967 + "dependencies": { 8968 + "emoji-regex": "^8.0.0", 8969 + "is-fullwidth-code-point": "^3.0.0", 8970 + "strip-ansi": "^6.0.1" 8971 + }, 8972 + "engines": { 8973 + "node": ">=8" 8974 + } 8975 + }, 8976 + "node_modules/npm/node_modules/strip-ansi": { 8977 + "version": "6.0.1", 8978 + "inBundle": true, 8979 + "license": "MIT", 8980 + "dependencies": { 8981 + "ansi-regex": "^5.0.1" 8982 + }, 8983 + "engines": { 8984 + "node": ">=8" 8985 + } 8986 + }, 8987 + "node_modules/npm/node_modules/strip-ansi-cjs": { 8988 + "name": "strip-ansi", 8989 + "version": "6.0.1", 8990 + "inBundle": true, 8991 + "license": "MIT", 8992 + "dependencies": { 8993 + "ansi-regex": "^5.0.1" 8994 + }, 8995 + "engines": { 8996 + "node": ">=8" 8997 + } 8998 + }, 8999 + "node_modules/npm/node_modules/supports-color": { 9000 + "version": "10.2.2", 9001 + "inBundle": true, 9002 + "license": "MIT", 9003 + "engines": { 9004 + "node": ">=18" 9005 + }, 9006 + "funding": { 9007 + "url": "https://github.com/chalk/supports-color?sponsor=1" 9008 + } 9009 + }, 9010 + "node_modules/npm/node_modules/tar": { 9011 + "version": "7.5.1", 9012 + "inBundle": true, 9013 + "license": "ISC", 9014 + "dependencies": { 9015 + "@isaacs/fs-minipass": "^4.0.0", 9016 + "chownr": "^3.0.0", 9017 + "minipass": "^7.1.2", 9018 + "minizlib": "^3.1.0", 9019 + "yallist": "^5.0.0" 9020 + }, 9021 + "engines": { 9022 + "node": ">=18" 9023 + } 9024 + }, 9025 + "node_modules/npm/node_modules/tar/node_modules/yallist": { 9026 + "version": "5.0.0", 9027 + "inBundle": true, 9028 + "license": "BlueOak-1.0.0", 9029 + "engines": { 9030 + "node": ">=18" 9031 + } 9032 + }, 9033 + "node_modules/npm/node_modules/text-table": { 9034 + "version": "0.2.0", 9035 + "inBundle": true, 9036 + "license": "MIT" 9037 + }, 9038 + "node_modules/npm/node_modules/tiny-relative-date": { 9039 + "version": "2.0.2", 9040 + "inBundle": true, 9041 + "license": "MIT" 9042 + }, 9043 + "node_modules/npm/node_modules/tinyglobby": { 9044 + "version": "0.2.15", 9045 + "inBundle": true, 9046 + "license": "MIT", 9047 + "dependencies": { 9048 + "fdir": "^6.5.0", 9049 + "picomatch": "^4.0.3" 9050 + }, 9051 + "engines": { 9052 + "node": ">=12.0.0" 9053 + }, 9054 + "funding": { 9055 + "url": "https://github.com/sponsors/SuperchupuDev" 9056 + } 9057 + }, 9058 + "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": { 9059 + "version": "6.5.0", 9060 + "inBundle": true, 9061 + "license": "MIT", 9062 + "engines": { 9063 + "node": ">=12.0.0" 9064 + }, 9065 + "peerDependencies": { 9066 + "picomatch": "^3 || ^4" 9067 + }, 9068 + "peerDependenciesMeta": { 9069 + "picomatch": { 9070 + "optional": true 9071 + } 9072 + } 9073 + }, 9074 + "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { 9075 + "version": "4.0.3", 9076 + "inBundle": true, 9077 + "license": "MIT", 9078 + "engines": { 9079 + "node": ">=12" 9080 + }, 9081 + "funding": { 9082 + "url": "https://github.com/sponsors/jonschlinkert" 9083 + } 9084 + }, 9085 + "node_modules/npm/node_modules/treeverse": { 9086 + "version": "3.0.0", 9087 + "inBundle": true, 9088 + "license": "ISC", 9089 + "engines": { 9090 + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 9091 + } 9092 + }, 9093 + "node_modules/npm/node_modules/tuf-js": { 9094 + "version": "4.0.0", 9095 + "inBundle": true, 9096 + "license": "MIT", 9097 + "dependencies": { 9098 + "@tufjs/models": "4.0.0", 9099 + "debug": "^4.4.1", 9100 + "make-fetch-happen": "^15.0.0" 9101 + }, 9102 + "engines": { 9103 + "node": "^20.17.0 || >=22.9.0" 9104 + } 9105 + }, 9106 + "node_modules/npm/node_modules/unique-filename": { 9107 + "version": "4.0.0", 9108 + "inBundle": true, 9109 + "license": "ISC", 9110 + "dependencies": { 9111 + "unique-slug": "^5.0.0" 9112 + }, 9113 + "engines": { 9114 + "node": "^18.17.0 || >=20.5.0" 9115 + } 9116 + }, 9117 + "node_modules/npm/node_modules/unique-slug": { 9118 + "version": "5.0.0", 9119 + "inBundle": true, 9120 + "license": "ISC", 9121 + "dependencies": { 9122 + "imurmurhash": "^0.1.4" 9123 + }, 9124 + "engines": { 9125 + "node": "^18.17.0 || >=20.5.0" 9126 + } 9127 + }, 9128 + "node_modules/npm/node_modules/util-deprecate": { 9129 + "version": "1.0.2", 9130 + "inBundle": true, 9131 + "license": "MIT" 9132 + }, 9133 + "node_modules/npm/node_modules/validate-npm-package-license": { 9134 + "version": "3.0.4", 9135 + "inBundle": true, 9136 + "license": "Apache-2.0", 9137 + "dependencies": { 9138 + "spdx-correct": "^3.0.0", 9139 + "spdx-expression-parse": "^3.0.0" 9140 + } 9141 + }, 9142 + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { 9143 + "version": "3.0.1", 9144 + "inBundle": true, 9145 + "license": "MIT", 9146 + "dependencies": { 9147 + "spdx-exceptions": "^2.1.0", 9148 + "spdx-license-ids": "^3.0.0" 9149 + } 9150 + }, 9151 + "node_modules/npm/node_modules/validate-npm-package-name": { 9152 + "version": "6.0.2", 9153 + "inBundle": true, 9154 + "license": "ISC", 9155 + "engines": { 9156 + "node": "^18.17.0 || >=20.5.0" 9157 + } 9158 + }, 9159 + "node_modules/npm/node_modules/walk-up-path": { 9160 + "version": "4.0.0", 9161 + "inBundle": true, 9162 + "license": "ISC", 9163 + "engines": { 9164 + "node": "20 || >=22" 9165 + } 9166 + }, 9167 + "node_modules/npm/node_modules/which": { 9168 + "version": "5.0.0", 9169 + "inBundle": true, 9170 + "license": "ISC", 9171 + "dependencies": { 9172 + "isexe": "^3.1.1" 9173 + }, 9174 + "bin": { 9175 + "node-which": "bin/which.js" 9176 + }, 9177 + "engines": { 9178 + "node": "^18.17.0 || >=20.5.0" 9179 + } 9180 + }, 9181 + "node_modules/npm/node_modules/wrap-ansi": { 9182 + "version": "8.1.0", 9183 + "inBundle": true, 9184 + "license": "MIT", 9185 + "dependencies": { 9186 + "ansi-styles": "^6.1.0", 9187 + "string-width": "^5.0.1", 9188 + "strip-ansi": "^7.0.1" 9189 + }, 9190 + "engines": { 9191 + "node": ">=12" 9192 + }, 9193 + "funding": { 9194 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 9195 + } 9196 + }, 9197 + "node_modules/npm/node_modules/wrap-ansi-cjs": { 9198 + "name": "wrap-ansi", 9199 + "version": "7.0.0", 9200 + "inBundle": true, 9201 + "license": "MIT", 9202 + "dependencies": { 9203 + "ansi-styles": "^4.0.0", 9204 + "string-width": "^4.1.0", 9205 + "strip-ansi": "^6.0.0" 9206 + }, 9207 + "engines": { 9208 + "node": ">=10" 9209 + }, 9210 + "funding": { 9211 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 9212 + } 9213 + }, 9214 + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 9215 + "version": "4.3.0", 9216 + "inBundle": true, 9217 + "license": "MIT", 9218 + "dependencies": { 9219 + "color-convert": "^2.0.1" 9220 + }, 9221 + "engines": { 9222 + "node": ">=8" 9223 + }, 9224 + "funding": { 9225 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 9226 + } 9227 + }, 9228 + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { 9229 + "version": "6.2.2", 9230 + "inBundle": true, 9231 + "license": "MIT", 9232 + "engines": { 9233 + "node": ">=12" 9234 + }, 9235 + "funding": { 9236 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 9237 + } 9238 + }, 9239 + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { 9240 + "version": "9.2.2", 9241 + "inBundle": true, 9242 + "license": "MIT" 9243 + }, 9244 + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { 9245 + "version": "5.1.2", 9246 + "inBundle": true, 9247 + "license": "MIT", 9248 + "dependencies": { 9249 + "eastasianwidth": "^0.2.0", 9250 + "emoji-regex": "^9.2.2", 9251 + "strip-ansi": "^7.0.1" 9252 + }, 9253 + "engines": { 9254 + "node": ">=12" 9255 + }, 9256 + "funding": { 9257 + "url": "https://github.com/sponsors/sindresorhus" 9258 + } 9259 + }, 9260 + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { 9261 + "version": "7.1.2", 9262 + "inBundle": true, 9263 + "license": "MIT", 9264 + "dependencies": { 9265 + "ansi-regex": "^6.0.1" 9266 + }, 9267 + "engines": { 9268 + "node": ">=12" 9269 + }, 9270 + "funding": { 9271 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 9272 + } 9273 + }, 9274 + "node_modules/npm/node_modules/write-file-atomic": { 9275 + "version": "6.0.0", 9276 + "inBundle": true, 9277 + "license": "ISC", 9278 + "dependencies": { 9279 + "imurmurhash": "^0.1.4", 9280 + "signal-exit": "^4.0.1" 9281 + }, 9282 + "engines": { 9283 + "node": "^18.17.0 || >=20.5.0" 9284 + } 9285 + }, 9286 + "node_modules/npm/node_modules/yallist": { 9287 + "version": "4.0.0", 9288 + "inBundle": true, 9289 + "license": "ISC" 9290 + }, 6860 9291 "node_modules/nwsapi": { 6861 9292 "version": "2.2.21", 6862 9293 "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", ··· 8064 10495 "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", 8065 10496 "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", 8066 10497 "license": "MIT" 10498 + }, 10499 + "node_modules/tanstack-router-keepalive": { 10500 + "version": "1.0.0", 10501 + "resolved": "https://registry.npmjs.org/tanstack-router-keepalive/-/tanstack-router-keepalive-1.0.0.tgz", 10502 + "integrity": "sha512-SxMl9sgIZGjB4OZvGXufTz14ygmZi+eAbrhz3sjmXYZzhSQOekx5LYi9TvKcMXVu8fQR6W/itF5hdglqD6WB/w==", 10503 + "license": "MIT", 10504 + "dependencies": { 10505 + "eventemitter3": "^5.0.1", 10506 + "lodash.clonedeep": "^4.5.0" 10507 + } 8067 10508 }, 8068 10509 "node_modules/tapable": { 8069 10510 "version": "2.2.3",
+4 -1
package.json
··· 20 20 "@tanstack/react-router": "^1.130.2", 21 21 "@tanstack/react-router-devtools": "^1.131.5", 22 22 "@tanstack/router-plugin": "^1.121.2", 23 + "i": "^0.3.7", 23 24 "idb-keyval": "^6.2.2", 24 25 "jotai": "^2.13.1", 26 + "npm": "^11.6.2", 25 27 "react": "^19.0.0", 26 28 "react-dom": "^19.0.0", 27 29 "react-player": "^3.3.2", 28 - "tailwindcss": "^4.0.6" 30 + "tailwindcss": "^4.0.6", 31 + "tanstack-router-keepalive": "^1.0.0" 29 32 }, 30 33 "devDependencies": { 31 34 "@eslint-react/eslint-plugin": "^2.2.1",
+12 -6
src/routes/__root.tsx
··· 7 7 import { 8 8 createRootRouteWithContext, 9 9 Link, 10 - Outlet, 10 + // Outlet, 11 11 Scripts, 12 12 useLocation, 13 13 useNavigate, 14 14 } from "@tanstack/react-router"; 15 15 import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; 16 - import { type SVGProps,useState } from "react"; 16 + import { type SVGProps, useState } from "react"; 17 17 import * as React from "react"; 18 + import { KeepAliveOutlet, KeepAliveProvider } from "tanstack-router-keepalive"; 18 19 19 20 import { DefaultCatchBoundary } from "~/components/DefaultCatchBoundary"; 20 21 import Login from "~/components/Login"; ··· 76 77 return ( 77 78 <UnifiedAuthProvider> 78 79 <RootDocument> 79 - <Outlet /> 80 + <KeepAliveProvider> 81 + <KeepAliveOutlet /> 82 + </KeepAliveProvider> 80 83 </RootDocument> 81 84 </UnifiedAuthProvider> 82 85 ); ··· 89 92 const authed = !!agent?.did; 90 93 const isHome = location.pathname === "/"; 91 94 const isNotifications = location.pathname.startsWith("/notifications"); 92 - const isProfile = agent && ((location.pathname === (`/profile/${agent?.did}`)) || (location.pathname === (`/profile/${encodeURIComponent(agent?.did??"")}`))); 95 + const isProfile = 96 + agent && 97 + (location.pathname === `/profile/${agent?.did}` || 98 + location.pathname === `/profile/${encodeURIComponent(agent?.did ?? "")}`); 93 99 94 100 const [postOpen, setPostOpen] = useState(false); 95 101 const [postText, setPostText] = useState(""); ··· 246 252 navigate({ 247 253 to: "/profile/$did", 248 254 params: { did: agent.assertDid }, 249 - }) 255 + }); 250 256 } 251 257 }} 252 258 type="button" ··· 417 423 navigate({ 418 424 to: "/profile/$did", 419 425 params: { did: agent.assertDid }, 420 - }) 426 + }); 421 427 } 422 428 }} 423 429 type="button"
+92 -101
src/routes/index.tsx
··· 14 14 } from "~/utils/atoms"; 15 15 //import { usePersistentStore } from "~/providers/PersistentStoreProvider"; 16 16 import { 17 - constructArbitraryQuery, 18 - constructIdentityQuery, 19 - constructInfiniteFeedSkeletonQuery, 20 - constructPostQuery, 17 + //constructArbitraryQuery, 18 + //constructIdentityQuery, 19 + //constructInfiniteFeedSkeletonQuery, 20 + //constructPostQuery, 21 21 useQueryArbitrary, 22 22 useQueryIdentity, 23 23 useQueryPreferences, 24 24 } from "~/utils/useQuery"; 25 25 26 26 export const Route = createFileRoute("/")({ 27 - loader: async ({ context }) => { 28 - const { queryClient } = context; 29 - const atomauth = store.get(authedAtom); 30 - const atomagent = store.get(agentAtom); 27 + // loader: async ({ context }) => { 28 + // const { queryClient } = context; 29 + // const atomauth = store.get(authedAtom); 30 + // const atomagent = store.get(agentAtom); 31 31 32 - let identitypds: string | undefined; 33 - const initialselectedfeed = store.get(selectedFeedUriAtom); 34 - if (atomagent && atomauth && atomagent?.did) { 35 - const identityopts = constructIdentityQuery(atomagent.did); 36 - const identityresultmaybe = 37 - await queryClient.ensureQueryData(identityopts); 38 - identitypds = identityresultmaybe?.pds; 39 - } 32 + // let identitypds: string | undefined; 33 + // const initialselectedfeed = store.get(selectedFeedUriAtom); 34 + // if (atomagent && atomauth && atomagent?.did) { 35 + // const identityopts = constructIdentityQuery(atomagent.did); 36 + // const identityresultmaybe = 37 + // await queryClient.ensureQueryData(identityopts); 38 + // identitypds = identityresultmaybe?.pds; 39 + // } 40 40 41 - const arbitraryopts = constructArbitraryQuery( 42 - initialselectedfeed ?? 43 - "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot" 44 - ); 45 - const feedGengetrecordquery = 46 - await queryClient.ensureQueryData(arbitraryopts); 47 - const feedServiceDid = (feedGengetrecordquery?.value as any)?.did; 48 - //queryClient.ensureInfiniteQueryData() 41 + // const arbitraryopts = constructArbitraryQuery( 42 + // initialselectedfeed ?? 43 + // "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot" 44 + // ); 45 + // const feedGengetrecordquery = 46 + // await queryClient.ensureQueryData(arbitraryopts); 47 + // const feedServiceDid = (feedGengetrecordquery?.value as any)?.did; 48 + // //queryClient.ensureInfiniteQueryData() 49 49 50 - const { queryKey, queryFn } = constructInfiniteFeedSkeletonQuery({ 51 - feedUri: 52 - initialselectedfeed ?? 53 - "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot", 54 - agent: atomagent ?? undefined, 55 - isAuthed: atomauth ?? false, 56 - pdsUrl: identitypds, 57 - feedServiceDid: feedServiceDid, 58 - }); 50 + // const { queryKey, queryFn } = constructInfiniteFeedSkeletonQuery({ 51 + // feedUri: 52 + // initialselectedfeed ?? 53 + // "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot", 54 + // agent: atomagent ?? undefined, 55 + // isAuthed: atomauth ?? false, 56 + // pdsUrl: identitypds, 57 + // feedServiceDid: feedServiceDid, 58 + // }); 59 59 60 - const res = await queryClient.ensureInfiniteQueryData({ 61 - queryKey, 62 - queryFn, 63 - initialPageParam: undefined as never, 64 - getNextPageParam: (lastPage: any) => lastPage.cursor as null | undefined, 65 - staleTime: Infinity, 66 - //refetchOnWindowFocus: false, 67 - //enabled: true, 68 - }); 69 - await Promise.all( 70 - res.pages.map(async (page) => { 71 - await Promise.all( 72 - page.feed.map(async (feedviewpost) => { 73 - if (!feedviewpost.post) return; 74 - // /*mass comment*/ console.log("preloading: ", feedviewpost.post); 75 - const opts = constructPostQuery(feedviewpost.post); 76 - try { 77 - await queryClient.ensureQueryData(opts); 78 - } catch (e) { 79 - // /*mass comment*/ console.log(" failed:", e); 80 - } 81 - }) 82 - ); 83 - }) 84 - ); 85 - }, 60 + // const res = await queryClient.ensureInfiniteQueryData({ 61 + // queryKey, 62 + // queryFn, 63 + // initialPageParam: undefined as never, 64 + // getNextPageParam: (lastPage: any) => lastPage.cursor as null | undefined, 65 + // staleTime: Infinity, 66 + // //refetchOnWindowFocus: false, 67 + // //enabled: true, 68 + // }); 69 + // await Promise.all( 70 + // res.pages.map(async (page) => { 71 + // await Promise.all( 72 + // page.feed.map(async (feedviewpost) => { 73 + // if (!feedviewpost.post) return; 74 + // // /*mass comment*/ console.log("preloading: ", feedviewpost.post); 75 + // const opts = constructPostQuery(feedviewpost.post); 76 + // try { 77 + // await queryClient.ensureQueryData(opts); 78 + // } catch (e) { 79 + // // /*mass comment*/ console.log(" failed:", e); 80 + // } 81 + // }) 82 + // ); 83 + // }) 84 + // ); 85 + // }, 86 86 component: Home, 87 - pendingComponent: PendingHome, 87 + pendingComponent: PendingHome, // PendingHome, 88 + staticData: { keepAlive: true }, 88 89 }); 89 90 function PendingHome() { 90 91 return <div>loading... (prefetching your timeline)</div>; 91 92 } 92 - function Home() { 93 + 94 + //function Homer() { 95 + // return <div></div> 96 + //} 97 + export function Home({ hidden = false }: { hidden?: boolean }) { 93 98 const { 94 99 agent, 95 100 status, ··· 292 297 feedScrollPositionsAtom 293 298 ); 294 299 295 - const scrollRef = React.useRef<Record<string, number>>({}); 300 + const scrollPositionsRef = React.useRef(scrollPositions); 296 301 297 - useEffect(() => { 298 - const onScroll = () => { 299 - //if (!selectedFeed) return; 300 - scrollRef.current[selectedFeed ?? "null"] = window.scrollY; 301 - }; 302 - window.addEventListener("scroll", onScroll, { passive: true }); 303 - return () => window.removeEventListener("scroll", onScroll); 304 - }, [selectedFeed]); 305 - const [donerestored, setdonerestored] = React.useState(false); 302 + React.useEffect(() => { 303 + scrollPositionsRef.current = scrollPositions; 304 + }, [scrollPositions]); 306 305 307 - useEffect(() => { 308 - return () => { 309 - if (!donerestored) return; 310 - // /*mass comment*/ console.log("FEEDSCROLLSHIT saving at uhhh: ", scrollRef.current); 311 - //if (!selectedFeed) return; 312 - setScrollPositions((prev) => ({ 313 - ...prev, 314 - [selectedFeed ?? "null"]: 315 - scrollRef.current[selectedFeed ?? "null"] ?? 0, 316 - })); 317 - }; 318 - }, [selectedFeed, setScrollPositions, donerestored]); 306 + useLayoutEffect(() => { 307 + const savedPosition = scrollPositions[selectedFeed ?? "null"] ?? 0; 319 308 320 - const [restoringScrollPosition, setRestoringScrollPosition] = 321 - React.useState(false); 309 + window.scrollTo({ top: savedPosition, behavior: "instant" }); 310 + // eslint-disable-next-line react-hooks/exhaustive-deps 311 + }, [selectedFeed]); 322 312 323 313 useLayoutEffect(() => { 324 - setRestoringScrollPosition(true); 325 - const savedPosition = scrollPositions[selectedFeed ?? "null"] ?? 0; 314 + if (!selectedFeed) return; 315 + 316 + const handleScroll = () => { 317 + scrollPositionsRef.current = { 318 + ...scrollPositionsRef.current, 319 + [selectedFeed]: window.scrollY, 320 + }; 321 + }; 326 322 327 - const raf = requestAnimationFrame(() => { 328 - // setRestoringScrollPosition(true); 329 - // raf = requestAnimationFrame(() => { 330 - // window.scrollTo({ top: savedPosition, behavior: "instant" }); 331 - // setRestoringScrollPosition(false); 332 - // setdonerestored(true); 333 - // }); 334 - window.scrollTo({ top: savedPosition, behavior: "instant" }); 335 - setRestoringScrollPosition(false); 336 - setdonerestored(true); 337 - }); 323 + window.addEventListener("scroll", handleScroll, { passive: true }); 324 + return () => { 325 + window.removeEventListener("scroll", handleScroll); 338 326 339 - return () => cancelAnimationFrame(raf); 340 - }, [selectedFeed, scrollPositions]); 327 + setScrollPositions(scrollPositionsRef.current); 328 + }; 329 + }, [selectedFeed, setScrollPositions]); 341 330 342 331 const feedGengetrecordquery = useQueryArbitrary(selectedFeed ?? undefined); 343 332 const feedServiceDid = (feedGengetrecordquery?.data?.value as any)?.did; ··· 361 350 const isReadyForUnauthedFeed = !authed && selectedFeed; 362 351 363 352 return ( 364 - <div className="relative flex flex-col divide-y divide-gray-200 dark:divide-gray-800"> 353 + <div 354 + className={`relative flex flex-col divide-y divide-gray-200 dark:divide-gray-800 ${hidden && "hidden"}`} 355 + > 365 356 <div className="flex items-center gap-2 px-4 py-2 h-[52px] sticky top-0 bg-white dark:bg-gray-950 z-10 border-b border-gray-200 dark:border-gray-700 overflow-x-auto overflow-y-hidden scroll-thin"> 366 357 {savedFeeds.length > 0 ? ( 367 358 savedFeeds.map((item: any, idx: number) => {