fix rebase conflicts

This commit is contained in:
Samuel Newman
2026-07-30 21:10:22 +03:00
parent c582230659
commit 0ed770be93
26 changed files with 635 additions and 134 deletions
+12 -7
View File
@@ -102,6 +102,7 @@
"app.bsky.graph.muteActorList",
"app.bsky.graph.muteThread",
"app.bsky.graph.searchStarterPacks",
"app.bsky.graph.searchStarterPacksV2",
"app.bsky.graph.starterpack",
"app.bsky.graph.unmuteActor",
"app.bsky.graph.unmuteActorList",
@@ -328,7 +329,7 @@
},
"app.bsky.ageassurance.defs": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.ageassurance.defs",
"cid": "bafyreibb6kioccml6lypjq4zkaalhtpcxzqb2kcsjjhkdbffrcjz5chjbu"
"cid": "bafyreicbjiikqdyvklyrzrxhoubciaxxb2ysx45jv3xhtiiyt3kcnbtvc4"
},
"app.bsky.ageassurance.getConfig": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.ageassurance.getConfig",
@@ -604,11 +605,11 @@
},
"app.bsky.graph.getFollowers": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.getFollowers",
"cid": "bafyreihf2jjv2tchwfe4xphzjifr6ig52rdnfg3gq5m6q4hevcmz2zib6y"
"cid": "bafyreierv27tiobzlp6gvxcly22sc6pt4opbuh4q6l2f3h6drhykb5s7ba"
},
"app.bsky.graph.getFollows": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.getFollows",
"cid": "bafyreifih5zxzuhtazq6h2hzb2lfjnshyhgc2wy3mprhegqallprsi3mzy"
"cid": "bafyreieajs5563pt6exwgkz2z3lz3l6tpxkvttb2vtbdhgsor7xedq5gtm"
},
"app.bsky.graph.getKnownFollowers": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.getKnownFollowers",
@@ -686,6 +687,10 @@
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.searchStarterPacks",
"cid": "bafyreiccilccjcf6owlhgwu742ipbi5xfooa4aolkg6cuhnnplgyfveel4"
},
"app.bsky.graph.searchStarterPacksV2": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.searchStarterPacksV2",
"cid": "bafyreifzm4bcm3tw26peaor6u2ebj7qehfapnjyazhfj5tp6r2zikvet54"
},
"app.bsky.graph.starterpack": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.graph.starterpack",
"cid": "bafyreih6wyvcj4gbkywomzbgj5rx742wz6qewew75xne43d4wld37u3ena"
@@ -740,7 +745,7 @@
},
"app.bsky.notification.listNotifications": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.notification.listNotifications",
"cid": "bafyreigousmnsubjootrgwbw4ktxqw7wt6ch7x3lqdluczpbx3jnt5ig4q"
"cid": "bafyreibnnyxsg2ow6pox2e76cijt7dzkv22qxpxrytb7vqyiv723xrn2tm"
},
"app.bsky.notification.putActivitySubscription": {
"uri": "at://did:plc:4v4y5r3lwsbtmsxhile2ljac/com.atproto.lexicon.schema/app.bsky.notification.putActivitySubscription",
@@ -772,7 +777,7 @@
},
"app.bsky.unspecced.defs": {
"uri": "at://did:plc:placeholder00000000000000000000/com.atproto.lexicon.schema/app.bsky.unspecced.defs",
"cid": "bafyreihd4bjmbxtrkx2m4xuiaisuguenbd5d23qsbu5njo3xxib7skwfbe"
"cid": "bafyreia54pdzsurj6zqgluzt6klyborq2kq75zgaphnkeyxz3q2uozzepi"
},
"app.bsky.unspecced.getAgeAssuranceState": {
"uri": "at://did:plc:placeholder00000000000000000000/com.atproto.lexicon.schema/app.bsky.unspecced.getAgeAssuranceState",
@@ -852,7 +857,7 @@
},
"app.bsky.unspecced.getTrends": {
"uri": "at://did:plc:placeholder00000000000000000000/com.atproto.lexicon.schema/app.bsky.unspecced.getTrends",
"cid": "bafyreif5uukfgnbzsb4yaqk4e6zjb3gxei42bodsxka7t6viq6lxnox4mq"
"cid": "bafyreihrlvlry47lhborwurq7b2onjxt6nrtgk2yfqrqgy6kjra56aoyvq"
},
"app.bsky.unspecced.getTrendsSkeleton": {
"uri": "at://did:plc:placeholder00000000000000000000/com.atproto.lexicon.schema/app.bsky.unspecced.getTrendsSkeleton",
@@ -1507,4 +1512,4 @@
"cid": "bafyreifj3hxfarkbpbcnjbckaljyyrwmrbaz3sy4ttx5pbzrdv7ea2pmby"
}
}
}
}
+8
View File
@@ -64,6 +64,14 @@
"description": "The Age Assurance configuration for a specific region.",
"required": ["countryCode", "minAccessAge", "rules"],
"properties": {
"platforms": {
"type": "array",
"description": "The platforms this configuration applies to. If omitted, the configuration applies to all platforms.",
"items": {
"type": "string",
"knownValues": ["web", "ios", "android"]
}
},
"countryCode": {
"type": "string",
"description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
@@ -21,6 +21,10 @@
},
"cursor": {
"type": "string"
},
"sort": {
"type": "string",
"knownValues": ["latest", "top"]
}
}
},
+4
View File
@@ -21,6 +21,10 @@
},
"cursor": {
"type": "string"
},
"sort": {
"type": "string",
"knownValues": ["latest", "top"]
}
}
},
@@ -0,0 +1,52 @@
{
"lexicon": 1,
"id": "app.bsky.graph.searchStarterPacksV2",
"defs": {
"main": {
"type": "query",
"description": "Find starter packs matching search criteria. Does not require auth.",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string"
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"cursor": {
"type": "string"
},
"hitsTotal": {
"type": "integer",
"description": "Estimated total number of matching hits. May be rounded or truncated."
},
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackView"
}
}
}
}
}
}
}
}
@@ -111,6 +111,11 @@
"record": {
"type": "unknown"
},
"starterPack": {
"description": "The starter pack associated with this notification. Present when the notification is for a follow originating from a starter pack.",
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackViewBasic"
},
"isRead": {
"type": "boolean"
},
+6
View File
@@ -67,6 +67,9 @@
"displayName": {
"type": "string"
},
"description": {
"type": "string"
},
"link": {
"type": "string"
},
@@ -110,6 +113,9 @@
"displayName": {
"type": "string"
},
"description": {
"type": "string"
},
"link": {
"type": "string"
},
@@ -28,6 +28,10 @@
"type": "ref",
"ref": "app.bsky.unspecced.defs#trendView"
}
},
"recIdStr": {
"type": "string",
"description": "Snowflake for this recommendation, use when submitting recommendation events."
}
}
}
+1 -1
View File
@@ -111,8 +111,8 @@
"@bsky.app/expo-scroll-edge-effect": "^0.1.9",
"@bsky.app/expo-translate-text": "^0.2.9",
"@bsky.app/peek-menu": "^0.3.2",
"@bsky.app/react-native-uitextview": "^2.5.0",
"@bsky.app/react-native-mmkv": "2.12.5",
"@bsky.app/react-native-uitextview": "^2.5.0",
"@bsky.app/sdk": "npm:bsky-sdk-preview@0.0.1-preview.2",
"@bsky.app/sift": "^0.3.9",
"@bsky.app/tapper": "^0.6.1",
+427 -32
View File
@@ -241,12 +241,15 @@ importers:
.:
dependencies:
'@atproto/api':
specifier: 0.20.34
version: 0.20.34
'@atproto/common-web':
specifier: 0.5.6
version: 0.5.6
'@atproto/lex':
specifier: 0.3.0
version: 0.3.0
'@atproto/lex-password-session':
specifier: 0.1.8
version: 0.1.8
'@atproto/syntax':
specifier: 0.7.2
version: 0.7.2
@@ -277,9 +280,15 @@ importers:
'@bsky.app/peek-menu':
specifier: ^0.3.2
version: 0.3.2(expo@54.0.35(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@bsky.app/react-native-mmkv':
specifier: 2.12.5
version: 2.12.5(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@bsky.app/react-native-uitextview':
specifier: ^2.5.0
version: 2.5.0(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@bsky.app/sdk':
specifier: npm:bsky-sdk-preview@0.0.1-preview.2
version: bsky-sdk-preview@0.0.1-preview.2(@atproto/lex@0.3.0)
'@bsky.app/sift':
specifier: ^0.3.9
version: 0.3.9(expo@54.0.35(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
@@ -871,34 +880,99 @@ packages:
graphql:
optional: true
'@atproto/api@0.20.34':
resolution: {integrity: sha512-nKfCLkH2Al58YupLGtoVIucZ5XjtN9sU5oOTI70lp8J4nxl52C/Tk7AktcWe+Nx7st3I0fUgf+C5cHePgvwT0w==}
'@atproto-labs/did-resolver@0.3.5':
resolution: {integrity: sha512-0dMM+hj40VQiD/EJhlC1UMQgPXRwKeqM7NgJte7fVuYMv5b3P0W6+Lu3iDumHULcSjMmMXxJZzoi3i493Y0gCA==}
engines: {node: '>=22'}
'@atproto-labs/fetch@0.3.4':
resolution: {integrity: sha512-YxXwi8HMk2HHDd5rljPGqxZ8bSeU78sFNz511Y222D0FraEq98p2r1ifkIgI23KQOfy0k0VzafeJAiGDh1CvfQ==}
engines: {node: '>=22'}
'@atproto-labs/handle-resolver@0.4.6':
resolution: {integrity: sha512-a3ZoQ0xpIowFuIhvjXwaloJwT3He6NJ02FfrKaRW0tdT2GvEH6nLaVHr46ps8A4ddCz+Q4oUha9atfr4O+0P2g==}
engines: {node: '>=22'}
'@atproto-labs/pipe@0.2.4':
resolution: {integrity: sha512-n67jCcrC+ouAeO10cWkpPzzLMlDi/lDCU30Us+LGqhOPhT6c4t5ASdBLQi9W3jUQtRzQBt3G9zipF+xKWNvVbw==}
engines: {node: '>=22'}
'@atproto-labs/simple-store-memory@0.2.4':
resolution: {integrity: sha512-xAAUlOP9etqP9GGmJPq9gY1bRuJlZFdsC6wtAJSwUwMTwLRdenR7s8Qg5nxhbth5XL1XOtGABoD59NW3p+sl4A==}
engines: {node: '>=22'}
'@atproto-labs/simple-store@0.4.4':
resolution: {integrity: sha512-3YH03xg99ZUS6Fq/6jcKRiZwUbzDb58xmS7ibg0y4+dukwrHa92cV/md76RpQJkAo9KYBvwLETdvF6fNtwIoGw==}
engines: {node: '>=22'}
'@atproto/common-web@0.5.6':
resolution: {integrity: sha512-5Y4MIK9dpkJPiKiE6u7iEHitxj+g3aAU2GfGL686JlKE2zDKD4y18BJb+uVek6nXQKb5XOdNVvw+7BHarpn8Fw==}
engines: {node: '>=22'}
'@atproto/common@0.7.2':
resolution: {integrity: sha512-D43QVEnSgWhzEoelJTWouPrwdjfHPAe5xVEc5RtsA6OTKEPaEJN0LSFd495ZtanMrvvC+KrgW8Tk02C8kvp45A==}
engines: {node: '>=22'}
'@atproto/crypto@0.5.4':
resolution: {integrity: sha512-UR0BkuYNYuFtw+dA+y/oPPxzX0SWRnGJ+1Cfh/jGP1BvjRUyezK3omjpeLms5fYrXbM9vnfX+ckJFJqkBgLOdw==}
engines: {node: '>=22'}
'@atproto/did@0.5.4':
resolution: {integrity: sha512-BlnwQ+obL+4ZA71KH/EzZ3TY+cpSxnLiUI85mjBJIQwvDF/oN2sQA18wIj9jpduviIt2b/cMtlJuzHjzBkfXvw==}
engines: {node: '>=22'}
'@atproto/lex-builder@0.1.8':
resolution: {integrity: sha512-GYWisNom/J1MmFeSgMIFUgEj8yVKnvuJfyX1FwNKCczwfAunEdMy2Iiolq3JZNjWmH8uCtCWj7dg2GwQuEos7Q==}
engines: {node: '>=22'}
'@atproto/lex-cbor@0.1.4':
resolution: {integrity: sha512-1reaooZfNFunJn2Fz21Up7iFQBPZlifQKlBsRvQoLG67mv43nmH4dZWgnGLD54ShCu8dyZ8Y6Wgh7BCg+2gRSw==}
engines: {node: '>=22'}
'@atproto/lex-client@0.3.0':
resolution: {integrity: sha512-P+S3hWdIIOgNTun7J42dvxSyCkQog3Q2ShTjvcwP761TqiRex7zDWaRAaT9gvCy6I4pRuNdBCStysjSMlJeSdg==}
engines: {node: '>=22'}
'@atproto/lex-data@0.1.5':
resolution: {integrity: sha512-TEM6GHuYpNm4O90LjNgbYq1Gmcr875S+BHrDxkg4PB5w/nlsz4HlbkGQG/WP/xbIV5O8TF5nNHDpCZ5ezTRrFA==}
engines: {node: '>=22'}
'@atproto/lex-document@0.1.6':
resolution: {integrity: sha512-Yxc6LJ8tE0cntQ35ewagGbl7HOMX4jRkuEQ3ct+I43LKJBQPSk02rlwTY9A7SR/ULptN4Dn7XVqskEntWmCjWA==}
engines: {node: '>=22'}
'@atproto/lex-installer@0.1.9':
resolution: {integrity: sha512-9PdApXnwtBRGty0muK/t5CUHv18nBtkut5Q5ibDcBhYKrsVmBAVNCXLqMreC2kbZf3q5L4+IfqtqMejmAZw2Mg==}
engines: {node: '>=22'}
'@atproto/lex-json@0.1.4':
resolution: {integrity: sha512-ENR2cWkVrES+UL6TovbCRdX9BJOyHHJUS8jYx3Lxp3j4vEphjn/u+DW7bWloST2O8ID2OuVlt6+28ftNEEjmQQ==}
engines: {node: '>=22'}
'@atproto/lexicon@0.7.7':
resolution: {integrity: sha512-92VH2oEsJdrIVNy7WY8rGn99ANNVglyUffoN7GJc0mxKi+fXN5iVlJ2cOyTfYABhr2ldSiptZWXEPEdBaIR9/A==}
'@atproto/lex-password-session@0.1.8':
resolution: {integrity: sha512-Zr3HLu6rgadiq2w82VSThOQcNfwTJNlrzlT8n9oBXDBw3CUEq3cTMatzTpdk4HYqv0unaqhaEowcKhJ4eWvSxQ==}
engines: {node: '>=22'}
'@atproto/lex-resolver@0.2.2':
resolution: {integrity: sha512-/7rm1bq2me4ptNoPWOrWmlmzRSPhxbcm3BaeD0V8+OzJ5VKBrYHxqp8BBZTzqgVSmwF+TqANctUG4c/y0hkigw==}
engines: {node: '>=22'}
'@atproto/lex-schema@0.2.2':
resolution: {integrity: sha512-UFK0EH8pw31dvL27aoZ5K78z+UMiD3ybIgkCyd7Idm267KM1IpycerTDeABqo4CYP3/IAnzjGpQaUaVc12bELA==}
engines: {node: '>=22'}
'@atproto/lex@0.3.0':
resolution: {integrity: sha512-Ir5f60NrCScDMZ2JGoxUHOQm+h6XlsDSykk0HzET8/qEeHTLwnI+MJIlBwB64eBoqGQ72qAEoMc8L+bJil+huA==}
engines: {node: '>=22'}
hasBin: true
'@atproto/repo@0.10.6':
resolution: {integrity: sha512-ayX/ieAni4ZMbpdu6VMOCYIjzT8HctCQtcSBWWR8eoynsGZ6FzK/Lln6bH8i0wAj8vPV2pcecd57d33YsahRcQ==}
engines: {node: '>=22'}
'@atproto/syntax@0.7.2':
resolution: {integrity: sha512-tZ1Tr0R9pK4bI4Zs69t29cjMlCFQvRNBeNkqJC5pGeNuCt64D0eoF7s/AlqeVmYppClmQ0xJquggGgsMDP6j7w==}
engines: {node: '>=22'}
'@atproto/xrpc@0.8.6':
resolution: {integrity: sha512-yVfKrlwZBBm44Ft9jDvHcTCwQ1ElqSlzXHWhT/KcqE+u24EAhWVFosfABfGbUByB/PmN8eLJ06FsWo5pUQcMNQ==}
engines: {node: '>=22'}
'@babel/code-frame@7.10.4':
resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==}
@@ -1660,6 +1734,12 @@ packages:
react: '*'
react-native: '*'
'@bsky.app/react-native-mmkv@2.12.5':
resolution: {integrity: sha512-3vUz1nQY1DiKIPAWRkpp5ZGxH5f2G6Ui0UuQuEYjYv81xx1qFcSzS9KQ2sHcOKYdkOM9amWV2Q8TQCxt1lrAHg==}
peerDependencies:
react: '*'
react-native: '>=0.71.0'
'@bsky.app/react-native-uitextview@2.5.0':
resolution: {integrity: sha512-8DyQAJEkr0ZPEb9QMmT3088V70B6xRsY8e/jvi2oq13hCsLEXCw5M1S48xKRnr8263bJxSH0BjK0nfhPS8Myqw==}
peerDependencies:
@@ -2260,6 +2340,14 @@ packages:
'@messageformat/parser@5.1.1':
resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==}
'@noble/curves@1.9.7':
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
engines: {node: ^14.21.3 || >=16}
'@noble/hashes@1.8.0':
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
engines: {node: ^14.21.3 || >=16}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -2424,6 +2512,9 @@ packages:
cpu: [x64]
os: [win32]
'@pinojs/redact@0.4.0':
resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==}
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -3473,6 +3564,9 @@ packages:
'@sinonjs/fake-timers@10.3.0':
resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
'@tanstack/query-async-storage-persister@5.100.10':
resolution: {integrity: sha512-NbxsCI9qyMbEooFnFsAR2dbVQ6cmxZpOWSjLFy62qfMkxXnNjkskqex7YgtzWSaD/ozOOLgrbDiyYWEPYKmMyQ==}
@@ -3582,6 +3676,9 @@ packages:
resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==}
engines: {node: '>= 10'}
'@ts-morph/common@0.28.1':
resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -4160,13 +4257,14 @@ packages:
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
atomic-sleep@1.0.0:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'}
available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
await-lock@3.0.0:
resolution: {integrity: sha512-eO6fLiSnrJrMdjWMNK8zbVRXPs2TKJg78iKZd9wDpN3na5tcoV6EoeiOlMgk2QaAQ1gIrK1YuMsJHXWqz89tSA==}
babel-jest@29.7.0:
resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -4356,6 +4454,12 @@ packages:
bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
bsky-sdk-preview@0.0.1-preview.2:
resolution: {integrity: sha512-LOcuvzc6UASiI5os1BUIo9dxAeVPIFiplcVSYbaDCgpH+tkpv2mqSqqsCRTP0g2CaVCwozqaTVy+jnsTO6/9BQ==}
engines: {node: '>=22.12.0'}
peerDependencies:
'@atproto/lex': ^0.3.0
buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
@@ -4402,6 +4506,10 @@ packages:
caniuse-lite@1.0.30001792:
resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==}
cborg@4.5.8:
resolution: {integrity: sha512-6/viltD51JklRhq4L7jC3zgy6gryuG5xfZ3kzpE+PravtyeQLeQmCYLREhQH7pWENg5pY4Yu/XCd6a7dKScVlw==}
hasBin: true
cborg@5.1.1:
resolution: {integrity: sha512-BDbSRIp6XrQXkTc7g+DN0RB9RrDPTUfals2ecWUlt3juPLjbAvy/V72mJcXY0Ehu0Dq/3WpNCOCT68HUTbW+lw==}
hasBin: true
@@ -4505,6 +4613,10 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
cliui@9.0.1:
resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
engines: {node: '>=20'}
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
@@ -4513,6 +4625,9 @@ packages:
resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
code-block-writer@13.0.3:
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
collect-v8-coverage@1.0.3:
resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
@@ -4636,6 +4751,9 @@ packages:
core-js-pure@3.49.0:
resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==}
core-js@3.49.0:
resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==}
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
@@ -7265,6 +7383,10 @@ packages:
obuf@1.1.2:
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
engines: {node: '>=14.0.0'}
on-finished@2.3.0:
resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
engines: {node: '>= 0.8'}
@@ -7396,6 +7518,9 @@ packages:
pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-exists@3.0.0:
resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
engines: {node: '>=4'}
@@ -7463,6 +7588,16 @@ packages:
resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
engines: {node: '>=0.10.0'}
pino-abstract-transport@3.0.0:
resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==}
pino-std-serializers@7.1.0:
resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==}
pino@10.3.1:
resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==}
hasBin: true
pirates@4.0.7:
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
@@ -7725,6 +7860,9 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
process-warning@5.0.0:
resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==}
progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
@@ -7852,6 +7990,9 @@ packages:
queue@6.0.2:
resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
radix-ui@1.4.3:
resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==}
peerDependencies:
@@ -8153,6 +8294,13 @@ packages:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
real-require@0.2.0:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
real-require@1.0.0:
resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
redent@3.0.0:
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
engines: {node: '>=8'}
@@ -8308,6 +8456,10 @@ packages:
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
safe-stable-stringify@2.5.0:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'}
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@@ -8484,6 +8636,9 @@ packages:
sockjs@0.3.24:
resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
sonic-boom@4.2.1:
resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==}
sonner-native@0.26.4:
resolution: {integrity: sha512-wBE/pctNfz+ieXjpYX7uu5hH38ws8xRmH0AFmEdEgkOS363k6N8QfFoyjGqDmdUDy15m4AAvOjd2Wz/jATukIA==}
peerDependencies:
@@ -8548,6 +8703,10 @@ packages:
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
engines: {node: '>=6'}
split2@4.2.0:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
@@ -8803,6 +8962,10 @@ packages:
thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
thread-stream@4.2.0:
resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==}
engines: {node: '>=20'}
threads@1.7.0:
resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==}
@@ -8869,6 +9032,9 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
ts-morph@27.0.2:
resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==}
ts-plugin-sort-import-suggestions@1.0.4:
resolution: {integrity: sha512-85n5lm2OQQ+b7aRNK9omU1gmjMNXRsgeLwojm5u4OSY5sVBkAHTcgMQPEeHMNlyyfFW0uXnwgqAU0pNfhD96Bw==}
@@ -8932,6 +9098,9 @@ packages:
uc.micro@2.1.0:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
uint8arrays@5.1.1:
resolution: {integrity: sha512-9muQwa4wZG4dKi9gMAIBtnk2Pw87SRpvWTH6lOGm19V2Uqxr4uomUf2PGqPnWc+qs06sN8owUU4jfcoWOcfwVQ==}
unbox-primitive@1.1.0:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
@@ -9088,6 +9257,9 @@ packages:
resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
varint@6.0.0:
resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -9360,6 +9532,10 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
yargs-parser@22.0.0:
resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
@@ -9368,6 +9544,10 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yargs@18.1.0:
resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
yauzl@3.3.0:
resolution: {integrity: sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==}
engines: {node: '>=12'}
@@ -9389,17 +9569,35 @@ snapshots:
'@0no-co/graphql.web@1.2.0': {}
'@atproto/api@0.20.34':
'@atproto-labs/did-resolver@0.3.5':
dependencies:
'@atproto/common-web': 0.5.6
'@atproto/lexicon': 0.7.7
'@atproto/syntax': 0.7.2
'@atproto/xrpc': 0.8.6
await-lock: 3.0.0
multiformats: 13.4.2
tlds: 1.261.0
'@atproto-labs/fetch': 0.3.4
'@atproto-labs/pipe': 0.2.4
'@atproto-labs/simple-store': 0.4.4
'@atproto-labs/simple-store-memory': 0.2.4
'@atproto/did': 0.5.4
zod: 3.25.76
'@atproto-labs/fetch@0.3.4':
dependencies:
'@atproto-labs/pipe': 0.2.4
'@atproto-labs/handle-resolver@0.4.6':
dependencies:
'@atproto-labs/simple-store': 0.4.4
'@atproto-labs/simple-store-memory': 0.2.4
'@atproto/did': 0.5.4
zod: 3.25.76
'@atproto-labs/pipe@0.2.4': {}
'@atproto-labs/simple-store-memory@0.2.4':
dependencies:
'@atproto-labs/simple-store': 0.4.4
lru-cache: 10.4.3
'@atproto-labs/simple-store@0.4.4': {}
'@atproto/common-web@0.5.6':
dependencies:
'@atproto/lex-data': 0.1.5
@@ -9407,22 +9605,118 @@ snapshots:
'@atproto/syntax': 0.7.2
zod: 3.25.76
'@atproto/common@0.7.2':
dependencies:
'@atproto/common-web': 0.5.6
'@atproto/lex-cbor': 0.1.4
'@atproto/lex-data': 0.1.5
multiformats: 13.4.2
pino: 10.3.1
'@atproto/crypto@0.5.4':
dependencies:
'@noble/curves': 1.9.7
'@noble/hashes': 1.8.0
uint8arrays: 5.1.1
'@atproto/did@0.5.4':
dependencies:
zod: 3.25.76
'@atproto/lex-builder@0.1.8':
dependencies:
'@atproto/lex-document': 0.1.6
'@atproto/lex-schema': 0.2.2
prettier: 3.8.3
ts-morph: 27.0.2
tslib: 2.8.1
'@atproto/lex-cbor@0.1.4':
dependencies:
'@atproto/lex-data': 0.1.5
cborg: 4.5.8
tslib: 2.8.1
'@atproto/lex-client@0.3.0':
dependencies:
'@atproto/lex-data': 0.1.5
'@atproto/lex-json': 0.1.4
'@atproto/lex-schema': 0.2.2
tslib: 2.8.1
'@atproto/lex-data@0.1.5':
dependencies:
multiformats: 13.4.2
tslib: 2.8.1
unicode-segmenter: 0.14.5
'@atproto/lex-document@0.1.6':
dependencies:
'@atproto/lex-schema': 0.2.2
core-js: 3.49.0
tslib: 2.8.1
'@atproto/lex-installer@0.1.9':
dependencies:
'@atproto/lex-builder': 0.1.8
'@atproto/lex-cbor': 0.1.4
'@atproto/lex-data': 0.1.5
'@atproto/lex-document': 0.1.6
'@atproto/lex-resolver': 0.2.2
'@atproto/lex-schema': 0.2.2
'@atproto/syntax': 0.7.2
tslib: 2.8.1
'@atproto/lex-json@0.1.4':
dependencies:
'@atproto/lex-data': 0.1.5
tslib: 2.8.1
'@atproto/lexicon@0.7.7':
'@atproto/lex-password-session@0.1.8':
dependencies:
'@atproto/common-web': 0.5.6
'@atproto/lex-client': 0.3.0
'@atproto/lex-schema': 0.2.2
tslib: 2.8.1
'@atproto/lex-resolver@0.2.2':
dependencies:
'@atproto-labs/did-resolver': 0.3.5
'@atproto/crypto': 0.5.4
'@atproto/lex-client': 0.3.0
'@atproto/lex-data': 0.1.5
'@atproto/lex-document': 0.1.6
'@atproto/lex-schema': 0.2.2
'@atproto/repo': 0.10.6
'@atproto/syntax': 0.7.2
multiformats: 13.4.2
tslib: 2.8.1
'@atproto/lex-schema@0.2.2':
dependencies:
'@atproto/lex-data': 0.1.5
'@atproto/syntax': 0.7.2
'@standard-schema/spec': 1.1.0
tslib: 2.8.1
'@atproto/lex@0.3.0':
dependencies:
'@atproto/lex-builder': 0.1.8
'@atproto/lex-client': 0.3.0
'@atproto/lex-data': 0.1.5
'@atproto/lex-installer': 0.1.9
'@atproto/lex-json': 0.1.4
'@atproto/lex-schema': 0.2.2
tslib: 2.8.1
yargs: 18.1.0
'@atproto/repo@0.10.6':
dependencies:
'@atproto/common': 0.7.2
'@atproto/common-web': 0.5.6
'@atproto/crypto': 0.5.4
'@atproto/lex-cbor': 0.1.4
'@atproto/lex-data': 0.1.5
'@atproto/syntax': 0.7.2
varint: 6.0.0
zod: 3.25.76
'@atproto/syntax@0.7.2':
@@ -9430,11 +9724,6 @@ snapshots:
iso-datestring-validator: 2.2.2
tslib: 2.8.1
'@atproto/xrpc@0.8.6':
dependencies:
'@atproto/lexicon': 0.7.7
zod: 3.25.76
'@babel/code-frame@7.10.4':
dependencies:
'@babel/highlight': 7.25.9
@@ -10381,6 +10670,11 @@ snapshots:
react: 19.1.0
react-native: 0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@bsky.app/react-native-mmkv@2.12.5(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
react-native: 0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@bsky.app/react-native-uitextview@2.5.0(react-native@0.81.5(patch_hash=91fd85363059530dea649a5ca6012b933f79c8491737fbfdc685abc727e48403)(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
@@ -11293,6 +11587,12 @@ snapshots:
dependencies:
moo: 0.5.3
'@noble/curves@1.9.7':
dependencies:
'@noble/hashes': 1.8.0
'@noble/hashes@1.8.0': {}
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -11380,6 +11680,8 @@ snapshots:
'@oxlint/binding-win32-x64-msvc@1.73.0':
optional: true
'@pinojs/redact@0.4.0': {}
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -12550,6 +12852,8 @@ snapshots:
dependencies:
'@sinonjs/commons': 3.0.1
'@standard-schema/spec@1.1.0': {}
'@tanstack/query-async-storage-persister@5.100.10':
dependencies:
'@tanstack/query-core': 5.100.10
@@ -12672,6 +12976,12 @@ snapshots:
'@tootallnate/once@2.0.1': {}
'@ts-morph/common@0.28.1':
dependencies:
minimatch: 10.2.5
path-browserify: 1.0.1
tinyglobby: 0.2.16
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.29.3
@@ -13252,12 +13562,12 @@ snapshots:
asynckit@0.4.0: {}
atomic-sleep@1.0.0: {}
available-typed-arrays@1.0.7:
dependencies:
possible-typed-array-names: 1.1.0
await-lock@3.0.0: {}
babel-jest@29.7.0(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
@@ -13551,6 +13861,13 @@ snapshots:
dependencies:
node-int64: 0.4.0
bsky-sdk-preview@0.0.1-preview.2(@atproto/lex@0.3.0):
dependencies:
'@atproto-labs/handle-resolver': 0.4.6
'@atproto/lex': 0.3.0
'@atproto/syntax': 0.7.2
tlds: 1.261.0
buffer-crc32@0.2.13: {}
buffer-from@1.1.2: {}
@@ -13599,6 +13916,8 @@ snapshots:
caniuse-lite@1.0.30001792: {}
cborg@4.5.8: {}
cborg@5.1.1: {}
chalk@2.4.2:
@@ -13721,10 +14040,18 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
cliui@9.0.1:
dependencies:
string-width: 7.2.0
strip-ansi: 7.2.0
wrap-ansi: 9.0.2
clone@1.0.4: {}
co@4.6.0: {}
code-block-writer@13.0.3: {}
collect-v8-coverage@1.0.3: {}
color-convert@1.9.3:
@@ -13836,6 +14163,8 @@ snapshots:
core-js-pure@3.49.0: {}
core-js@3.49.0: {}
core-util-is@1.0.3: {}
cosmiconfig@8.3.6(@typescript/typescript6@6.0.2):
@@ -16923,6 +17252,8 @@ snapshots:
obuf@1.1.2: {}
on-exit-leak-free@2.1.2: {}
on-finished@2.3.0:
dependencies:
ee-first: 1.1.1
@@ -17085,6 +17416,8 @@ snapshots:
no-case: 3.0.4
tslib: 2.8.1
path-browserify@1.0.1: {}
path-exists@3.0.0: {}
path-exists@4.0.0: {}
@@ -17129,6 +17462,26 @@ snapshots:
pinkie@2.0.4: {}
pino-abstract-transport@3.0.0:
dependencies:
split2: 4.2.0
pino-std-serializers@7.1.0: {}
pino@10.3.1:
dependencies:
'@pinojs/redact': 0.4.0
atomic-sleep: 1.0.0
on-exit-leak-free: 2.1.2
pino-abstract-transport: 3.0.0
pino-std-serializers: 7.1.0
process-warning: 5.0.0
quick-format-unescaped: 4.0.4
real-require: 0.2.0
safe-stable-stringify: 2.5.0
sonic-boom: 4.2.1
thread-stream: 4.2.0
pirates@4.0.7: {}
pkg-dir@4.2.0:
@@ -17372,6 +17725,8 @@ snapshots:
process-nextick-args@2.0.1: {}
process-warning@5.0.0: {}
progress@2.0.3: {}
promise@7.3.1:
@@ -17542,6 +17897,8 @@ snapshots:
dependencies:
inherits: 2.0.4
quick-format-unescaped@4.0.4: {}
radix-ui@1.4.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -17955,6 +18312,10 @@ snapshots:
dependencies:
picomatch: 2.3.2
real-require@0.2.0: {}
real-require@1.0.0: {}
redent@3.0.0:
dependencies:
indent-string: 4.0.0
@@ -18121,6 +18482,8 @@ snapshots:
es-errors: 1.3.0
is-regex: 1.2.1
safe-stable-stringify@2.5.0: {}
safer-buffer@2.1.2: {}
sax@1.6.0: {}
@@ -18331,6 +18694,10 @@ snapshots:
uuid: 8.3.2
websocket-driver: 0.7.4
sonic-boom@4.2.1:
dependencies:
atomic-sleep: 1.0.0
sonner-native@0.26.4(48ff340dede165208988dce94163b1ce):
dependencies:
react: 19.1.0
@@ -18399,6 +18766,8 @@ snapshots:
split-on-first@1.1.0: {}
split2@4.2.0: {}
sprintf-js@1.0.3: {}
stable@0.1.8: {}
@@ -18646,6 +19015,10 @@ snapshots:
dependencies:
any-promise: 1.3.0
thread-stream@4.2.0:
dependencies:
real-require: 1.0.0
threads@1.7.0:
dependencies:
callsites: 3.1.0
@@ -18712,6 +19085,11 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-morph@27.0.2:
dependencies:
'@ts-morph/common': 0.28.1
code-block-writer: 13.0.3
ts-plugin-sort-import-suggestions@1.0.4: {}
tslib@2.8.1: {}
@@ -18794,6 +19172,10 @@ snapshots:
uc.micro@2.1.0: {}
uint8arrays@5.1.1:
dependencies:
multiformats: 13.4.2
unbox-primitive@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -18925,6 +19307,8 @@ snapshots:
validate-npm-package-name@5.0.1: {}
varint@6.0.0: {}
vary@1.1.2: {}
vlq@1.0.1: {}
@@ -19249,6 +19633,8 @@ snapshots:
yargs-parser@21.1.1: {}
yargs-parser@22.0.0: {}
yargs@15.4.1:
dependencies:
cliui: 6.0.0
@@ -19273,6 +19659,15 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
yargs@18.1.0:
dependencies:
cliui: 9.0.1
escalade: 3.2.0
get-caller-file: 2.0.5
string-width: 8.2.1
y18n: 5.0.8
yargs-parser: 22.0.0
yauzl@3.3.0:
dependencies:
buffer-crc32: 0.2.13
+35 -24
View File
@@ -1,31 +1,42 @@
import {getAgeAssuranceRegionConfig} from '@atproto/api'
import {getAgeAssuranceRegionConfigForGeolocation} from '#/ageAssurance/util'
import {type app} from '#/lexicons'
jest.mock('#/ageAssurance/data')
jest.mock('@atproto/api', () => ({
...jest.requireActual('@atproto/api'),
getAgeAssuranceRegionConfig: jest.fn(),
}))
/*
* Platform-based region filtering itself is implemented and tested in
* `@atproto/api` (see `getAgeAssuranceRegionConfig`). What we own - and test
* here - is that region resolution passes the current platform through. The
* jest preset is `jest-expo/ios`, so `AGE_ASSURANCE_PLATFORM` resolves to
* `ios` in these tests.
*/
describe('getAgeAssuranceRegionConfigForGeolocation', () => {
it('passes the current platform to the SDK region matcher', () => {
const config = {regions: []}
getAgeAssuranceRegionConfigForGeolocation(config, {
countryCode: 'US',
regionCode: 'TX',
})
expect(getAgeAssuranceRegionConfig).toHaveBeenCalledWith(config, {
countryCode: 'US',
regionCode: 'TX',
platform: 'ios',
})
const region = (
countryCode: string,
regionCode?: string,
platforms?: string[],
): app.bsky.ageassurance.defs.ConfigRegion => ({
countryCode,
regionCode,
platforms,
minAccessAge: 13,
rules: [],
})
it('skips regions for other platforms and continues matching', () => {
const web = region('US', undefined, ['web'])
const ios = region('US', undefined, ['ios'])
expect(
getAgeAssuranceRegionConfigForGeolocation(
{regions: [web, ios]},
{countryCode: 'US', regionCode: undefined},
),
).toBe(ios)
})
it('matches a region-specific config before a later country config', () => {
const texas = region('US', 'TX')
const us = region('US')
expect(
getAgeAssuranceRegionConfigForGeolocation(
{regions: [texas, us]},
{countryCode: 'US', regionCode: 'TX'},
),
).toBe(texas)
})
})
+8 -8
View File
@@ -1,10 +1,7 @@
import {useMemo} from 'react'
import type * as AgeRange from 'expo-age-range'
import {type ModerationPrefs} from '@bsky.app/sdk/moderation'
import {
computeAgeAssuranceRegionAccess,
getAgeAssuranceRegionConfig,
} from '@bsky.app/sdk/utils'
import {computeAgeAssuranceRegionAccess} from '@bsky.app/sdk/utils'
import {getAge} from '#/lib/strings/time'
import {regionName} from '#/locale/helpers'
@@ -44,10 +41,13 @@ export function getAgeAssuranceRegionConfigForGeolocation(
config: app.bsky.ageassurance.defs.Config,
geolocation: Geolocation,
): app.bsky.ageassurance.defs.ConfigRegion | undefined {
return getAgeAssuranceRegionConfig(config, {
countryCode: geolocation.countryCode ?? '',
regionCode: geolocation.regionCode,
platform: AGE_ASSURANCE_PLATFORM,
return config.regions.find(({countryCode, regionCode, platforms}) => {
if (platforms?.length && !platforms.includes(AGE_ASSURANCE_PLATFORM)) {
return false
}
if (countryCode === geolocation.countryCode) {
return !regionCode || regionCode === geolocation.regionCode
}
})
}
@@ -1,11 +1,8 @@
import {useCallback, useState} from 'react'
import {
ChatBskyConvoGetConvoForMembers,
ChatBskyGroupCreateGroup,
} from '@atproto/api'
import {useLingui} from '@lingui/react/macro'
import {isNetworkError} from '#/lib/strings/errors'
import {isXrpcErrorOf} from '#/lib/xrpc-error'
import {logger} from '#/logger'
import {useCreateGroupChat} from '#/state/queries/messages/create-group-chat'
import {useGetConvoForMembers} from '#/state/queries/messages/get-convo-for-members'
@@ -14,6 +11,7 @@ import {SearchablePeopleList} from '#/components/dialogs/SearchablePeopleList'
import {InitiateChatFlow} from '#/components/dms/InitiateChatFlow'
import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics'
import {chat} from '#/lexicons'
export function SendViaChatDialog({
control,
@@ -70,24 +68,39 @@ function SendViaChatDialogInner({
if (isNetworkError(error)) {
errorMessage = l`A network error occurred. Please check your internet connection.`
} else if (
error instanceof ChatBskyConvoGetConvoForMembers.AccountSuspendedError
isXrpcErrorOf(
chat.bsky.convo.getConvoForMembers,
error,
'AccountSuspended',
)
) {
errorMessage = l`Suspended accounts cannot participate in chat.`
} else if (
error instanceof ChatBskyConvoGetConvoForMembers.BlockedActorError
isXrpcErrorOf(chat.bsky.convo.getConvoForMembers, error, 'BlockedActor')
) {
errorMessage = l`This user has blocked you and cannot be messaged.`
} else if (
error instanceof ChatBskyConvoGetConvoForMembers.MessagesDisabledError
isXrpcErrorOf(
chat.bsky.convo.getConvoForMembers,
error,
'MessagesDisabled',
)
) {
errorMessage = l`This user has disabled chat and cannot be messaged.`
} else if (
error instanceof
ChatBskyConvoGetConvoForMembers.NotFollowedBySenderError
isXrpcErrorOf(
chat.bsky.convo.getConvoForMembers,
error,
'NotFollowedBySender',
)
) {
errorMessage = l`Chat recipient is not followed by the sender.`
} else if (
error instanceof ChatBskyConvoGetConvoForMembers.RecipientNotFoundError
isXrpcErrorOf(
chat.bsky.convo.getConvoForMembers,
error,
'RecipientNotFound',
)
) {
errorMessage = l`Unable to find the selected recipient.`
}
@@ -109,26 +122,31 @@ function SendViaChatDialogInner({
if (isNetworkError(error)) {
errorMessage = l`A network error occurred. Please check your internet connection.`
} else if (
error instanceof ChatBskyGroupCreateGroup.AccountSuspendedError
isXrpcErrorOf(chat.bsky.group.createGroup, error, 'AccountSuspended')
) {
errorMessage = l`Suspended accounts cannot participate in a group chat.`
} else if (error instanceof ChatBskyGroupCreateGroup.BlockedActorError) {
} else if (
isXrpcErrorOf(chat.bsky.group.createGroup, error, 'BlockedActor')
) {
errorMessage = l`One of the selected recipients has blocked you and cannot be messaged.`
} else if (
error instanceof
ChatBskyGroupCreateGroup.NewAccountCannotCreateGroupError
isXrpcErrorOf(
chat.bsky.group.createGroup,
error,
'NewAccountCannotCreateGroup',
)
) {
errorMessage = l`You cannot create a group chat yet.`
} else if (
error instanceof ChatBskyGroupCreateGroup.NotFollowedBySenderError
isXrpcErrorOf(chat.bsky.group.createGroup, error, 'NotFollowedBySender')
) {
errorMessage = l`A selected recipient is not followed by the sender.`
} else if (
error instanceof ChatBskyGroupCreateGroup.RecipientNotFoundError
isXrpcErrorOf(chat.bsky.group.createGroup, error, 'RecipientNotFound')
) {
errorMessage = l`Unable to find a selected recipient.`
} else if (
error instanceof ChatBskyGroupCreateGroup.UserForbidsGroupsError
isXrpcErrorOf(chat.bsky.group.createGroup, error, 'UserForbidsGroups')
) {
errorMessage = l`One of the selected recipients does not allow group chats.`
}
@@ -1,6 +1,6 @@
import {useMemo} from 'react'
import {Pressable, View} from 'react-native'
import {type AppBskyUnspeccedDefs, moderateProfile} from '@atproto/api'
import {moderateProfile} from '@bsky.app/sdk/moderation'
import {Plural, Trans, useLingui} from '@lingui/react/macro'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
@@ -29,6 +29,7 @@ import {SubtleHover} from '#/components/SubtleHover'
import {useTrendingTopicSeen} from '#/components/TrendingTopics'
import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics'
import {type app} from '#/lexicons'
const TOPIC_COUNT = 3
@@ -182,7 +183,7 @@ function TrendRow({
recId,
onPress,
}: ViewStyleProp & {
trend: AppBskyUnspeccedDefs.TrendView
trend: app.bsky.unspecced.defs.TrendView
rank: number
feedSliceIndex: number
recId?: string
@@ -290,7 +291,7 @@ function TrendingTopicRowSkeleton({rank}: {rank: number}) {
}
function useModerateTrendingActors(
actors: AppBskyUnspeccedDefs.TrendView['actors'],
actors: app.bsky.unspecced.defs.TrendView['actors'],
) {
const moderationOpts = useModerationOpts()
@@ -1,8 +1,4 @@
import {
type AppBskyLabelerDefs,
ToolsOzoneReportDefs as OzoneReportDefs,
} from '@atproto/api'
import {type app, tools} from '#/lexicons'
import {
getNciiQualificationOutcome,
initialState,
@@ -12,12 +8,12 @@ import {
const nciiOption = {
title: 'Non-consensual intimate imagery',
reason: OzoneReportDefs.REASONSEXUALNCII,
reason: tools.ozone.report.defs.reasonSexualNCII.value,
}
const otherOption = {
title: 'Unlabeled adult content',
reason: OzoneReportDefs.REASONSEXUALUNLABELED,
reason: tools.ozone.report.defs.reasonSexualUnlabeled.value,
}
function selectNciiOption(state: ReportState = initialState) {
@@ -83,7 +79,7 @@ describe('reducer NCII qualification', () => {
let state = selectNciiOption()
state = reducer(state, {
type: 'selectLabeler',
labeler: {} as AppBskyLabelerDefs.LabelerViewDetailed,
labeler: {} as app.bsky.labeler.defs.LabelerViewDetailed,
})
expect(state.activeStepIndex1).toBe(2)
})
@@ -92,7 +88,7 @@ describe('reducer NCII qualification', () => {
let state = selectNciiOption()
state = reducer(state, {
type: 'selectLabeler',
labeler: {} as AppBskyLabelerDefs.LabelerViewDetailed,
labeler: {} as app.bsky.labeler.defs.LabelerViewDetailed,
})
state = reducer(state, {
type: 'answerNciiQuestion',
+1 -6
View File
@@ -254,12 +254,7 @@ function createTokenProvider(
if (!forceRefresh && token && Date.now() < expiresAt - 60_000) return token
if (!refresh) {
const exp = Math.floor(Date.now() / 1000) + 60 * 30
refresh = getServiceAuthTokenWithRetry(
client,
dispatchUrl,
exp,
signal,
)
refresh = getServiceAuthTokenWithRetry(client, dispatchUrl, exp, signal)
.then(nextToken => {
token = nextToken
expiresAt = exp * 1000
@@ -63,7 +63,7 @@ export function LikesStat({post}: {post: app.bsky.feed.defs.PostView}) {
* likes, the API max per page), so they are a sample of the most recent
* likers, not an exhaustive list.
*/
export function KnownLikers({post}: {post: AppBskyFeedDefs.PostView}) {
export function KnownLikers({post}: {post: app.bsky.feed.defs.PostView}) {
const t = useTheme()
const {t: l} = useLingui()
const {hasSession, currentAccount} = useSession()
@@ -1,6 +1,6 @@
import {useCallback, useMemo} from 'react'
import {type ListRenderItemInfo, Text as RNText, View} from 'react-native'
import {type ModerationOpts} from '@atproto/api'
import {type ModerationOpts} from '@bsky.app/sdk/moderation'
import {Trans, useLingui} from '@lingui/react/macro'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
+4 -4
View File
@@ -258,13 +258,13 @@ export const useSignupContext = () => useContext(SignupContext)
* failure is unexpected and should be reported to Sentry.
*/
function classifyExpectedSignupError(e: unknown): string | undefined {
if (e instanceof ComAtprotoServerCreateAccount.InvalidHandleError)
if (isXrpcErrorOf(com.atproto.server.createAccount, e, 'InvalidHandle'))
return 'InvalidHandle'
if (e instanceof ComAtprotoServerCreateAccount.HandleNotAvailableError)
if (isXrpcErrorOf(com.atproto.server.createAccount, e, 'HandleNotAvailable'))
return 'HandleNotAvailable'
if (e instanceof ComAtprotoServerCreateAccount.InvalidPasswordError)
if (isXrpcErrorOf(com.atproto.server.createAccount, e, 'InvalidPassword'))
return 'InvalidPassword'
if (e instanceof ComAtprotoServerCreateAccount.UnsupportedDomainError)
if (isXrpcErrorOf(com.atproto.server.createAccount, e, 'UnsupportedDomain'))
return 'UnsupportedDomain'
/* the server sends no typed error for this case */
if (String(e).includes('Email already taken')) return 'EmailTaken'
@@ -1,14 +1,15 @@
import {type AppBskyNotificationListNotifications} from '@atproto/api'
import {type DidString} from '@atproto/syntax'
import {describe, expect, it, jest} from '@jest/globals'
import {type app} from '#/lexicons'
import {groupNotifications} from '../util'
jest.mock('#/state/queries/profile', () => ({precacheProfile: jest.fn()}))
type Notification = AppBskyNotificationListNotifications.Notification
type Notification = app.bsky.notification.listNotifications.Notification
function makeFollowNotification(
did: string,
did: DidString,
starterPackUri?: string,
): Notification {
return {
+1 -1
View File
@@ -6,8 +6,8 @@ import {
useInfiniteQuery,
} from '@tanstack/react-query'
import {useAnalytics} from '#/analytics'
import {useAppviewClient} from '#/state/session'
import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
const DEFAULT_SORT = 'latest'
+1 -1
View File
@@ -7,8 +7,8 @@ import {
} from '@tanstack/react-query'
import {STALE} from '#/state/queries'
import {useAnalytics} from '#/analytics'
import {useAppviewClient} from '#/state/session'
import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
const DEFAULT_SORT = 'latest'
+7 -8
View File
@@ -1,4 +1,3 @@
import {type AppBskyGraphSearchStarterPacksV2} from '@atproto/api'
import {
type InfiniteData,
keepPreviousData,
@@ -7,7 +6,8 @@ import {
} from '@tanstack/react-query'
import {STALE} from '#/state/queries'
import {useAgent} from '#/state/session'
import {useAppviewClient} from '#/state/session'
import {app} from '#/lexicons'
export const RQKEY_ROOT = 'starter-pack-search'
export const RQKEY = (query: string, limit?: number) => [
@@ -27,23 +27,22 @@ export function useStarterPackSearch({
maintainData?: boolean
limit?: number
}) {
const agent = useAgent()
const client = useAppviewClient()
return useInfiniteQuery<
AppBskyGraphSearchStarterPacksV2.OutputSchema,
app.bsky.graph.searchStarterPacksV2.$OutputBody,
Error,
InfiniteData<AppBskyGraphSearchStarterPacksV2.OutputSchema>,
InfiniteData<app.bsky.graph.searchStarterPacksV2.$OutputBody>,
QueryKey,
string | undefined
>({
staleTime: STALE.MINUTES.FIVE,
queryKey: RQKEY(query, limit),
queryFn: async ({pageParam}) => {
const res = await agent.app.bsky.graph.searchStarterPacksV2({
return client.call(app.bsky.graph.searchStarterPacksV2, {
q: query,
limit,
cursor: pageParam,
})
return res.data
},
enabled: enabled && !!query,
initialPageParam: undefined,
@@ -54,7 +53,7 @@ export function useStarterPackSearch({
}
function select(
data: InfiniteData<AppBskyGraphSearchStarterPacksV2.OutputSchema>,
data: InfiniteData<app.bsky.graph.searchStarterPacksV2.$OutputBody>,
) {
// enforce uniqueness
const uris = new Set()
@@ -26,7 +26,7 @@ import {
} from '#/view/com/composer/text-input/text-input-util'
import {atoms as a, useAlf} from '#/alf'
import {normalizeTextStyles} from '#/alf/typography'
import {IS_ANDROID, IS_NATIVE} from '#/env'
import {IS_ANDROID} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky'
import {Autocomplete} from './mobile/Autocomplete'
@@ -923,12 +923,9 @@ function SayHelloBtn({profile}: {profile: app.bsky.actor.defs.ProfileView}) {
const onPress = async () => {
try {
setIsLoading(true)
const res = await chatClient.call(
chat.bsky.convo.getConvoForMembers,
{
members: [profile.did as DidString, chatClient.assertDid],
},
)
const res = await chatClient.call(chat.bsky.convo.getConvoForMembers, {
members: [profile.did, chatClient.assertDid],
})
navigation.navigate('MessagesConversation', {
conversation: res.convo.id,
})
+1 -1
View File
@@ -77,7 +77,7 @@ export function TestCtrls() {
* The appview lex client reads BLUESKY_PROXY_HEADER.get() at build
* time (see clients.ts), so setting it here retargets the proxy for
* subsequent sign-ins without an explicit client reconfigure.
*/
*/
BLUESKY_PROXY_HEADER.set(header)
hasConfiguredProxy = true
setIsProxyConfigured(true)