* chore(ci): update setup-node & checkout actions to v4
* refactor(oauth): rename internal types to avoid conflicting types
fix(oauth): support building from parcel
feat(oauth): add runtime lock support to prevent concurrent session updates
feat(oauth): improve metadata validation
fix(oauth): allow use of handle as login hint
fix: proper parsing of authorization header
feat(oauth): add email 2fa support
feat(oauth): adapt auth UI to match app UI
* fix(oauth): improve parsing of digest algo
* fix(oauth-provider): dead code cleanup
* fix(oauth-provider): avoid inconsistent use of "id" prop in InputCheckbox
* style(oauth-provider): use if/else instead of switch
* feat(oauth-provider): stronger validation of customization data
Invalid oauth customization would cause the server to crash at startup.
* docs(oauth-client): explain why the abortRequest method is not mandatory
* fix(oauth-client): cancel fetch response body when not used
* docs: typo
Co-authored-by: devin ivy <devinivy@gmail.com>
* feat(oauth-provider:metadata): add client_id_metadata_document_supported metadata
* fix(oauth-provider): require the content-type to be set on client metadata response
* feat(common): add obfuscation utilities
fix(pds): show user did in logs
fix(ozone): show user did in logs
* tidy
* fix(simple-store): avoid leaking context when calling hooks
* fix: use patch level changeset
* chore(oauth-types): add changeset regarding client_id_metadata_document_supported
* chore: add changeset for bsky & ozone
* unify loggerMiddleware instantiation
* tidy
---------
Co-authored-by: devin ivy <devinivy@gmail.com>
* Update lex
* Codegen
* Set up StatSig
* Integrate new implementation into old endpoint
* Add todo to crypto module
* Format
* Specify StatSig env
* Downgrade pnpm to match CI, bump lock
* Catch StatSig errors
* Use sep env
* Reset lockfile
* Re-add new dep using correct pnpm version
* tidy
* Integrate into AppContext and lifecycle
* Use camelCase
* Switcheroo
Co-authored-by: devin ivy <devinivy@gmail.com>
* Init prior to server listen start
* Move test env check up to server config
* Add logger and log
* Better comment
---------
Co-authored-by: devin ivy <devinivy@gmail.com>
* Add bskyAppState preference and api for dismissed nudges
* Add tests
* Wrap preference updates in an lock region to avoid clobbering updates
* Move to queuedNudges and activeProgressGuide
* Fix type error
* Update test
* Add changeset
* present detailed profile view for getSuggestions
* change lexicon to profileViewDetailed
* finish running the codegen
* update snapshot test for getSuggestions
* Revert "change lexicon to profileViewDetailed"
This reverts commit f0b167d180716f8d6d2cd14316b50d29c2690140.
Revert "update snapshot test for getSuggestions"
This reverts commit 21609516afcbcda5f86566eb9053d0b8db3834b0.
Revert "finish running the codegen"
This reverts commit 8bf3150524fd8e479e76e7bf35d5a53cc3ae46e0.
* use basic profile + knownfollowers
* update snapshot test
* add createdAt to snapshot
* fix(xrpc-server): add exception for HTTP clients that set a content-type when there is no body
* feat(xrpc-server): allow empty body on endpoints not expecting any input
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* fix(xrpc-server): properly test empty body requests
* tidy
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* 🚧 Proposal for moderator manager lexicons
* ✨ CRUD for moderator management works
* ✨ Add profile view to moderator user list
* ✨ Seed mod users from env var to db
* ✅ Adjust tests
* ✅ Update snapshots
* ✨ Fix type and lexicon token issues
* ✨ Add pagination to listUsers
* ✨ Use sort order in pagination
* 📝 Change error name
* ✅ Update snapshots
* ✅ seed mods in sync to avoid re-order
* 🧹 Remove unnecessary import
* 🐛 Re-run codegen
* 🧹 Some cleanup
* 🧹 Cleanup unnecessary properties on auth-verifier
* ✨ Rename terminologies from moderator to team and member
* 🧹 Cleanup
* ✨ Allow admin tokens to update/add member
* ✨ Delete members in transaction
* ✨ Use db transactions and move profile hydration to the service layer
* ✅ Add test for addMember endpoint
* 🐛 wait on adding admin DID
* ✨ Do not allow updating/deleting service owner and always give service owner admin access
* 🧹 Cleanup
* ✨ Make timestamp columns non null
* 🧹 Cleanup
* ✨ Update mod role definition in getConfig
* ✨ Deletion and update guards
* 🐛 don't prefill service did
* 📝 Add changeset
* ✨ Add proxy route on ozone for email search endpoint on entryway
* Use entrywayAuth instead of appviewAuth
Co-authored-by: Daniel Holmgren <dtholmgren@gmail.com>
---------
Co-authored-by: Daniel Holmgren <dtholmgren@gmail.com>
* chore(deps): update zod
* chore(deps): update pino to match entryway version
* chore(tsconfig): remove truncation of types through noErrorTruncation
* add support for DPoP token type when logging
* fix(bsky): JSON.parse does not return value of type JSON
* fix(pds): add res property to ReqCtx
* fix(pds): properly type getPreferences return value
* chore(tsconfig): disable noFallthroughCasesInSwitch
* refactor(pds): move tracer config in own file
* feat(dev-env): start with "pnpm dev"
* feat(oauth): add oauth provider & client libs
* feat(pds): add oauth provider
* chore: changeset
* feat: various fixes and improvements
* chore(deps): update better-sqlite3 to version 10.0.0 for node 22 compatibility
* chore(deps): drop unused tslib
* fix(did): normalize service IDs before looking for duplicates
* fix(did): avoid minor type casting
* fix(did): improve argument validation
* fix(fetch): explicit use of negation around number comparison
* fix(oauth-provider): improve argument validation
* feat(did): add ATPROTO specific "isAtprotoDidWeb" method
* feat(rollup-plugin-bundle-manifest): add readme
* feat(lint): add eqeqeq rule (only allow == and != with null)
* fix(oauth-client-browser): typo in gitignore
* fix(oauth-provider): properly name error class file
* fix(oauth-provider): remove un-necessary useMemo
* fix(did-resolver): properly build did:web document url
* fix(did-resolver): remove unused types
* fix(fetch): remove unused utils
* fix(pds): remove unused script and dependency
* fix(oauth-provider): simplify isSubPath util
* fix(oauth-provider): add InvalidRedirectUriError static constructor
* fix(jwk): improve JWT validation to provide better error messages and distinguish between signed and unsigned tokens
* fix(pds): use "debug" log level for fetch method
* fix(pds): allow access tokens to contain an unknown "typ" claim (with the exception of "dpop+jwt")
* fix(jwk): remove un-necessary code
* fix(pds): account for whitespace chars when checking JSON
* fix(pds): remove oauth specific config
* fix(pds): run all write queries through transaction or executeWithRetry
fix(pds): remove outdated comments
fix(pds): rename used_refresh_token columns & added primary key
fix(pds): run cleanup task through backgroundQueue
fix(pds): add device.id foreign key to device_account
fix(pds): add comment on cleanup of used_refresh_token
fix(pds): add primary key on device_account
* fix(oauth-provider:time): simplify constantTime util
* fix(pds): rename disableSsrf into disableSsrfProtection
* fix(oauth-client-react-native): remove incomplete package
* refactor(pds): remove status & active from ActorAccount
* fix(pds): invalidate all oauth tokens on takedown
* fix(oauth-provider): enforce token expiry
* fix(pds): properly support deactivated accounts
* perf(pds:db): allow transaction function to be sync
* refactor(psq:account-manager): expose only query builders & data transformations utils from helpers
* fix(oauth-provider): imports from self
* fix(ci): add nested packages to build artifacts
* style(fetch): rename TODO into @TODO
* style(rollup-plugin-bundle-manifest): remove "TODO" from comment
* style(oauth-client): rename TODO into @TODO
* style(oauth-provider): rename TODO into @TODO
* refactor(oauth-client): remove "OAuth" prefix from types
* fix(oauth-client-browser): better type SessionListener
* style(oauth): rename TODO into @TODO
* fix(oauth-provider): enforce provider max session age
* fix(oauth-provider): check authentication parameters against all client metadata
* fix(api): tests
* fix(pds): remove .js from imports for tests
* fix(pds): change account status to match tests
* chore(deps): make all packages depend on the same zod version
* fix(common-web): remove un-necessary binding of Checkable to "zod"
* refactor(jwk): infer jwt schema from refinement definition
* fix(handle-resolver): allow resolution errors to propagate
docs(handle-resolver): better handling of DNS resolution errors
fix(handle-resolver): properly handle DOH responses
* fix(did): service endpoint arrays must contain "one or more" element
* refactor(pipe): simplify implementation
* fix(pds): add missing DB indexes
* feat(oauth): Resolve Authorization Server URI through Protected Resource Metadata
* style:(oauth-client): import order
* docs(oauth-provider:redirect-uri): add reference url
* feat(oauth): implement "OAuth Client ID Metadata Document" from draft-parecki-oauth-client-id-metadata-document-latest internet draft
* feat(oauth-client): backport changes from feat-oauth-client
* docs(simple-store): improve comments
* feat(lexicons): add iterable capabilities
* fix(pds): type error in dev mode
* feat(oauth-provider): improved error reporting
* fix(oauth-types): allow insecure issuer during tests
* fix(xrpc-server): allow upload of empty files
* fix: lint
* feat(fetch): keep request reference in errors
feat(fetch): utilities improvements
* fix(pds): allow more than one session token per user
* feat(ozone): improve env validation error messages
* fix(oauth-client): account for DPoP when checking for invalid_token errors
* fixup! feat(fetch): keep request reference in errors feat(fetch): utilities improvements
* fixup! feat(fetch): keep request reference in errors feat(fetch): utilities improvements
* fix(oauth): various validation fixes
feat(oauth): share client_id validation and parsing utilities between client & provider
* feat(dev-env): fix ozone port number
* fix(fetch-node): prevent fetch against invalid domain names
* fix(oauth-provider): add typings for psl dep
* feat(jwk): make type def compatible with TS 4.x
* fix(oauth): fixed various spec compliance
fix(oauth): return "sub" in refresh token response
fix(oauth): limit token validity for third party clients
fix(oauth): hide client image when not trusted
* fix(oauth): lint
* pds: switch changeset to patch, no breaking changes
* changeset and config for new oauth deps
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* schemas
* protos
* implementation
* add filtering on ingestion
* test
* add thread viewer state to post views
* update snaps
* changeset
* fix threadgating test