This repository has no description
0

Configure Feed

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

Merge branch 'main' into bug-fix/getCards-cannot-find-repo

author
Wesley Finck
committer
GitHub
date (Feb 18, 2026, 10:03 AM -0800) commit 26269daf parent a317fc31
+108 -220
+21 -215
package-lock.json
··· 5872 5872 "node": ">=10" 5873 5873 } 5874 5874 }, 5875 - "node_modules/@parcel/optimizer-swc/node_modules/@swc/helpers": { 5876 - "version": "0.5.17", 5877 - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", 5878 - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", 5879 - "dev": true, 5880 - "optional": true, 5881 - "peer": true, 5882 - "dependencies": { 5883 - "tslib": "^2.8.0" 5884 - } 5885 - }, 5886 5875 "node_modules/@parcel/package-manager": { 5887 5876 "version": "2.9.3", 5888 5877 "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.9.3.tgz", ··· 7032 7021 "version": "2.5.1", 7033 7022 "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", 7034 7023 "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", 7035 - "dev": true, 7024 + "devOptional": true, 7036 7025 "hasInstallScript": true, 7037 7026 "dependencies": { 7038 7027 "detect-libc": "^1.0.3", ··· 7070 7059 "cpu": [ 7071 7060 "arm64" 7072 7061 ], 7073 - "dev": true, 7074 7062 "optional": true, 7075 7063 "os": [ 7076 7064 "android" 7077 7065 ], 7078 - "peer": true, 7079 7066 "engines": { 7080 7067 "node": ">= 10.0.0" 7081 7068 }, ··· 7091 7078 "cpu": [ 7092 7079 "arm64" 7093 7080 ], 7094 - "dev": true, 7095 7081 "optional": true, 7096 7082 "os": [ 7097 7083 "darwin" 7098 7084 ], 7099 - "peer": true, 7100 7085 "engines": { 7101 7086 "node": ">= 10.0.0" 7102 7087 }, ··· 7112 7097 "cpu": [ 7113 7098 "x64" 7114 7099 ], 7115 - "dev": true, 7116 7100 "optional": true, 7117 7101 "os": [ 7118 7102 "darwin" 7119 7103 ], 7120 - "peer": true, 7121 7104 "engines": { 7122 7105 "node": ">= 10.0.0" 7123 7106 }, ··· 7133 7116 "cpu": [ 7134 7117 "x64" 7135 7118 ], 7136 - "dev": true, 7137 7119 "optional": true, 7138 7120 "os": [ 7139 7121 "freebsd" 7140 7122 ], 7141 - "peer": true, 7142 7123 "engines": { 7143 7124 "node": ">= 10.0.0" 7144 7125 }, ··· 7154 7135 "cpu": [ 7155 7136 "arm" 7156 7137 ], 7157 - "dev": true, 7158 7138 "optional": true, 7159 7139 "os": [ 7160 7140 "linux" 7161 7141 ], 7162 - "peer": true, 7163 7142 "engines": { 7164 7143 "node": ">= 10.0.0" 7165 7144 }, ··· 7175 7154 "cpu": [ 7176 7155 "arm" 7177 7156 ], 7178 - "dev": true, 7179 7157 "optional": true, 7180 7158 "os": [ 7181 7159 "linux" 7182 7160 ], 7183 - "peer": true, 7184 7161 "engines": { 7185 7162 "node": ">= 10.0.0" 7186 7163 }, ··· 7196 7173 "cpu": [ 7197 7174 "arm64" 7198 7175 ], 7199 - "dev": true, 7200 7176 "optional": true, 7201 7177 "os": [ 7202 7178 "linux" 7203 7179 ], 7204 - "peer": true, 7205 7180 "engines": { 7206 7181 "node": ">= 10.0.0" 7207 7182 }, ··· 7217 7192 "cpu": [ 7218 7193 "arm64" 7219 7194 ], 7220 - "dev": true, 7221 7195 "optional": true, 7222 7196 "os": [ 7223 7197 "linux" 7224 7198 ], 7225 - "peer": true, 7226 7199 "engines": { 7227 7200 "node": ">= 10.0.0" 7228 7201 }, ··· 7238 7211 "cpu": [ 7239 7212 "x64" 7240 7213 ], 7241 - "dev": true, 7242 7214 "optional": true, 7243 7215 "os": [ 7244 7216 "linux" 7245 7217 ], 7246 - "peer": true, 7247 7218 "engines": { 7248 7219 "node": ">= 10.0.0" 7249 7220 }, ··· 7259 7230 "cpu": [ 7260 7231 "x64" 7261 7232 ], 7262 - "dev": true, 7263 7233 "optional": true, 7264 7234 "os": [ 7265 7235 "linux" 7266 7236 ], 7267 - "peer": true, 7268 7237 "engines": { 7269 7238 "node": ">= 10.0.0" 7270 7239 }, ··· 7280 7249 "cpu": [ 7281 7250 "arm64" 7282 7251 ], 7283 - "dev": true, 7284 7252 "optional": true, 7285 7253 "os": [ 7286 7254 "win32" 7287 7255 ], 7288 - "peer": true, 7289 7256 "engines": { 7290 7257 "node": ">= 10.0.0" 7291 7258 }, ··· 7301 7268 "cpu": [ 7302 7269 "ia32" 7303 7270 ], 7304 - "dev": true, 7305 7271 "optional": true, 7306 7272 "os": [ 7307 7273 "win32" 7308 7274 ], 7309 - "peer": true, 7310 7275 "engines": { 7311 7276 "node": ">= 10.0.0" 7312 7277 }, ··· 7322 7287 "cpu": [ 7323 7288 "x64" 7324 7289 ], 7325 - "dev": true, 7326 7290 "optional": true, 7327 7291 "os": [ 7328 7292 "win32" 7329 7293 ], 7330 - "peer": true, 7331 7294 "engines": { 7332 7295 "node": ">= 10.0.0" 7333 7296 }, ··· 7340 7303 "version": "1.0.3", 7341 7304 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 7342 7305 "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 7343 - "dev": true, 7306 + "devOptional": true, 7344 7307 "bin": { 7345 7308 "detect-libc": "bin/detect-libc.js" 7346 7309 }, ··· 8894 8857 "node": ">=10" 8895 8858 } 8896 8859 }, 8897 - "node_modules/@plasmohq/parcel-transformer-vue/node_modules/react": { 8898 - "version": "18.3.1", 8899 - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", 8900 - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", 8901 - "dev": true, 8902 - "optional": true, 8903 - "peer": true, 8904 - "dependencies": { 8905 - "loose-envify": "^1.1.0" 8906 - }, 8907 - "engines": { 8908 - "node": ">=0.10.0" 8909 - } 8910 - }, 8911 - "node_modules/@plasmohq/parcel-transformer-vue/node_modules/react-dom": { 8912 - "version": "18.3.1", 8913 - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", 8914 - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", 8915 - "dev": true, 8916 - "optional": true, 8917 - "peer": true, 8918 - "dependencies": { 8919 - "loose-envify": "^1.1.0", 8920 - "scheduler": "^0.23.2" 8921 - }, 8922 - "peerDependencies": { 8923 - "react": "^18.3.1" 8924 - } 8925 - }, 8926 - "node_modules/@plasmohq/parcel-transformer-vue/node_modules/scheduler": { 8927 - "version": "0.23.2", 8928 - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", 8929 - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", 8930 - "dev": true, 8931 - "optional": true, 8932 - "peer": true, 8933 - "dependencies": { 8934 - "loose-envify": "^1.1.0" 8935 - } 8936 - }, 8937 8860 "node_modules/@plasmohq/parcel-transformer-vue/node_modules/semver": { 8938 8861 "version": "7.5.4", 8939 8862 "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", ··· 10189 10112 "os": [ 10190 10113 "darwin" 10191 10114 ], 10192 - "peer": true, 10193 10115 "engines": { 10194 10116 "node": ">=10" 10195 10117 } ··· 10206 10128 "os": [ 10207 10129 "darwin" 10208 10130 ], 10209 - "peer": true, 10210 10131 "engines": { 10211 10132 "node": ">=10" 10212 10133 } ··· 10223 10144 "os": [ 10224 10145 "linux" 10225 10146 ], 10226 - "peer": true, 10227 10147 "engines": { 10228 10148 "node": ">=10" 10229 10149 } ··· 10240 10160 "os": [ 10241 10161 "linux" 10242 10162 ], 10243 - "peer": true, 10244 10163 "engines": { 10245 10164 "node": ">=10" 10246 10165 } ··· 10257 10176 "os": [ 10258 10177 "linux" 10259 10178 ], 10260 - "peer": true, 10261 10179 "engines": { 10262 10180 "node": ">=10" 10263 10181 } ··· 10274 10192 "os": [ 10275 10193 "linux" 10276 10194 ], 10277 - "peer": true, 10278 10195 "engines": { 10279 10196 "node": ">=10" 10280 10197 } ··· 10291 10208 "os": [ 10292 10209 "linux" 10293 10210 ], 10294 - "peer": true, 10295 10211 "engines": { 10296 10212 "node": ">=10" 10297 10213 } ··· 10308 10224 "os": [ 10309 10225 "win32" 10310 10226 ], 10311 - "peer": true, 10312 10227 "engines": { 10313 10228 "node": ">=10" 10314 10229 } ··· 10325 10240 "os": [ 10326 10241 "win32" 10327 10242 ], 10328 - "peer": true, 10329 10243 "engines": { 10330 10244 "node": ">=10" 10331 10245 } ··· 10342 10256 "os": [ 10343 10257 "win32" 10344 10258 ], 10345 - "peer": true, 10346 10259 "engines": { 10347 10260 "node": ">=10" 10348 10261 } ··· 12930 12843 "version": "3.0.3", 12931 12844 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 12932 12845 "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 12933 - "dev": true, 12846 + "devOptional": true, 12934 12847 "dependencies": { 12935 12848 "fill-range": "^7.1.1" 12936 12849 }, ··· 14301 14214 "node": ">=4" 14302 14215 } 14303 14216 }, 14304 - "node_modules/csso": { 14305 - "version": "5.0.5", 14306 - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", 14307 - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", 14308 - "dev": true, 14309 - "optional": true, 14310 - "peer": true, 14311 - "dependencies": { 14312 - "css-tree": "~2.2.0" 14313 - }, 14314 - "engines": { 14315 - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 14316 - "npm": ">=7.0.0" 14317 - } 14318 - }, 14319 - "node_modules/csso/node_modules/css-tree": { 14320 - "version": "2.2.1", 14321 - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", 14322 - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", 14323 - "dev": true, 14324 - "optional": true, 14325 - "peer": true, 14326 - "dependencies": { 14327 - "mdn-data": "2.0.28", 14328 - "source-map-js": "^1.0.1" 14329 - }, 14330 - "engines": { 14331 - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 14332 - "npm": ">=7.0.0" 14333 - } 14334 - }, 14335 - "node_modules/csso/node_modules/mdn-data": { 14336 - "version": "2.0.28", 14337 - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", 14338 - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", 14339 - "dev": true, 14340 - "optional": true, 14341 - "peer": true 14342 - }, 14343 14217 "node_modules/cssstyle": { 14344 14218 "version": "4.6.0", 14345 14219 "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", ··· 15221 15095 "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 15222 15096 "dev": true, 15223 15097 "optional": true, 15224 - "peer": true, 15225 15098 "dependencies": { 15226 15099 "prr": "~1.0.1" 15227 15100 }, ··· 16632 16505 "version": "7.1.1", 16633 16506 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 16634 16507 "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 16635 - "dev": true, 16508 + "devOptional": true, 16636 16509 "dependencies": { 16637 16510 "to-regex-range": "^5.0.1" 16638 16511 }, ··· 17635 17508 "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 17636 17509 "dev": true, 17637 17510 "optional": true, 17638 - "peer": true, 17639 17511 "bin": { 17640 17512 "image-size": "bin/image-size.js" 17641 17513 }, ··· 18021 17893 "version": "2.1.1", 18022 17894 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 18023 17895 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 18024 - "dev": true, 17896 + "devOptional": true, 18025 17897 "engines": { 18026 17898 "node": ">=0.10.0" 18027 17899 } ··· 18082 17954 "version": "4.0.3", 18083 17955 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 18084 17956 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 18085 - "dev": true, 17957 + "devOptional": true, 18086 17958 "dependencies": { 18087 17959 "is-extglob": "^2.1.1" 18088 17960 }, ··· 18133 18005 "version": "7.0.0", 18134 18006 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 18135 18007 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 18136 - "dev": true, 18008 + "devOptional": true, 18137 18009 "engines": { 18138 18010 "node": ">=0.12.0" 18139 18011 } ··· 18512 18384 "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", 18513 18385 "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", 18514 18386 "dev": true, 18387 + "license": "MIT", 18515 18388 "dependencies": { 18516 18389 "@jest/core": "^29.7.0", 18517 18390 "@jest/types": "^29.6.3", ··· 19527 19400 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 19528 19401 "dev": true, 19529 19402 "optional": true, 19530 - "peer": true, 19531 19403 "dependencies": { 19532 19404 "pify": "^4.0.1", 19533 19405 "semver": "^5.6.0" ··· 19542 19414 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 19543 19415 "dev": true, 19544 19416 "optional": true, 19545 - "peer": true, 19546 19417 "bin": { 19547 19418 "mime": "cli.js" 19548 19419 }, ··· 19556 19427 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 19557 19428 "dev": true, 19558 19429 "optional": true, 19559 - "peer": true, 19560 19430 "bin": { 19561 19431 "semver": "bin/semver" 19562 19432 } ··· 19567 19437 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 19568 19438 "dev": true, 19569 19439 "optional": true, 19570 - "peer": true, 19571 19440 "engines": { 19572 19441 "node": ">=0.10.0" 19573 19442 } ··· 19635 19504 "os": [ 19636 19505 "android" 19637 19506 ], 19638 - "peer": true, 19639 19507 "engines": { 19640 19508 "node": ">= 12.0.0" 19641 19509 }, ··· 19656 19524 "os": [ 19657 19525 "darwin" 19658 19526 ], 19659 - "peer": true, 19660 19527 "engines": { 19661 19528 "node": ">= 12.0.0" 19662 19529 }, ··· 19677 19544 "os": [ 19678 19545 "darwin" 19679 19546 ], 19680 - "peer": true, 19681 19547 "engines": { 19682 19548 "node": ">= 12.0.0" 19683 19549 }, ··· 19698 19564 "os": [ 19699 19565 "freebsd" 19700 19566 ], 19701 - "peer": true, 19702 19567 "engines": { 19703 19568 "node": ">= 12.0.0" 19704 19569 }, ··· 19719 19584 "os": [ 19720 19585 "linux" 19721 19586 ], 19722 - "peer": true, 19723 19587 "engines": { 19724 19588 "node": ">= 12.0.0" 19725 19589 }, ··· 19740 19604 "os": [ 19741 19605 "linux" 19742 19606 ], 19743 - "peer": true, 19744 19607 "engines": { 19745 19608 "node": ">= 12.0.0" 19746 19609 }, ··· 19761 19624 "os": [ 19762 19625 "linux" 19763 19626 ], 19764 - "peer": true, 19765 19627 "engines": { 19766 19628 "node": ">= 12.0.0" 19767 19629 }, ··· 19782 19644 "os": [ 19783 19645 "linux" 19784 19646 ], 19785 - "peer": true, 19786 19647 "engines": { 19787 19648 "node": ">= 12.0.0" 19788 19649 }, ··· 19803 19664 "os": [ 19804 19665 "linux" 19805 19666 ], 19806 - "peer": true, 19807 19667 "engines": { 19808 19668 "node": ">= 12.0.0" 19809 19669 }, ··· 19824 19684 "os": [ 19825 19685 "win32" 19826 19686 ], 19827 - "peer": true, 19828 19687 "engines": { 19829 19688 "node": ">= 12.0.0" 19830 19689 }, ··· 19845 19704 "os": [ 19846 19705 "win32" 19847 19706 ], 19848 - "peer": true, 19849 19707 "engines": { 19850 19708 "node": ">= 12.0.0" 19851 19709 }, ··· 20965 20823 "version": "4.0.8", 20966 20824 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 20967 20825 "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 20968 - "dev": true, 20826 + "devOptional": true, 20969 20827 "dependencies": { 20970 20828 "braces": "^3.0.3", 20971 20829 "picomatch": "^2.3.1" ··· 20978 20836 "version": "2.3.1", 20979 20837 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 20980 20838 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 20981 - "dev": true, 20839 + "devOptional": true, 20982 20840 "engines": { 20983 20841 "node": ">=8.6" 20984 20842 }, ··· 21246 21104 "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 21247 21105 "dev": true, 21248 21106 "optional": true, 21249 - "peer": true, 21250 21107 "dependencies": { 21251 21108 "iconv-lite": "^0.6.3", 21252 21109 "sax": "^1.2.4" ··· 21359 21216 "version": "7.1.1", 21360 21217 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", 21361 21218 "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", 21362 - "dev": true 21219 + "devOptional": true 21363 21220 }, 21364 21221 "node_modules/node-fetch": { 21365 21222 "version": "2.7.0", ··· 22320 22177 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 22321 22178 "dev": true, 22322 22179 "optional": true, 22323 - "peer": true, 22324 22180 "engines": { 22325 22181 "node": ">=6" 22326 22182 } ··· 23550 23406 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 23551 23407 "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 23552 23408 "dev": true, 23553 - "optional": true, 23554 - "peer": true 23409 + "optional": true 23555 23410 }, 23556 23411 "node_modules/pstree.remy": { 23557 23412 "version": "1.1.8", ··· 24684 24539 "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", 24685 24540 "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", 24686 24541 "dev": true, 24687 - "optional": true, 24688 - "peer": true 24542 + "optional": true 24689 24543 }, 24690 24544 "node_modules/saxes": { 24691 24545 "version": "6.0.0", ··· 25114 24968 "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 25115 24969 "dev": true 25116 24970 }, 25117 - "node_modules/srcset": { 25118 - "version": "5.0.1", 25119 - "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.1.tgz", 25120 - "integrity": "sha512-/P1UYbGfJVlxZag7aABNRrulEXAwCSDo7fklafOQrantuPTDmYgijJMks2zusPCVzgW9+4P69mq7w6pYuZpgxw==", 25121 - "dev": true, 25122 - "optional": true, 25123 - "peer": true, 25124 - "engines": { 25125 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 25126 - }, 25127 - "funding": { 25128 - "url": "https://github.com/sponsors/sindresorhus" 25129 - } 25130 - }, 25131 24971 "node_modules/ssh-remote-port-forward": { 25132 24972 "version": "1.0.4", 25133 24973 "resolved": "https://registry.npmjs.org/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz", ··· 25878 25718 "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", 25879 25719 "dev": true 25880 25720 }, 25881 - "node_modules/svgo": { 25882 - "version": "3.3.2", 25883 - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", 25884 - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", 25885 - "dev": true, 25886 - "optional": true, 25887 - "peer": true, 25888 - "dependencies": { 25889 - "@trysound/sax": "0.2.0", 25890 - "commander": "^7.2.0", 25891 - "css-select": "^5.1.0", 25892 - "css-tree": "^2.3.1", 25893 - "css-what": "^6.1.0", 25894 - "csso": "^5.0.5", 25895 - "picocolors": "^1.0.0" 25896 - }, 25897 - "bin": { 25898 - "svgo": "bin/svgo" 25899 - }, 25900 - "engines": { 25901 - "node": ">=14.0.0" 25902 - }, 25903 - "funding": { 25904 - "type": "opencollective", 25905 - "url": "https://opencollective.com/svgo" 25906 - } 25907 - }, 25908 - "node_modules/svgo/node_modules/commander": { 25909 - "version": "7.2.0", 25910 - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 25911 - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 25912 - "dev": true, 25913 - "optional": true, 25914 - "peer": true, 25915 - "engines": { 25916 - "node": ">= 10" 25917 - } 25918 - }, 25919 25721 "node_modules/symbol-tree": { 25920 25722 "version": "3.2.4", 25921 25723 "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", ··· 26242 26044 "version": "5.0.1", 26243 26045 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 26244 26046 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 26245 - "dev": true, 26047 + "devOptional": true, 26246 26048 "dependencies": { 26247 26049 "is-number": "^7.0.0" 26248 26050 }, ··· 26352 26154 "dev": true 26353 26155 }, 26354 26156 "node_modules/ts-jest": { 26355 - "version": "29.4.5", 26356 - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", 26357 - "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", 26157 + "version": "29.4.6", 26158 + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", 26159 + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", 26358 26160 "dev": true, 26161 + "license": "MIT", 26359 26162 "dependencies": { 26360 26163 "bs-logger": "^0.2.6", 26361 26164 "fast-json-stable-stringify": "^2.1.0", ··· 28049 27852 "url-metadata": "^5.2.3" 28050 27853 }, 28051 27854 "devDependencies": { 27855 + "@types/jest": "^29.5.14", 28052 27856 "@types/node": "^20.10.4", 27857 + "jest": "^29.7.0", 27858 + "ts-jest": "^29.4.6", 28053 27859 "typescript": "^5.8.3" 28054 27860 } 28055 27861 },
+5 -2
src/packages/semble-pds-client/package.json
··· 17 17 "url-metadata": "^5.2.3" 18 18 }, 19 19 "devDependencies": { 20 - "typescript": "^5.8.3", 21 - "@types/node": "^20.10.4" 20 + "@types/jest": "^29.5.14", 21 + "@types/node": "^20.10.4", 22 + "jest": "^29.7.0", 23 + "ts-jest": "^29.4.6", 24 + "typescript": "^5.8.3" 22 25 }, 23 26 "keywords": [ 24 27 "atproto",
+74
src/packages/semble-pds-client/src/cards/CardManager.test.ts
··· 1 + import { CardManager } from './CardManager'; 2 + 3 + describe('CardManager', () => { 4 + let cardManager: CardManager; 5 + let mockAgent: any; 6 + 7 + beforeEach(() => { 8 + mockAgent = { 9 + session: { did: 'did:plc:test123' }, 10 + com: { 11 + atproto: { 12 + repo: { 13 + getRecord: jest.fn(), 14 + putRecord: jest.fn(), 15 + createRecord: jest.fn(), 16 + }, 17 + }, 18 + }, 19 + }; 20 + cardManager = new CardManager(mockAgent, 'app.semble', 'app.semble.card'); 21 + }); 22 + 23 + it('should preserve all fields when updating note', async () => { 24 + const existingRecord = { 25 + data: { 26 + value: { 27 + $type: 'app.semble.card', 28 + type: 'NOTE', 29 + url: 'https://example.com', 30 + content: { 31 + $type: 'app.semble.card#noteContent', 32 + text: 'Old text', 33 + }, 34 + parentCard: { 35 + uri: 'at://did:plc:parent/app.semble.card/123', 36 + cid: 'bafycid123', 37 + }, 38 + createdAt: '2024-01-01T00:00:00.000Z', 39 + }, 40 + }, 41 + }; 42 + 43 + mockAgent.com.atproto.repo.getRecord.mockResolvedValue(existingRecord); 44 + 45 + await cardManager.updateNote( 46 + { uri: 'at://did:plc:test123/app.semble.card/456', cid: 'bafycid456' }, 47 + 'New text', 48 + ); 49 + 50 + const putRecordCall = mockAgent.com.atproto.repo.putRecord.mock.calls[0][0]; 51 + 52 + // Check all fields are preserved 53 + expect(putRecordCall.repo).toBe('did:plc:test123'); 54 + expect(putRecordCall.collection).toBe('app.semble.card'); 55 + expect(putRecordCall.rkey).toBe('456'); 56 + 57 + // Check record structure 58 + expect(putRecordCall.record.$type).toBe('app.semble.card'); 59 + expect(putRecordCall.record.type).toBe('NOTE'); 60 + expect(putRecordCall.record.url).toBe('https://example.com'); // ✅ Preserved 61 + expect(putRecordCall.record.content.text).toBe('New text'); // ✅ Updated 62 + expect(putRecordCall.record.content.$type).toBe( 63 + 'app.semble.card#noteContent', 64 + ); 65 + expect(putRecordCall.record.parentCard).toEqual({ 66 + // ✅ Preserved 67 + uri: 'at://did:plc:parent/app.semble.card/123', 68 + cid: 'bafycid123', 69 + }); 70 + expect(putRecordCall.record.createdAt).toBe('2024-01-01T00:00:00.000Z'); // ✅ Preserved 71 + expect(putRecordCall.record.updatedAt).toBeDefined(); // ✅ Added 72 + expect(typeof putRecordCall.record.updatedAt).toBe('string'); 73 + }); 74 + });
+8 -3
src/packages/semble-pds-client/src/cards/CardManager.ts
··· 142 142 143 143 const rkey = this.extractRkey(noteRef.uri); 144 144 145 + const existing = await this.agent.com.atproto.repo.getRecord({ 146 + repo: this.agent.session.did, 147 + collection: this.cardCollection, 148 + rkey, 149 + }); 150 + 145 151 const record = { 146 - $type: this.cardCollection, 147 - type: 'NOTE', 152 + ...existing.data.value, 148 153 content: { 149 154 $type: `${this.baseNsid}.card#noteContent`, 150 155 text: updatedText, 151 156 }, 152 - createdAt: new Date().toISOString(), 157 + updatedAt: new Date().toISOString(), 153 158 }; 154 159 155 160 await this.agent.com.atproto.repo.putRecord({