From 61dc0d60e19b88c6427a54c6d95a391b5f4da7bd Mon Sep 17 00:00:00 2001 From: Matthieu Sieben Date: Wed, 5 Feb 2025 15:06:58 +0100 Subject: [PATCH] Add linting rule to sort imports (#3220) * Add linting rule to sort imports * remove spacing between import groups * changeset * changeset * prettier config fine tuning * forbid use of deprecated imports * tidy --- .changeset/fair-tigers-thank.md | 41 + .changeset/mighty-actors-complain.md | 22 + .changeset/olive-teachers-yawn.md | 5 + .eslintrc | 67 +- .gitignore | 2 +- .prettierignore | 6 +- .prettierrc | 7 + .vscode/settings.json | 6 + package.json | 5 +- packages/api/bench/agent.bench.ts | 9 - packages/api/src/agent.ts | 13 +- packages/api/src/index.ts | 6 +- packages/api/src/mocker.ts | 6 +- packages/api/src/moderation/decision.ts | 14 +- packages/api/src/moderation/index.ts | 22 +- .../api/src/moderation/subjects/account.ts | 2 +- .../src/moderation/subjects/feed-generator.ts | 2 +- .../src/moderation/subjects/notification.ts | 2 +- packages/api/src/moderation/subjects/post.ts | 10 +- .../api/src/moderation/subjects/profile.ts | 2 +- .../api/src/moderation/subjects/user-list.ts | 2 +- packages/api/src/moderation/types.ts | 2 +- packages/api/src/moderation/util.ts | 2 +- packages/api/src/rich-text/detection.ts | 2 +- packages/api/src/rich-text/rich-text.ts | 4 +- packages/api/src/util.ts | 17 +- packages/api/tests/atp-agent.test.ts | 2 +- packages/api/tests/dispatcher.test.ts | 8 +- packages/api/tests/errors.test.ts | 2 +- .../api/tests/moderation-behaviors.test.ts | 6 +- .../tests/moderation-custom-labels.test.ts | 8 +- .../api/tests/moderation-mutewords.test.ts | 1 - .../api/tests/moderation-quoteposts.test.ts | 6 +- packages/api/tests/moderation.test.ts | 8 +- .../api/tests/rich-text-sanitization.test.ts | 2 +- .../api/tests/util/moderation-behavior.ts | 4 +- packages/aws/package.json | 3 + packages/aws/src/kms.ts | 2 +- packages/aws/src/s3.ts | 6 +- packages/bsky/bin/migration-create.ts | 4 +- packages/bsky/package.json | 3 + .../bsky/src/api/app/bsky/actor/getProfile.ts | 10 +- .../src/api/app/bsky/actor/getProfiles.ts | 12 +- .../src/api/app/bsky/actor/getSuggestions.ts | 14 +- .../src/api/app/bsky/actor/searchActors.ts | 12 +- .../app/bsky/actor/searchActorsTypeahead.ts | 10 +- .../src/api/app/bsky/feed/getActorFeeds.ts | 14 +- .../src/api/app/bsky/feed/getActorLikes.ts | 18 +- .../src/api/app/bsky/feed/getAuthorFeed.ts | 20 +- .../bsky/src/api/app/bsky/feed/getFeed.ts | 31 +- .../src/api/app/bsky/feed/getFeedGenerator.ts | 6 +- .../api/app/bsky/feed/getFeedGenerators.ts | 8 +- .../bsky/src/api/app/bsky/feed/getLikes.ts | 13 +- .../bsky/src/api/app/bsky/feed/getListFeed.ts | 18 +- .../src/api/app/bsky/feed/getPostThread.ts | 14 +- .../bsky/src/api/app/bsky/feed/getPosts.ts | 12 +- .../bsky/src/api/app/bsky/feed/getQuotes.ts | 14 +- .../src/api/app/bsky/feed/getRepostedBy.ts | 10 +- .../api/app/bsky/feed/getSuggestedFeeds.ts | 4 +- .../bsky/src/api/app/bsky/feed/getTimeline.ts | 18 +- .../bsky/src/api/app/bsky/feed/searchPosts.ts | 12 +- .../app/bsky/graph/getActorStarterPacks.ts | 14 +- .../bsky/src/api/app/bsky/graph/getBlocks.ts | 8 +- .../src/api/app/bsky/graph/getFollowers.ts | 12 +- .../bsky/src/api/app/bsky/graph/getFollows.ts | 12 +- .../api/app/bsky/graph/getKnownFollowers.ts | 4 +- .../bsky/src/api/app/bsky/graph/getList.ts | 20 +- .../src/api/app/bsky/graph/getListBlocks.ts | 8 +- .../src/api/app/bsky/graph/getListMutes.ts | 8 +- .../bsky/src/api/app/bsky/graph/getLists.ts | 8 +- .../bsky/src/api/app/bsky/graph/getMutes.ts | 6 +- .../api/app/bsky/graph/getRelationships.ts | 2 +- .../src/api/app/bsky/graph/getStarterPack.ts | 8 +- .../src/api/app/bsky/graph/getStarterPacks.ts | 10 +- .../bsky/graph/getSuggestedFollowsByActor.ts | 8 +- .../bsky/src/api/app/bsky/graph/muteActor.ts | 2 +- .../src/api/app/bsky/graph/muteActorList.ts | 2 +- .../bsky/src/api/app/bsky/graph/muteThread.ts | 2 +- .../api/app/bsky/graph/searchStarterPacks.ts | 14 +- .../src/api/app/bsky/graph/unmuteActor.ts | 2 +- .../src/api/app/bsky/graph/unmuteActorList.ts | 2 +- .../src/api/app/bsky/graph/unmuteThread.ts | 2 +- .../src/api/app/bsky/labeler/getServices.ts | 4 +- .../app/bsky/notification/getUnreadCount.ts | 4 +- .../bsky/notification/listNotifications.ts | 12 +- .../app/bsky/notification/putPreferences.ts | 2 +- .../api/app/bsky/notification/registerPush.ts | 2 +- .../api/app/bsky/notification/updateSeen.ts | 6 +- .../src/api/app/bsky/unspecced/getConfig.ts | 2 +- .../unspecced/getPopularFeedGenerators.ts | 4 +- .../bsky/unspecced/getTaggedSuggestions.ts | 2 +- .../app/bsky/unspecced/getTrendingTopics.ts | 14 +- packages/bsky/src/api/blob-dispatcher.ts | 3 +- packages/bsky/src/api/blob-resolver.ts | 25 +- .../api/com/atproto/admin/getAccountInfos.ts | 4 +- .../api/com/atproto/admin/getSubjectStatus.ts | 2 +- .../com/atproto/admin/updateSubjectStatus.ts | 4 +- .../api/com/atproto/identity/resolveHandle.ts | 4 +- .../src/api/com/atproto/label/queryLabels.ts | 4 +- .../src/api/com/atproto/repo/getRecord.ts | 4 +- .../src/api/com/atproto/temp/fetchLabels.ts | 4 +- packages/bsky/src/api/health.ts | 8 +- packages/bsky/src/api/index.ts | 42 +- packages/bsky/src/api/well-known.ts | 8 +- packages/bsky/src/auth-verifier.ts | 12 +- packages/bsky/src/bsync.ts | 6 +- packages/bsky/src/context.ts | 18 +- packages/bsky/src/courier.ts | 6 +- packages/bsky/src/data-plane/bsync/index.ts | 12 +- packages/bsky/src/data-plane/client.ts | 2 +- .../bsky/src/data-plane/server/background.ts | 2 +- .../data-plane/server/db/database-schema.ts | 54 +- packages/bsky/src/data-plane/server/db/db.ts | 12 +- .../bsky/src/data-plane/server/db/util.ts | 4 +- packages/bsky/src/data-plane/server/index.ts | 10 +- .../src/data-plane/server/indexing/index.ts | 42 +- .../server/indexing/plugins/block.ts | 8 +- .../indexing/plugins/chat-declaration.ts | 8 +- .../server/indexing/plugins/feed-generator.ts | 8 +- .../server/indexing/plugins/follow.ts | 10 +- .../server/indexing/plugins/labeler.ts | 8 +- .../server/indexing/plugins/like.ts | 10 +- .../server/indexing/plugins/list-block.ts | 8 +- .../server/indexing/plugins/list-item.ts | 10 +- .../server/indexing/plugins/list.ts | 10 +- .../server/indexing/plugins/post-gate.ts | 10 +- .../server/indexing/plugins/post.ts | 36 +- .../server/indexing/plugins/profile.ts | 10 +- .../server/indexing/plugins/repost.ts | 8 +- .../server/indexing/plugins/starter-pack.ts | 8 +- .../server/indexing/plugins/thread-gate.ts | 10 +- .../data-plane/server/indexing/processor.ts | 6 +- .../src/data-plane/server/routes/feeds.ts | 2 +- .../src/data-plane/server/routes/follows.ts | 2 +- .../src/data-plane/server/routes/identity.ts | 4 +- .../src/data-plane/server/routes/index.ts | 4 +- .../data-plane/server/routes/interactions.ts | 2 +- .../src/data-plane/server/routes/labels.ts | 4 +- .../src/data-plane/server/routes/likes.ts | 2 +- .../src/data-plane/server/routes/lists.ts | 4 +- .../src/data-plane/server/routes/mutes.ts | 4 +- .../src/data-plane/server/routes/notifs.ts | 6 +- .../src/data-plane/server/routes/posts.ts | 2 +- .../src/data-plane/server/routes/profile.ts | 8 +- .../src/data-plane/server/routes/quotes.ts | 2 +- .../src/data-plane/server/routes/records.ts | 4 +- .../data-plane/server/routes/relationships.ts | 2 +- .../src/data-plane/server/routes/reposts.ts | 2 +- .../data-plane/server/routes/suggestions.ts | 2 +- .../src/data-plane/server/subscription.ts | 6 +- packages/bsky/src/data-plane/server/util.ts | 4 +- packages/bsky/src/error.ts | 2 +- packages/bsky/src/feature-gates.ts | 2 - packages/bsky/src/hydration/feed.ts | 18 +- packages/bsky/src/hydration/graph.ts | 8 +- packages/bsky/src/hydration/hydrator.ts | 54 +- packages/bsky/src/hydration/label.ts | 8 +- packages/bsky/src/hydration/util.ts | 4 +- packages/bsky/src/image/index.ts | 2 +- packages/bsky/src/image/server.ts | 25 +- packages/bsky/src/image/sharp.ts | 4 +- packages/bsky/src/index.ts | 46 +- packages/bsky/src/logger.ts | 2 +- packages/bsky/src/redis.ts | 2 +- packages/bsky/src/util/http.ts | 2 +- packages/bsky/src/util/uris.ts | 2 +- packages/bsky/src/views/index.ts | 45 +- packages/bsky/src/views/types.ts | 18 +- packages/bsky/src/views/util.ts | 8 +- packages/bsky/tests/_util.ts | 9 +- packages/bsky/tests/admin/admin-auth.test.ts | 4 +- packages/bsky/tests/admin/moderation.test.ts | 2 +- packages/bsky/tests/auth.test.ts | 2 +- packages/bsky/tests/blob-resolver.test.ts | 4 +- .../data-plane/duplicate-records.test.ts | 6 +- .../data-plane/handle-invalidation.test.ts | 4 +- .../bsky/tests/data-plane/indexing.test.ts | 16 +- .../tests/data-plane/subscription.test.ts | 2 +- .../tests/data-plane/thread-mutes.test.ts | 2 +- packages/bsky/tests/entryway-auth.test.ts | 10 +- packages/bsky/tests/feed-generation.test.ts | 16 +- packages/bsky/tests/hydration/util.test.ts | 2 +- packages/bsky/tests/image/server.test.ts | 4 +- packages/bsky/tests/image/uri.test.ts | 4 +- packages/bsky/tests/label-hydration.test.ts | 2 +- packages/bsky/tests/postgates.test.ts | 5 +- packages/bsky/tests/query-labels.test.ts | 2 +- .../bsky/tests/seed/feed-hidden-replies.ts | 2 +- packages/bsky/tests/seed/known-followers.ts | 2 +- packages/bsky/tests/seed/postgates.ts | 2 +- packages/bsky/tests/server.test.ts | 4 +- .../tests/views/account-deactivation.test.ts | 2 +- packages/bsky/tests/views/actor-likes.test.ts | 2 +- .../bsky/tests/views/actor-search.test.ts | 4 +- packages/bsky/tests/views/author-feed.test.ts | 20 +- packages/bsky/tests/views/block-lists.test.ts | 6 +- packages/bsky/tests/views/blocks.test.ts | 8 +- .../tests/views/feed-hidden-replies.test.ts | 5 +- .../bsky/tests/views/feed-view-post.test.ts | 4 +- packages/bsky/tests/views/follows.test.ts | 4 +- .../bsky/tests/views/known-followers.test.ts | 5 +- .../bsky/tests/views/labeler-service.test.ts | 4 +- .../tests/views/labels-needs-review.test.ts | 4 +- .../bsky/tests/views/labels-takedown.test.ts | 2 +- packages/bsky/tests/views/likes.test.ts | 4 +- packages/bsky/tests/views/list-feed.test.ts | 4 +- packages/bsky/tests/views/lists.test.ts | 4 +- packages/bsky/tests/views/mute-lists.test.ts | 6 +- packages/bsky/tests/views/mutes.test.ts | 4 +- .../bsky/tests/views/notifications.test.ts | 6 +- packages/bsky/tests/views/posts.test.ts | 6 +- packages/bsky/tests/views/profile.test.ts | 6 +- packages/bsky/tests/views/quotes.test.ts | 4 +- packages/bsky/tests/views/reposts.test.ts | 4 +- .../bsky/tests/views/starter-packs.test.ts | 6 +- .../tests/views/suggested-follows.test.ts | 4 +- packages/bsky/tests/views/suggestions.test.ts | 4 +- packages/bsky/tests/views/thread.test.ts | 4 +- .../bsky/tests/views/threadgating.test.ts | 6 +- packages/bsky/tests/views/timeline.test.ts | 10 +- packages/bsync/bin/migration-create.ts | 4 +- packages/bsync/package.json | 3 + packages/bsync/src/config.ts | 2 +- packages/bsync/src/context.ts | 6 +- packages/bsync/src/db/index.ts | 16 +- packages/bsync/src/db/schema/index.ts | 4 +- packages/bsync/src/db/types.ts | 2 +- packages/bsync/src/index.ts | 10 +- packages/bsync/src/logger.ts | 2 +- .../bsync/src/routes/add-mute-operation.ts | 8 +- .../bsync/src/routes/add-notif-operation.ts | 8 +- packages/bsync/src/routes/auth.ts | 2 +- packages/bsync/src/routes/index.ts | 6 +- .../bsync/src/routes/scan-mute-operations.ts | 4 +- .../bsync/src/routes/scan-notif-operations.ts | 4 +- packages/bsync/tests/mutes.test.ts | 4 +- packages/bsync/tests/notifications.test.ts | 4 +- packages/common-web/src/tid.ts | 4 +- packages/common-web/tests/check.test.ts | 2 +- packages/common-web/tests/tid.test.ts | 2 +- packages/common/package.json | 3 + packages/common/src/fs.ts | 4 +- packages/common/src/ipld.ts | 8 +- packages/common/src/logger.ts | 4 +- packages/common/src/streams.ts | 2 +- packages/common/tests/ipld-multi.test.ts | 2 +- packages/common/tests/ipld-vectors.ts | 2 - packages/common/tests/ipld.test.ts | 2 +- packages/common/tests/streams.test.ts | 2 +- packages/crypto/package.json | 3 + packages/crypto/src/did.ts | 3 +- packages/crypto/src/p256/keypair.ts | 7 +- packages/crypto/src/p256/operations.ts | 1 - packages/crypto/src/p256/plugin.ts | 9 +- packages/crypto/src/plugins.ts | 6 +- packages/crypto/src/secp256k1/keypair.ts | 3 - packages/crypto/src/secp256k1/operations.ts | 1 - packages/crypto/src/secp256k1/plugin.ts | 9 +- packages/crypto/src/verify.ts | 2 +- packages/crypto/tests/did.test.ts | 2 +- packages/crypto/tests/key-compression.test.ts | 8 +- packages/crypto/tests/keypairs.test.ts | 6 +- packages/crypto/tests/signatures.test.ts | 18 +- packages/dev-env/package.json | 3 + packages/dev-env/src/bsky.ts | 6 +- packages/dev-env/src/feed-gen.ts | 10 +- packages/dev-env/src/introspect.ts | 6 +- packages/dev-env/src/mock/index.ts | 6 +- packages/dev-env/src/moderator-client.ts | 4 +- packages/dev-env/src/network-no-appview.ts | 8 +- packages/dev-env/src/network.ts | 16 +- packages/dev-env/src/ozone-service-profile.ts | 2 +- packages/dev-env/src/ozone.ts | 10 +- packages/dev-env/src/pds.ts | 10 +- packages/dev-env/src/plc.ts | 2 +- packages/dev-env/src/seed/author-feed.ts | 2 +- packages/dev-env/src/seed/basic.ts | 4 +- packages/dev-env/src/seed/client.ts | 11 +- packages/dev-env/src/seed/likes.ts | 2 +- packages/dev-env/src/seed/quotes.ts | 2 +- packages/dev-env/src/seed/reposts.ts | 2 +- packages/dev-env/src/types.ts | 4 +- packages/dev-env/src/util.ts | 6 +- packages/did/src/atproto.ts | 5 +- packages/did/src/did-document.ts | 1 - packages/identity/package.json | 3 + packages/identity/src/did/atproto-data.ts | 12 +- packages/identity/src/did/base-resolver.ts | 10 +- packages/identity/src/did/did-resolver.ts | 10 +- packages/identity/src/did/memory-cache.ts | 2 +- packages/identity/src/did/plc-resolver.ts | 2 +- packages/identity/src/did/web-resolver.ts | 2 +- packages/identity/src/handle/index.ts | 2 +- packages/identity/src/id-resolver.ts | 2 +- packages/identity/tests/did-cache.test.ts | 8 +- packages/identity/tests/did-resolver.test.ts | 8 +- .../identity/tests/handle-resolver.test.ts | 2 +- packages/identity/tests/web/db.ts | 2 - packages/identity/tests/web/server.ts | 6 +- .../did-resolver/src/did-cache-memory.ts | 1 - .../internal/did-resolver/src/did-cache.ts | 5 +- .../did-resolver/src/did-resolver-base.ts | 7 +- .../internal/did-resolver/src/did-resolver.ts | 1 - .../internal/did-resolver/src/methods/plc.ts | 3 +- .../internal/did-resolver/src/methods/web.ts | 5 +- packages/internal/fetch-node/package.json | 3 + packages/internal/fetch-node/src/safe.ts | 3 +- packages/internal/fetch-node/src/unicast.ts | 12 +- packages/internal/fetch/src/fetch-response.ts | 5 +- .../handle-resolver-node/package.json | 3 + .../src/atproto-handle-resolver-node.ts | 1 - .../src/node-resolve-txt-factory.ts | 1 - .../src/app-view-handle-resolver.ts | 3 +- .../src/atproto-doh-handle-resolver.ts | 2 +- .../src/cached-handle-resolver.ts | 2 +- .../src/identity-resolver.ts | 6 +- .../package.json | 6 + .../src/index.ts | 1 - .../internal/simple-store-memory/src/index.ts | 3 +- .../simple-store/src/cached-getter.ts | 2 +- packages/lex-cli/package.json | 3 + packages/lex-cli/src/codegen/client.ts | 14 +- packages/lex-cli/src/codegen/common.ts | 4 +- packages/lex-cli/src/codegen/lex-gen.ts | 16 +- packages/lex-cli/src/codegen/server.ts | 14 +- packages/lex-cli/src/codegen/util.ts | 2 +- packages/lex-cli/src/index.ts | 14 +- packages/lex-cli/src/mdgen/index.ts | 2 +- packages/lex-cli/src/util.ts | 10 +- packages/lexicon/src/blob-refs.ts | 2 +- packages/lexicon/src/lexicons.ts | 14 +- packages/lexicon/src/serialize.ts | 6 +- packages/lexicon/src/validation.ts | 1 - packages/lexicon/src/validators/blob.ts | 2 +- packages/lexicon/src/validators/complex.ts | 3 +- packages/lexicon/src/validators/formats.ts | 8 +- packages/lexicon/src/validators/primitives.ts | 10 +- packages/lexicon/src/validators/xrpc.ts | 5 +- packages/oauth/jwk-jose/src/jose-key.ts | 29 +- .../oauth/jwk-webcrypto/src/webcrypto-key.ts | 3 +- packages/oauth/jwk/src/jwks.ts | 1 - packages/oauth/jwk/src/jwt.ts | 1 - .../rollup.config.js | 9 +- .../auth/credential/use-credential-auth.ts | 2 +- .../src/auth/oauth/use-oauth.ts | 1 - .../src/browser-oauth-client.ts | 7 +- .../src/browser-oauth-database.ts | 5 +- .../src/indexed-db-store.ts | 2 +- .../oauth-client-browser/src/indexed-db/db.ts | 2 +- packages/oauth/oauth-client-node/package.json | 3 + .../oauth-client-node/src/node-dpop-store.ts | 2 +- .../src/node-oauth-client.ts | 10 +- .../src/atproto-token-response.ts | 5 +- packages/oauth/oauth-client/src/fetch-dpop.ts | 4 +- ...-authorization-server-metadata-resolver.ts | 14 +- .../oauth/oauth-client/src/oauth-client.ts | 21 +- ...th-protected-resource-metadata-resolver.ts | 8 +- .../oauth/oauth-client/src/oauth-resolver.ts | 11 +- .../oauth-client/src/oauth-response-error.ts | 2 +- .../oauth-client/src/oauth-server-agent.ts | 5 +- .../oauth-client/src/oauth-server-factory.ts | 3 +- .../oauth/oauth-client/src/oauth-session.ts | 3 +- packages/oauth/oauth-client/src/runtime.ts | 3 +- .../oauth/oauth-client/src/session-getter.ts | 7 +- .../oauth/oauth-client/src/state-store.ts | 2 +- packages/oauth/oauth-client/src/types.ts | 5 +- .../src/validate-client-metadata.ts | 1 - packages/oauth/oauth-provider/package.json | 3 + .../oauth/oauth-provider/rollup.config.js | 9 +- .../src/account/account-store.ts | 3 +- .../oauth-provider/src/account/account.ts | 2 +- .../src/assets/app/hooks/use-api.ts | 3 +- .../oauth-provider/src/assets/app/lib/api.ts | 1 - .../src/assets/assets-middleware.ts | 1 - .../oauth/oauth-provider/src/assets/index.ts | 5 +- .../oauth-provider/src/client/client-auth.ts | 3 +- .../src/client/client-manager.ts | 27 +- .../oauth-provider/src/client/client-store.ts | 1 - .../oauth-provider/src/client/client-utils.ts | 1 - .../oauth/oauth-provider/src/client/client.ts | 27 +- .../oauth-provider/src/device/device-data.ts | 1 - .../src/device/device-details.ts | 1 - .../oauth-provider/src/device/device-id.ts | 1 - .../src/device/device-manager.ts | 5 +- .../oauth-provider/src/device/session-id.ts | 1 - .../oauth-provider/src/dpop/dpop-manager.ts | 2 - .../oauth-provider/src/dpop/dpop-nonce.ts | 1 - .../errors/invalid-client-metadata-error.ts | 2 +- .../src/errors/invalid-token-error.ts | 3 +- .../src/errors/www-authenticate-error.ts | 1 - .../oauth-provider/src/lib/http/accept.ts | 1 - .../oauth-provider/src/lib/http/middleware.ts | 2 +- .../oauth-provider/src/lib/http/request.ts | 5 +- .../oauth-provider/src/lib/http/response.ts | 1 - .../oauth-provider/src/lib/http/stream.ts | 7 +- .../src/lib/util/authorization-header.ts | 3 +- .../oauth-provider/src/lib/util/hostname.ts | 2 +- .../src/metadata/build-metadata.ts | 1 - .../oauth/oauth-provider/src/oauth-hooks.ts | 1 - .../oauth-provider/src/oauth-provider.ts | 17 +- .../oauth-provider/src/oauth-verifier.ts | 3 +- .../src/output/build-authorize-data.ts | 1 - .../src/output/build-error-payload.ts | 3 +- .../src/output/output-manager.ts | 5 +- .../src/output/send-authorize-redirect.ts | 3 +- .../src/output/send-web-page.ts | 5 +- .../src/replay/replay-manager.ts | 2 +- .../src/replay/replay-store-redis.ts | 1 - .../oauth/oauth-provider/src/request/code.ts | 1 - .../src/request/request-data.ts | 1 - .../oauth-provider/src/request/request-id.ts | 1 - .../src/request/request-info.ts | 2 +- .../src/request/request-manager.ts | 7 +- .../src/request/request-store-memory.ts | 2 +- .../src/request/request-store-redis.ts | 3 +- .../oauth-provider/src/request/request-uri.ts | 1 - .../src/signer/signed-token-payload.ts | 3 +- .../oauth/oauth-provider/src/signer/signer.ts | 3 +- .../oauth-provider/src/token/refresh-token.ts | 1 - .../oauth-provider/src/token/token-claims.ts | 3 +- .../oauth-provider/src/token/token-data.ts | 1 - .../oauth-provider/src/token/token-id.ts | 1 - .../oauth-provider/src/token/token-manager.ts | 3 +- .../src/token/verify-token-claims.ts | 1 - .../src/oauth-authorization-request-jar.ts | 2 +- .../src/oauth-authorization-request-par.ts | 1 - .../oauth-authorization-request-parameters.ts | 3 +- .../src/oauth-authorization-request-query.ts | 1 - .../src/oauth-authorization-request-uri.ts | 1 - .../oauth-authorization-server-metadata.ts | 1 - .../src/oauth-client-credentials.ts | 3 +- .../src/oauth-client-id-loopback.ts | 2 +- .../oauth-types/src/oauth-client-metadata.ts | 3 +- .../src/oauth-protected-resource-metadata.ts | 1 - .../oauth-types/src/oauth-redirect-uri.ts | 4 +- .../oauth-types/src/oauth-token-response.ts | 3 +- packages/oauth/oauth-types/src/uri.ts | 17 +- packages/ozone/bin/migration-create.ts | 4 +- packages/ozone/package.json | 3 + .../ozone/src/api/chat/getActorMetadata.ts | 4 +- .../ozone/src/api/chat/getMessageContext.ts | 4 +- packages/ozone/src/api/chat/index.ts | 2 +- .../src/api/communication/createTemplate.ts | 4 +- .../src/api/communication/deleteTemplate.ts | 2 +- .../src/api/communication/listTemplates.ts | 2 +- .../src/api/communication/updateTemplate.ts | 4 +- packages/ozone/src/api/health.ts | 8 +- packages/ozone/src/api/index.ts | 42 +- packages/ozone/src/api/label/fetchLabels.ts | 2 +- packages/ozone/src/api/label/queryLabels.ts | 6 +- .../ozone/src/api/label/subscribeLabels.ts | 6 +- .../ozone/src/api/moderation/emitEvent.ts | 12 +- packages/ozone/src/api/moderation/getEvent.ts | 2 +- .../ozone/src/api/moderation/getRecord.ts | 4 +- .../ozone/src/api/moderation/getRecords.ts | 4 +- packages/ozone/src/api/moderation/getRepo.ts | 2 +- packages/ozone/src/api/moderation/getRepos.ts | 2 +- .../ozone/src/api/moderation/queryEvents.ts | 2 +- .../ozone/src/api/moderation/queryStatuses.ts | 2 +- .../ozone/src/api/moderation/searchRepos.ts | 4 +- packages/ozone/src/api/proxied.ts | 2 +- packages/ozone/src/api/report/createReport.ts | 10 +- packages/ozone/src/api/server/getConfig.ts | 2 +- packages/ozone/src/api/set/addValues.ts | 2 +- packages/ozone/src/api/set/deleteSet.ts | 2 +- packages/ozone/src/api/set/deleteValues.ts | 2 +- packages/ozone/src/api/set/getValues.ts | 2 +- packages/ozone/src/api/set/querySets.ts | 2 +- packages/ozone/src/api/set/upsertSet.ts | 2 +- packages/ozone/src/api/setting/listOptions.ts | 2 +- .../ozone/src/api/setting/removeOptions.ts | 4 +- .../ozone/src/api/setting/upsertOption.ts | 10 +- packages/ozone/src/api/team/addMember.ts | 2 +- packages/ozone/src/api/team/deleteMember.ts | 2 +- packages/ozone/src/api/team/listMembers.ts | 2 +- packages/ozone/src/api/team/updateMember.ts | 2 +- packages/ozone/src/api/util.ts | 22 +- packages/ozone/src/api/well-known.ts | 8 +- .../src/communication-service/template.ts | 2 +- packages/ozone/src/config/config.ts | 2 +- packages/ozone/src/config/secrets.ts | 2 +- packages/ozone/src/context.ts | 27 +- packages/ozone/src/daemon/blob-diverter.ts | 15 +- packages/ozone/src/daemon/context.ts | 14 +- packages/ozone/src/daemon/event-pusher.ts | 12 +- packages/ozone/src/daemon/event-reverser.ts | 2 +- packages/ozone/src/daemon/index.ts | 2 +- .../src/daemon/materialized-view-refresher.ts | 2 +- packages/ozone/src/db/index.ts | 16 +- ...220T144630860Z-stats-materialized-views.ts | 4 +- packages/ozone/src/db/pagination.ts | 2 +- packages/ozone/src/db/schema/index.ts | 23 +- .../db/schema/moderation_subject_status.ts | 2 +- packages/ozone/src/db/types.ts | 2 +- packages/ozone/src/error.ts | 2 +- packages/ozone/src/index.ts | 22 +- packages/ozone/src/logger.ts | 2 +- packages/ozone/src/mod-service/index.ts | 66 +- packages/ozone/src/mod-service/status.ts | 2 +- packages/ozone/src/mod-service/subject.ts | 8 +- packages/ozone/src/mod-service/types.ts | 4 +- packages/ozone/src/mod-service/views.ts | 33 +- packages/ozone/src/sequencer/outbox.ts | 4 +- packages/ozone/src/sequencer/sequencer.ts | 12 +- packages/ozone/src/set/service.ts | 4 +- packages/ozone/src/setting/service.ts | 10 +- packages/ozone/src/setting/validators.ts | 2 +- .../ozone/src/tag-service/embed-tagger.ts | 6 +- packages/ozone/src/tag-service/index.ts | 6 +- .../ozone/src/tag-service/language-tagger.ts | 3 +- packages/ozone/src/team/index.ts | 12 +- packages/ozone/src/util.ts | 4 +- packages/ozone/tests/3p-labeler.test.ts | 10 +- packages/ozone/tests/_util.ts | 8 +- .../tests/ack-all-subjects-of-account.test.ts | 8 +- packages/ozone/tests/blob-divert.test.ts | 2 +- .../tests/communication-templates.test.ts | 2 +- packages/ozone/tests/content-tagger.test.ts | 2 +- packages/ozone/tests/get-config.test.ts | 2 +- packages/ozone/tests/get-lists.test.ts | 8 +- packages/ozone/tests/get-profiles.test.ts | 5 +- packages/ozone/tests/get-record.test.ts | 8 +- packages/ozone/tests/get-records.test.ts | 8 +- packages/ozone/tests/get-repo.test.ts | 6 +- packages/ozone/tests/get-repos.test.ts | 6 +- packages/ozone/tests/get-starter-pack.test.ts | 10 +- .../ozone/tests/moderation-appeals.test.ts | 12 +- .../ozone/tests/moderation-events.test.ts | 8 +- .../tests/moderation-status-tags.test.ts | 4 +- .../ozone/tests/moderation-statuses.test.ts | 16 +- packages/ozone/tests/moderation.test.ts | 18 +- packages/ozone/tests/protected-tags.test.ts | 6 +- packages/ozone/tests/query-labels.test.ts | 6 +- .../tests/record-and-account-events.test.ts | 15 +- packages/ozone/tests/repo-search.test.ts | 4 +- packages/ozone/tests/report-muting.test.ts | 12 +- packages/ozone/tests/sequencer.test.ts | 6 +- packages/ozone/tests/server.test.ts | 2 +- packages/ozone/tests/sets.test.ts | 4 +- packages/ozone/tests/settings.test.ts | 4 +- packages/ozone/tests/takedown.test.ts | 15 +- packages/ozone/tests/team.test.ts | 2 +- packages/pds/bin/migration-create.ts | 4 +- packages/pds/package.json | 3 + packages/pds/src/account-manager/db/index.ts | 2 +- .../db/schema/authorization-request.ts | 2 +- .../src/account-manager/db/schema/device.ts | 2 +- .../src/account-manager/db/schema/index.ts | 14 +- .../src/account-manager/db/schema/token.ts | 3 +- .../db/schema/used-refresh-token.ts | 2 +- .../src/account-manager/helpers/account.ts | 4 +- .../helpers/authorization-request.ts | 4 +- .../account-manager/helpers/device-account.ts | 3 +- .../pds/src/account-manager/helpers/device.ts | 6 +- .../account-manager/helpers/email-token.ts | 2 +- .../pds/src/account-manager/helpers/invite.ts | 2 +- .../src/account-manager/helpers/password.ts | 4 +- .../pds/src/account-manager/helpers/scrypt.ts | 4 +- .../pds/src/account-manager/helpers/token.ts | 2 +- packages/pds/src/account-manager/index.ts | 7 +- .../pds/src/actor-store/actor-store-reader.ts | 2 +- packages/pds/src/actor-store/actor-store.ts | 8 +- packages/pds/src/actor-store/blob/reader.ts | 4 +- .../pds/src/actor-store/blob/transactor.ts | 20 +- packages/pds/src/actor-store/db/index.ts | 2 +- .../pds/src/actor-store/db/schema/index.ts | 6 +- packages/pds/src/actor-store/migrate.ts | 2 +- .../src/actor-store/preference/transactor.ts | 4 +- packages/pds/src/actor-store/record/reader.ts | 4 +- .../pds/src/actor-store/record/transactor.ts | 6 +- packages/pds/src/actor-store/repo/reader.ts | 2 - .../src/actor-store/repo/sql-repo-reader.ts | 8 +- .../actor-store/repo/sql-repo-transactor.ts | 4 +- .../pds/src/actor-store/repo/transactor.ts | 8 +- .../src/api/app/bsky/actor/getPreferences.ts | 4 +- .../pds/src/api/app/bsky/actor/getProfile.ts | 4 +- .../pds/src/api/app/bsky/actor/getProfiles.ts | 4 +- packages/pds/src/api/app/bsky/actor/index.ts | 3 +- .../src/api/app/bsky/actor/putPreferences.ts | 4 +- .../src/api/app/bsky/feed/getActorLikes.ts | 4 +- .../src/api/app/bsky/feed/getAuthorFeed.ts | 6 +- packages/pds/src/api/app/bsky/feed/getFeed.ts | 8 +- .../src/api/app/bsky/feed/getPostThread.ts | 13 +- .../pds/src/api/app/bsky/feed/getTimeline.ts | 4 +- packages/pds/src/api/app/bsky/feed/index.ts | 2 +- packages/pds/src/api/app/bsky/index.ts | 2 +- .../src/api/app/bsky/notification/index.ts | 2 +- .../api/app/bsky/notification/registerPush.ts | 8 +- .../pds/src/api/app/bsky/util/resolver.ts | 2 +- .../api/com/atproto/admin/deleteAccount.ts | 4 +- .../atproto/admin/disableAccountInvites.ts | 2 +- .../com/atproto/admin/disableInviteCodes.ts | 2 +- .../com/atproto/admin/enableAccountInvites.ts | 2 +- .../api/com/atproto/admin/getAccountInfo.ts | 5 +- .../api/com/atproto/admin/getAccountInfos.ts | 2 +- .../api/com/atproto/admin/getInviteCodes.ts | 8 +- .../api/com/atproto/admin/getSubjectStatus.ts | 2 +- .../pds/src/api/com/atproto/admin/index.ts | 18 +- .../src/api/com/atproto/admin/sendEmail.ts | 4 +- .../com/atproto/admin/updateAccountEmail.ts | 2 +- .../com/atproto/admin/updateAccountHandle.ts | 2 +- .../atproto/admin/updateAccountPassword.ts | 2 +- .../com/atproto/admin/updateSubjectStatus.ts | 6 +- .../pds/src/api/com/atproto/admin/util.ts | 2 +- .../identity/getRecommendedDidCredentials.ts | 2 +- .../pds/src/api/com/atproto/identity/index.ts | 6 +- .../identity/requestPlcOperationSignature.ts | 6 +- .../api/com/atproto/identity/resolveHandle.ts | 4 +- .../com/atproto/identity/signPlcOperation.ts | 6 +- .../atproto/identity/submitPlcOperation.ts | 4 +- .../api/com/atproto/identity/updateHandle.ts | 6 +- packages/pds/src/api/com/atproto/index.ts | 2 +- .../com/atproto/moderation/createReport.ts | 8 +- .../src/api/com/atproto/moderation/index.ts | 2 +- .../src/api/com/atproto/repo/applyWrites.ts | 16 +- .../src/api/com/atproto/repo/createRecord.ts | 7 +- .../src/api/com/atproto/repo/deleteRecord.ts | 11 +- .../src/api/com/atproto/repo/describeRepo.ts | 6 +- .../pds/src/api/com/atproto/repo/getRecord.ts | 4 +- .../src/api/com/atproto/repo/importRepo.ts | 14 +- .../pds/src/api/com/atproto/repo/index.ts | 6 +- .../api/com/atproto/repo/listMissingBlobs.ts | 2 +- .../src/api/com/atproto/repo/listRecords.ts | 4 +- .../pds/src/api/com/atproto/repo/putRecord.ts | 6 +- .../src/api/com/atproto/repo/uploadBlob.ts | 4 +- .../api/com/atproto/server/activateAccount.ts | 5 +- .../com/atproto/server/checkAccountStatus.ts | 2 +- .../api/com/atproto/server/confirmEmail.ts | 4 +- .../api/com/atproto/server/createAccount.ts | 13 +- .../com/atproto/server/createAppPassword.ts | 3 +- .../com/atproto/server/createInviteCode.ts | 2 +- .../com/atproto/server/createInviteCodes.ts | 4 +- .../api/com/atproto/server/createSession.ts | 3 +- .../com/atproto/server/deactivateAccount.ts | 2 +- .../api/com/atproto/server/deleteAccount.ts | 4 +- .../api/com/atproto/server/deleteSession.ts | 2 +- .../api/com/atproto/server/describeServer.ts | 2 +- .../atproto/server/getAccountInviteCodes.ts | 6 +- .../api/com/atproto/server/getServiceAuth.ts | 8 +- .../src/api/com/atproto/server/getSession.ts | 7 +- .../pds/src/api/com/atproto/server/index.ts | 45 +- .../com/atproto/server/listAppPasswords.ts | 3 +- .../api/com/atproto/server/refreshSession.ts | 5 +- .../atproto/server/requestAccountDelete.ts | 4 +- .../server/requestEmailConfirmation.ts | 4 +- .../com/atproto/server/requestEmailUpdate.ts | 6 +- .../atproto/server/requestPasswordReset.ts | 2 +- .../com/atproto/server/reserveSigningKey.ts | 2 +- .../api/com/atproto/server/resetPassword.ts | 4 +- .../com/atproto/server/revokeAppPassword.ts | 3 +- .../src/api/com/atproto/server/updateEmail.ts | 6 +- .../pds/src/api/com/atproto/server/util.ts | 6 +- .../atproto/sync/deprecated/getCheckout.ts | 2 +- .../com/atproto/sync/deprecated/getHead.ts | 2 +- .../pds/src/api/com/atproto/sync/getBlob.ts | 8 +- .../pds/src/api/com/atproto/sync/getBlocks.ts | 4 +- .../api/com/atproto/sync/getLatestCommit.ts | 2 +- .../pds/src/api/com/atproto/sync/getRecord.ts | 8 +- .../pds/src/api/com/atproto/sync/getRepo.ts | 8 +- .../src/api/com/atproto/sync/getRepoStatus.ts | 4 +- .../pds/src/api/com/atproto/sync/index.ts | 10 +- .../pds/src/api/com/atproto/sync/listBlobs.ts | 4 +- .../pds/src/api/com/atproto/sync/listRepos.ts | 6 +- .../api/com/atproto/sync/subscribeRepos.ts | 4 +- packages/pds/src/api/com/atproto/sync/util.ts | 2 +- .../api/com/atproto/temp/checkSignupQueue.ts | 4 +- .../pds/src/api/com/atproto/temp/index.ts | 2 +- packages/pds/src/api/index.ts | 4 +- packages/pds/src/api/proxy.ts | 2 +- packages/pds/src/auth-routes.ts | 5 +- packages/pds/src/auth-verifier.ts | 5 +- packages/pds/src/basic-routes.ts | 8 +- packages/pds/src/config/config.ts | 2 +- packages/pds/src/config/env.ts | 2 +- packages/pds/src/context.ts | 51 +- packages/pds/src/crawlers.ts | 2 +- packages/pds/src/db/db.ts | 10 +- packages/pds/src/db/migrator.ts | 2 +- packages/pds/src/db/tables/moderation.ts | 4 +- packages/pds/src/db/util.ts | 4 +- packages/pds/src/did-cache/db/index.ts | 2 +- packages/pds/src/did-cache/index.ts | 2 +- packages/pds/src/disk-blobstore.ts | 14 +- packages/pds/src/error.ts | 4 +- packages/pds/src/handle/index.ts | 4 +- packages/pds/src/image/index.ts | 4 +- packages/pds/src/index.ts | 28 +- packages/pds/src/logger.ts | 2 +- packages/pds/src/mailer/index.ts | 3 +- packages/pds/src/mailer/moderation.ts | 2 +- .../src/mailer/templates/confirm-email.d.ts | 2 +- .../src/mailer/templates/delete-account.d.ts | 2 +- .../src/mailer/templates/plc-operation.d.ts | 2 +- .../src/mailer/templates/reset-password.d.ts | 2 +- .../src/mailer/templates/update-email.d.ts | 2 +- packages/pds/src/oauth/provider.ts | 1 - packages/pds/src/pipethrough.ts | 10 +- packages/pds/src/read-after-write/types.ts | 6 +- packages/pds/src/read-after-write/util.ts | 5 +- packages/pds/src/read-after-write/viewer.ts | 34 +- packages/pds/src/redis.ts | 2 +- packages/pds/src/repo/prepare.ts | 36 +- packages/pds/src/repo/types.ts | 4 +- packages/pds/src/scripts/rebuild-repo.ts | 4 +- packages/pds/src/sequencer/db/index.ts | 2 +- packages/pds/src/sequencer/events.ts | 6 +- packages/pds/src/sequencer/outbox.ts | 4 +- packages/pds/src/sequencer/sequencer.ts | 24 +- packages/pds/src/util/compression.ts | 2 +- packages/pds/src/util/params.ts | 2 +- packages/pds/src/well-known.ts | 8 +- packages/pds/tests/_util.ts | 10 +- packages/pds/tests/account-deletion.test.ts | 14 +- packages/pds/tests/account-migration.test.ts | 6 +- packages/pds/tests/account.test.ts | 4 +- packages/pds/tests/app-passwords.test.ts | 2 +- packages/pds/tests/blob-deletes.test.ts | 4 +- packages/pds/tests/create-post.test.ts | 6 +- packages/pds/tests/crud.test.ts | 10 +- packages/pds/tests/email-confirmation.test.ts | 10 +- packages/pds/tests/entryway.test.ts | 10 +- packages/pds/tests/file-uploads.test.ts | 14 +- packages/pds/tests/handles.test.ts | 6 +- packages/pds/tests/invites-admin.test.ts | 2 +- packages/pds/tests/moderation.test.ts | 4 +- packages/pds/tests/moderator-auth.test.ts | 8 +- packages/pds/tests/oauth.test.ts | 8 +- packages/pds/tests/plc-operations.test.ts | 12 +- packages/pds/tests/preferences.test.ts | 4 +- packages/pds/tests/proxied/admin.test.ts | 4 +- packages/pds/tests/proxied/feedgen.test.ts | 8 +- packages/pds/tests/proxied/notif.test.ts | 10 +- packages/pds/tests/proxied/procedures.test.ts | 2 +- .../pds/tests/proxied/proxy-catchall.test.ts | 12 +- .../pds/tests/proxied/proxy-header.test.ts | 10 +- .../tests/proxied/read-after-write.test.ts | 12 +- packages/pds/tests/proxied/views.test.ts | 6 +- packages/pds/tests/races.test.ts | 4 +- packages/pds/tests/rate-limits.test.ts | 2 +- packages/pds/tests/sequencer.test.ts | 14 +- packages/pds/tests/server.test.ts | 8 +- packages/pds/tests/sync/list.test.ts | 2 +- .../pds/tests/sync/subscribe-repos.test.ts | 18 +- packages/pds/tests/sync/sync.test.ts | 6 +- packages/pds/tests/takedown-appeal.test.ts | 2 +- packages/repo/bench/mst.bench.ts | 4 +- packages/repo/package.json | 3 + packages/repo/src/block-map.ts | 4 +- packages/repo/src/data-diff.ts | 6 +- packages/repo/src/mst/diff.ts | 4 +- packages/repo/src/mst/mst.ts | 17 +- packages/repo/src/mst/util.ts | 6 +- packages/repo/src/mst/walker.ts | 2 - packages/repo/src/parse.ts | 6 +- packages/repo/src/readable-repo.ts | 14 +- packages/repo/src/repo.ts | 18 +- .../repo/src/storage/memory-blockstore.ts | 4 +- .../repo/src/storage/readable-blockstore.ts | 4 +- packages/repo/src/storage/sync-storage.ts | 4 +- packages/repo/src/storage/types.ts | 6 +- packages/repo/src/sync/consumer.ts | 14 +- packages/repo/src/sync/provider.ts | 6 +- packages/repo/src/types.ts | 8 +- packages/repo/src/util.ts | 25 +- packages/repo/tests/_util.ts | 18 +- packages/repo/tests/commit-data.test.ts | 2 +- packages/repo/tests/mst.test.ts | 8 +- packages/repo/tests/proofs.test.ts | 1 - packages/repo/tests/repo.test.ts | 6 +- packages/repo/tests/sync.test.ts | 5 +- packages/sync/package.json | 3 + packages/sync/src/events.ts | 2 +- packages/sync/src/firehose/index.ts | 30 +- packages/sync/src/firehose/lexicons.ts | 3 +- packages/sync/src/runner/memory-runner.ts | 2 - packages/sync/src/util.ts | 2 +- packages/sync/tests/firehose.test.ts | 6 +- packages/syntax/src/aturi_validation.ts | 2 +- packages/syntax/tests/aturi.test.ts | 4 +- packages/syntax/tests/datetime.test.ts | 8 +- packages/syntax/tests/did.test.ts | 6 +- packages/syntax/tests/handle.test.ts | 8 +- packages/syntax/tests/nsid.test.ts | 8 +- packages/syntax/tests/recordkey.test.ts | 6 +- packages/syntax/tests/tid.test.ts | 6 +- packages/xrpc-server/package.json | 3 + packages/xrpc-server/src/auth.ts | 2 +- packages/xrpc-server/src/rate-limiter.ts | 2 +- packages/xrpc-server/src/server.ts | 41 +- packages/xrpc-server/src/stream/frames.ts | 8 +- packages/xrpc-server/src/stream/server.ts | 6 +- packages/xrpc-server/src/stream/stream.ts | 6 +- .../xrpc-server/src/stream/subscription.ts | 2 +- .../src/stream/websocket-keepalive.ts | 2 +- packages/xrpc-server/src/types.ts | 70 +- packages/xrpc-server/src/util.ts | 19 +- packages/xrpc-server/tests/_util.ts | 2 +- packages/xrpc-server/tests/auth.test.ts | 8 +- packages/xrpc-server/tests/bodies.test.ts | 8 +- packages/xrpc-server/tests/errors.test.ts | 2 +- packages/xrpc-server/tests/frames.test.ts | 2 +- packages/xrpc-server/tests/ipld.test.ts | 4 +- packages/xrpc-server/tests/parameters.test.ts | 2 +- packages/xrpc-server/tests/procedures.test.ts | 4 +- packages/xrpc-server/tests/queries.test.ts | 2 +- packages/xrpc-server/tests/responses.test.ts | 4 +- packages/xrpc-server/tests/stream.test.ts | 6 +- .../xrpc-server/tests/subscriptions.test.ts | 10 +- packages/xrpc/src/client.ts | 2 +- packages/xrpc/src/index.ts | 2 + packages/xrpc/src/util.ts | 4 +- pnpm-lock.yaml | 895 ++++++++++++++++++ services/bsky/api.js | 8 +- services/bsync/index.js | 4 +- services/ozone/api.js | 6 +- services/pds/index.js | 2 +- services/pds/run-script.js | 2 +- services/pds/tracer.js | 5 +- 818 files changed, 3563 insertions(+), 2717 deletions(-) create mode 100644 .changeset/fair-tigers-thank.md create mode 100644 .changeset/mighty-actors-complain.md create mode 100644 .changeset/olive-teachers-yawn.md create mode 100644 .vscode/settings.json delete mode 100644 packages/api/bench/agent.bench.ts diff --git a/.changeset/fair-tigers-thank.md b/.changeset/fair-tigers-thank.md new file mode 100644 index 00000000000..9491e3c47c2 --- /dev/null +++ b/.changeset/fair-tigers-thank.md @@ -0,0 +1,41 @@ +--- +"@atproto-labs/rollup-plugin-bundle-manifest": patch +"@atproto/oauth-client-browser-example": patch +"@atproto-labs/handle-resolver-node": patch +"@atproto-labs/simple-store-memory": patch +"@atproto-labs/identity-resolver": patch +"@atproto/oauth-client-browser": patch +"@atproto-labs/handle-resolver": patch +"@atproto/oauth-client-node": patch +"@atproto-labs/did-resolver": patch +"@atproto-labs/simple-store": patch +"@atproto/oauth-provider": patch +"@atproto-labs/fetch-node": patch +"@atproto/jwk-webcrypto": patch +"@atproto/oauth-client": patch +"@atproto/oauth-types": patch +"@atproto-labs/fetch": patch +"@atproto/jwk-jose": patch +"@atproto/xrpc-server": patch +"@atproto/common-web": patch +"@atproto/jwk": patch +"@atproto/identity": patch +"@atproto/dev-env": patch +"@atproto/lex-cli": patch +"@atproto/lexicon": patch +"@atproto/common": patch +"@atproto/crypto": patch +"@atproto/syntax": patch +"@atproto/bsync": patch +"@atproto/ozone": patch +"@atproto/bsky": patch +"@atproto/repo": patch +"@atproto/sync": patch +"@atproto/xrpc": patch +"@atproto/api": patch +"@atproto/aws": patch +"@atproto/did": patch +"@atproto/pds": patch +--- + +Apply new linting rules regarding import order diff --git a/.changeset/mighty-actors-complain.md b/.changeset/mighty-actors-complain.md new file mode 100644 index 00000000000..02236e7d574 --- /dev/null +++ b/.changeset/mighty-actors-complain.md @@ -0,0 +1,22 @@ +--- +"@atproto-labs/rollup-plugin-bundle-manifest": patch +"@atproto-labs/handle-resolver-node": patch +"@atproto/oauth-client-node": patch +"@atproto/oauth-provider": patch +"@atproto-labs/fetch-node": patch +"@atproto/xrpc-server": patch +"@atproto/identity": patch +"@atproto/dev-env": patch +"@atproto/lex-cli": patch +"@atproto/common": patch +"@atproto/crypto": patch +"@atproto/bsync": patch +"@atproto/ozone": patch +"@atproto/bsky": patch +"@atproto/repo": patch +"@atproto/sync": patch +"@atproto/aws": patch +"@atproto/pds": patch +--- + +Update NodeJS engine requirement to >=18.7.0 diff --git a/.changeset/olive-teachers-yawn.md b/.changeset/olive-teachers-yawn.md new file mode 100644 index 00000000000..2211f115909 --- /dev/null +++ b/.changeset/olive-teachers-yawn.md @@ -0,0 +1,5 @@ +--- +"@atproto/oauth-types": patch +--- + +Support environments not providing URL.canParse diff --git a/.eslintrc b/.eslintrc index 8529167b1fd..8afe9bb56dc 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,24 +1,48 @@ { "root": true, - // parse TypeScript files - // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser - "parser": "@typescript-eslint/parser", - // configure eslint using options described at - // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin - "plugins": ["@typescript-eslint"], "extends": [ "eslint:recommended", + "plugin:@typescript-eslint/base", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended", - "prettier" + "plugin:import/recommended", + "plugin:import/typescript" ], + "plugins": ["n"], "ignorePatterns": ["dist", "node_modules"], "rules": { "no-var": "error", "prefer-const": "warn", "no-misleading-character-class": "warn", "eqeqeq": ["error", "always", { "null": "ignore" }], + "n/global-require": "error", + "n/no-extraneous-import": "error", + "n/prefer-node-protocol": "error", + "import/extensions": ["off", "ignorePackages"], + "import/export": "off", + "import/namespace": "off", + "import/no-deprecated": "error", + "import/no-absolute-path": "error", + "import/no-dynamic-require": "error", + "import/no-self-import": "error", + "import/order": [ + "error", + { + "named": true, + "distinctGroup": true, + "alphabetize": { "order": "asc" }, + "newlines-between": "never", + "groups": [ + "builtin", + "external", + "internal", + "parent", + ["index", "sibling"], + "object" + ] + } + ], "@typescript-eslint/no-unused-vars": [ "warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } @@ -43,6 +67,33 @@ "rules": { "@typescript-eslint/no-var-requires": "off" } + }, + { + "files": ["**/*.test.ts", "**/tests/**/*.ts"], + "rules": { + "n/no-extraneous-import": [ + "error", + { "allowModules": ["@atproto/dev-env"] } + ] + } + } + ], + "settings": { + "node": { "version": ">=18.7.0" }, + "import/internal-regex": "^@atproto(?:-labs)?/", + "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, + "import/resolver": { + "typescript": { + "project": [ + "tsconfig.json", + "packages/oauth/*/tsconfig.json", + "packages/internal/*/tsconfig.json", + "packages/*/tsconfig.json" + ] + }, + "node": { + "extensions": [".js", ".jsx", ".json"] + } } - ] + } } diff --git a/.gitignore b/.gitignore index dccb907cf77..cda9f5843e8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,12 +5,12 @@ yarn-error.log packages/**/dist .idea packages/*/coverage -.vscode/ test.sqlite .DS_Store *.log *.tsbuildinfo .*.env +.env.* .env \#*\# *~ diff --git a/.prettierignore b/.prettierignore index 16e700de3db..681b5d03670 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,12 +1,8 @@ node_modules interop-test-files +__snapshots__ dist -build -.nyc_output -coverage pnpm-lock.yaml .pnpm* .changeset -*.d.ts -packages/bsky/src/data-plane/gen CHANGELOG.md diff --git a/.prettierrc b/.prettierrc index 078e423519b..d7161f6af07 100644 --- a/.prettierrc +++ b/.prettierrc @@ -9,6 +9,13 @@ "options": { "singleQuote": false } + }, + { + "files": [".eslintrc"], + "options": { + "parser": "json", + "trailingComma": "none" + } } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..b5230afc1a4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "files.associations": { + "**/tsconfig/*.json": "jsonc" + } +} diff --git a/package.json b/package.json index e9de3327688..2601cf8493d 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "MIT", "private": true, "engines": { - "node": "18" + "node": ">=18.7.0" }, "packageManager": "pnpm@8.15.9", "scripts": { @@ -43,6 +43,9 @@ "dotenv": "^16.0.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-n": "^17.15.0", "eslint-plugin-prettier": "^5.1.3", "jest": "^28.1.2", "node-gyp": "^9.3.1", diff --git a/packages/api/bench/agent.bench.ts b/packages/api/bench/agent.bench.ts deleted file mode 100644 index 333fbd49a20..00000000000 --- a/packages/api/bench/agent.bench.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BskyAgent } from '@atproto/api' - -describe('Agent Benchmarks', () => { - it('Creates new Agent instance 10 times', () => { - for (let i = 0; i < 10; i++) { - new BskyAgent({ service: 'https://bsky.social' }) - } - }) -}) diff --git a/packages/api/src/agent.ts b/packages/api/src/agent.ts index 7613e58d1fa..b0be3ba7946 100644 --- a/packages/api/src/agent.ts +++ b/packages/api/src/agent.ts @@ -1,12 +1,7 @@ +import AwaitLock from 'await-lock' import { TID } from '@atproto/common-web' import { AtUri, ensureValidDid } from '@atproto/syntax' -import { - buildFetchHandler, - BuildFetchHandlerOptions, - FetchHandler, - XrpcClient, -} from '@atproto/xrpc' -import AwaitLock from 'await-lock' +import { FetchHandler, XrpcClient, buildFetchHandler } from '@atproto/xrpc' import { AppBskyActorDefs, AppBskyActorProfile, @@ -38,14 +33,14 @@ import { BskyThreadViewPreference, } from './types' import { - asDid, Did, + asDid, getSavedFeedType, isDid, sanitizeMutedWordValue, savedFeedsToUriArrays, - validateSavedFeed, validateNux, + validateSavedFeed, } from './util' const FEED_VIEW_PREF_DEFAULTS = { diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 43d46020e18..8ced8afe4ea 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -4,10 +4,10 @@ import { lexicons as internalLexicons } from './client/lexicons' export { AtUri } from '@atproto/syntax' export { BlobRef, + jsonStringToLex, + jsonToLex, lexToJson, stringifyLex, - jsonToLex, - jsonStringToLex, } from '@atproto/lexicon' export { parseLanguage } from '@atproto/common-web' export * from './types' @@ -22,7 +22,7 @@ export * from './rich-text/util' export * from './moderation' export * from './moderation/types' export * from './mocker' -export { LABELS, DEFAULT_LABEL_SETTINGS } from './moderation/const/labels' +export { DEFAULT_LABEL_SETTINGS, LABELS } from './moderation/const/labels' export { Agent } from './agent' export { AtpAgent, type AtpAgentOptions } from './atp-agent' diff --git a/packages/api/src/mocker.ts b/packages/api/src/mocker.ts index 556dba965c8..905268de8d4 100644 --- a/packages/api/src/mocker.ts +++ b/packages/api/src/mocker.ts @@ -1,11 +1,11 @@ import { - ComAtprotoLabelDefs, - AppBskyFeedDefs, AppBskyActorDefs, - AppBskyFeedPost, AppBskyEmbedRecord, + AppBskyFeedDefs, + AppBskyFeedPost, AppBskyGraphDefs, AppBskyNotificationListNotifications, + ComAtprotoLabelDefs, } from './client' const FAKE_CID = 'bafyreiclp443lavogvhj3d2ob2cxbfuscni2k5jk7bebjzg7khl3esabwq' diff --git a/packages/api/src/moderation/decision.ts b/packages/api/src/moderation/decision.ts index 042a90bbe45..bc33e100ca6 100644 --- a/packages/api/src/moderation/decision.ts +++ b/packages/api/src/moderation/decision.ts @@ -1,20 +1,20 @@ import { AppBskyGraphDefs } from '../client/index' +import { LABELS } from './const/labels' import { BLOCK_BEHAVIOR, - MUTE_BEHAVIOR, - MUTEWORD_BEHAVIOR, + CUSTOM_LABEL_VALUE_RE, HIDE_BEHAVIOR, - NOOP_BEHAVIOR, Label, LabelPreference, - ModerationCause, - ModerationOpts, LabelTarget, + MUTEWORD_BEHAVIOR, + MUTE_BEHAVIOR, ModerationBehavior, - CUSTOM_LABEL_VALUE_RE, + ModerationCause, + ModerationOpts, + NOOP_BEHAVIOR, } from './types' import { ModerationUI } from './ui' -import { LABELS } from './const/labels' enum ModerationBehaviorSeverity { High, diff --git a/packages/api/src/moderation/index.ts b/packages/api/src/moderation/index.ts index 503e635c816..b2375899fab 100644 --- a/packages/api/src/moderation/index.ts +++ b/packages/api/src/moderation/index.ts @@ -1,18 +1,18 @@ -import { - ModerationSubjectProfile, - ModerationSubjectPost, - ModerationSubjectNotification, - ModerationSubjectFeedGenerator, - ModerationSubjectUserList, - ModerationOpts, -} from './types' +import { ModerationDecision } from './decision' import { decideAccount } from './subjects/account' -import { decideProfile } from './subjects/profile' +import { decideFeedGenerator } from './subjects/feed-generator' import { decideNotification } from './subjects/notification' import { decidePost } from './subjects/post' -import { decideFeedGenerator } from './subjects/feed-generator' +import { decideProfile } from './subjects/profile' import { decideUserList } from './subjects/user-list' -import { ModerationDecision } from './decision' +import { + ModerationOpts, + ModerationSubjectFeedGenerator, + ModerationSubjectNotification, + ModerationSubjectPost, + ModerationSubjectProfile, + ModerationSubjectUserList, +} from './types' export { ModerationUI } from './ui' export { ModerationDecision } from './decision' diff --git a/packages/api/src/moderation/subjects/account.ts b/packages/api/src/moderation/subjects/account.ts index a1c873b7dd5..6014d46ffad 100644 --- a/packages/api/src/moderation/subjects/account.ts +++ b/packages/api/src/moderation/subjects/account.ts @@ -1,5 +1,5 @@ import { ModerationDecision } from '../decision' -import { Label, ModerationSubjectProfile, ModerationOpts } from '../types' +import { Label, ModerationOpts, ModerationSubjectProfile } from '../types' export function decideAccount( subject: ModerationSubjectProfile, diff --git a/packages/api/src/moderation/subjects/feed-generator.ts b/packages/api/src/moderation/subjects/feed-generator.ts index 3afada34b2d..8568f90f0ed 100644 --- a/packages/api/src/moderation/subjects/feed-generator.ts +++ b/packages/api/src/moderation/subjects/feed-generator.ts @@ -1,5 +1,5 @@ import { ModerationDecision } from '../decision' -import { ModerationSubjectFeedGenerator, ModerationOpts } from '../types' +import { ModerationOpts, ModerationSubjectFeedGenerator } from '../types' import { decideAccount } from './account' import { decideProfile } from './profile' diff --git a/packages/api/src/moderation/subjects/notification.ts b/packages/api/src/moderation/subjects/notification.ts index 610766866a8..2e3a8a09f9d 100644 --- a/packages/api/src/moderation/subjects/notification.ts +++ b/packages/api/src/moderation/subjects/notification.ts @@ -1,5 +1,5 @@ import { ModerationDecision } from '../decision' -import { ModerationSubjectNotification, ModerationOpts } from '../types' +import { ModerationOpts, ModerationSubjectNotification } from '../types' import { decideAccount } from './account' import { decideProfile } from './profile' diff --git a/packages/api/src/moderation/subjects/post.ts b/packages/api/src/moderation/subjects/post.ts index f17ec40293f..8d0b7c6db5b 100644 --- a/packages/api/src/moderation/subjects/post.ts +++ b/packages/api/src/moderation/subjects/post.ts @@ -1,14 +1,14 @@ -import { ModerationDecision } from '../decision' import { - AppBskyFeedPost, + AppBskyActorDefs, + AppBskyEmbedExternal, AppBskyEmbedImages, AppBskyEmbedRecord, AppBskyEmbedRecordWithMedia, - AppBskyEmbedExternal, - AppBskyActorDefs, + AppBskyFeedPost, } from '../../client' -import { ModerationSubjectPost, ModerationOpts } from '../types' +import { ModerationDecision } from '../decision' import { hasMutedWord } from '../mutewords' +import { ModerationOpts, ModerationSubjectPost } from '../types' import { decideAccount } from './account' import { decideProfile } from './profile' diff --git a/packages/api/src/moderation/subjects/profile.ts b/packages/api/src/moderation/subjects/profile.ts index f76e2bfa730..0dfcf67b658 100644 --- a/packages/api/src/moderation/subjects/profile.ts +++ b/packages/api/src/moderation/subjects/profile.ts @@ -1,5 +1,5 @@ import { ModerationDecision } from '../decision' -import { Label, ModerationSubjectProfile, ModerationOpts } from '../types' +import { Label, ModerationOpts, ModerationSubjectProfile } from '../types' export function decideProfile( subject: ModerationSubjectProfile, diff --git a/packages/api/src/moderation/subjects/user-list.ts b/packages/api/src/moderation/subjects/user-list.ts index f5ed15177d9..f2d5f408702 100644 --- a/packages/api/src/moderation/subjects/user-list.ts +++ b/packages/api/src/moderation/subjects/user-list.ts @@ -1,7 +1,7 @@ import { AtUri } from '@atproto/syntax' import { AppBskyActorDefs } from '../../client/index' import { ModerationDecision } from '../decision' -import { ModerationSubjectUserList, ModerationOpts } from '../types' +import { ModerationOpts, ModerationSubjectUserList } from '../types' import { decideAccount } from './account' import { decideProfile } from './profile' diff --git a/packages/api/src/moderation/types.ts b/packages/api/src/moderation/types.ts index bbf8d842f23..6d2371b113c 100644 --- a/packages/api/src/moderation/types.ts +++ b/packages/api/src/moderation/types.ts @@ -1,8 +1,8 @@ import { AppBskyActorDefs, AppBskyFeedDefs, - AppBskyNotificationListNotifications, AppBskyGraphDefs, + AppBskyNotificationListNotifications, ComAtprotoLabelDefs, } from '../client/index' import { KnownLabelValue } from './const/labels' diff --git a/packages/api/src/moderation/util.ts b/packages/api/src/moderation/util.ts index c7ac5bdf975..4c4c4eb210e 100644 --- a/packages/api/src/moderation/util.ts +++ b/packages/api/src/moderation/util.ts @@ -6,9 +6,9 @@ import { } from '../client' import { InterpretedLabelValueDefinition, - ModerationBehavior, LabelPreference, LabelValueDefinitionFlag, + ModerationBehavior, } from './types' export function isQuotedPost(embed: unknown): embed is AppBskyEmbedRecord.View { diff --git a/packages/api/src/rich-text/detection.ts b/packages/api/src/rich-text/detection.ts index 8d1e05521f9..f4b190e10fc 100644 --- a/packages/api/src/rich-text/detection.ts +++ b/packages/api/src/rich-text/detection.ts @@ -2,10 +2,10 @@ import TLDs from 'tlds' import { AppBskyRichtextFacet } from '../client' import { UnicodeString } from './unicode' import { - URL_REGEX, MENTION_REGEX, TAG_REGEX, TRAILING_PUNCTUATION_REGEX, + URL_REGEX, } from './util' export type Facet = AppBskyRichtextFacet.Main diff --git a/packages/api/src/rich-text/rich-text.ts b/packages/api/src/rich-text/rich-text.ts index 2b7d0227bc0..44f48b5f4b8 100644 --- a/packages/api/src/rich-text/rich-text.ts +++ b/packages/api/src/rich-text/rich-text.ts @@ -92,9 +92,9 @@ F: 0 1 2 3 4 5 6 7 8 910 // string indices */ import { AppBskyFeedPost, AppBskyRichtextFacet, AtpBaseClient } from '../client' -import { UnicodeString } from './unicode' -import { sanitizeRichText } from './sanitization' import { detectFacets } from './detection' +import { sanitizeRichText } from './sanitization' +import { UnicodeString } from './unicode' export type Facet = AppBskyRichtextFacet.Main export type FacetLink = AppBskyRichtextFacet.Link diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index 145ffba7fbe..5e9e28bf044 100644 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -1,9 +1,8 @@ -import { AtUri } from '@atproto/syntax' +import { z } from 'zod' import { TID } from '@atproto/common-web' -import zod from 'zod' - -import { Nux } from './client/types/app/bsky/actor/defs' +import { AtUri } from '@atproto/syntax' import { AppBskyActorDefs } from './client' +import { Nux } from './client/types/app/bsky/actor/defs' export function sanitizeMutedWordValue(value: string) { return ( @@ -97,12 +96,12 @@ export const asDid = (value: string): Did => { throw new TypeError(`Invalid DID: ${value}`) } -export const nuxSchema = zod +export const nuxSchema = z .object({ - id: zod.string().max(64), - completed: zod.boolean(), - data: zod.string().max(300).optional(), - expiresAt: zod.string().datetime().optional(), + id: z.string().max(64), + completed: z.boolean(), + data: z.string().max(300).optional(), + expiresAt: z.string().datetime().optional(), }) .strict() diff --git a/packages/api/tests/atp-agent.test.ts b/packages/api/tests/atp-agent.test.ts index b2387dba3c8..823faf63682 100644 --- a/packages/api/tests/atp-agent.test.ts +++ b/packages/api/tests/atp-agent.test.ts @@ -1,5 +1,5 @@ -import { TestNetworkNoAppView } from '@atproto/dev-env' import { TID } from '@atproto/common-web' +import { TestNetworkNoAppView } from '@atproto/dev-env' import { AppBskyActorDefs, AppBskyActorProfile, diff --git a/packages/api/tests/dispatcher.test.ts b/packages/api/tests/dispatcher.test.ts index 0c686aa966a..11c4802ca25 100644 --- a/packages/api/tests/dispatcher.test.ts +++ b/packages/api/tests/dispatcher.test.ts @@ -1,13 +1,13 @@ +import assert from 'node:assert' import { AddressInfo } from 'node:net' -import assert from 'assert' +import { getPdsEndpoint, isValidDidDoc } from '@atproto/common-web' +import { TestNetworkNoAppView } from '@atproto/dev-env' import { AtpAgent, - AtpSessionEvent, AtpSessionData, + AtpSessionEvent, BSKY_LABELER_DID, } from '../src' -import { TestNetworkNoAppView } from '@atproto/dev-env' -import { getPdsEndpoint, isValidDidDoc } from '@atproto/common-web' import { createHeaderEchoServer } from './util/echo-server' const getPdsEndpointUrl = (...args: Parameters) => { diff --git a/packages/api/tests/errors.test.ts b/packages/api/tests/errors.test.ts index 2d903f2f17e..e2cfff26875 100644 --- a/packages/api/tests/errors.test.ts +++ b/packages/api/tests/errors.test.ts @@ -1,5 +1,5 @@ -import { AtpAgent, ComAtprotoServerCreateAccount } from '..' import { TestNetworkNoAppView } from '@atproto/dev-env' +import { AtpAgent, ComAtprotoServerCreateAccount } from '..' describe('errors', () => { let network: TestNetworkNoAppView diff --git a/packages/api/tests/moderation-behaviors.test.ts b/packages/api/tests/moderation-behaviors.test.ts index 7e8b54a69a0..a180828b59b 100644 --- a/packages/api/tests/moderation-behaviors.test.ts +++ b/packages/api/tests/moderation-behaviors.test.ts @@ -1,10 +1,10 @@ -import { moderateProfile, moderatePost } from '../src' +import { moderatePost, moderateProfile } from '../src' import { ModerationBehaviorSuiteRunner, - SuiteUsers, + ModerationTestSuiteScenario, SuiteConfigurations, SuiteScenarios, - ModerationTestSuiteScenario, + SuiteUsers, } from './util/moderation-behavior' const USERS: SuiteUsers = { diff --git a/packages/api/tests/moderation-custom-labels.test.ts b/packages/api/tests/moderation-custom-labels.test.ts index 3e051fb0498..0af184aeb06 100644 --- a/packages/api/tests/moderation-custom-labels.test.ts +++ b/packages/api/tests/moderation-custom-labels.test.ts @@ -1,10 +1,10 @@ import { - moderateProfile, - moderatePost, - mock, - ModerationOpts, InterpretedLabelValueDefinition, + ModerationOpts, interpretLabelValueDefinition, + mock, + moderatePost, + moderateProfile, } from '../src' import './util/moderation-behavior' diff --git a/packages/api/tests/moderation-mutewords.test.ts b/packages/api/tests/moderation-mutewords.test.ts index 681dddc73d8..b8eb014ee56 100644 --- a/packages/api/tests/moderation-mutewords.test.ts +++ b/packages/api/tests/moderation-mutewords.test.ts @@ -1,5 +1,4 @@ import { RichText, mock, moderatePost } from '../src/' - import { hasMutedWord } from '../src/moderation/mutewords' describe(`hasMutedWord`, () => { diff --git a/packages/api/tests/moderation-quoteposts.test.ts b/packages/api/tests/moderation-quoteposts.test.ts index 1ed415d3231..2041f190396 100644 --- a/packages/api/tests/moderation-quoteposts.test.ts +++ b/packages/api/tests/moderation-quoteposts.test.ts @@ -1,9 +1,9 @@ import { - moderatePost, - mock, - ModerationOpts, InterpretedLabelValueDefinition, + ModerationOpts, interpretLabelValueDefinition, + mock, + moderatePost, } from '../src' import './util/moderation-behavior' diff --git a/packages/api/tests/moderation.test.ts b/packages/api/tests/moderation.test.ts index d7d3f9d47bc..f85e4a5325a 100644 --- a/packages/api/tests/moderation.test.ts +++ b/packages/api/tests/moderation.test.ts @@ -1,11 +1,11 @@ +import { ModerationOpts } from '../dist' import { - moderateProfile, - moderatePost, - mock, interpretLabelValueDefinition, + mock, + moderatePost, + moderateProfile, } from '../src' import './util/moderation-behavior' -import { ModerationOpts } from '../dist' describe('Moderation', () => { it('Applies self-labels on profiles according to the global preferences', () => { diff --git a/packages/api/tests/rich-text-sanitization.test.ts b/packages/api/tests/rich-text-sanitization.test.ts index 6e2a889473d..45365df1fff 100644 --- a/packages/api/tests/rich-text-sanitization.test.ts +++ b/packages/api/tests/rich-text-sanitization.test.ts @@ -1,4 +1,4 @@ -import { RichText, sanitizeRichText, Facet, UnicodeString } from '../src' +import { Facet, RichText, UnicodeString, sanitizeRichText } from '../src' describe('sanitizeRichText: cleanNewlines', () => { it('removes more than two consecutive new lines', () => { diff --git a/packages/api/tests/util/moderation-behavior.ts b/packages/api/tests/util/moderation-behavior.ts index 9cc8a9a0761..f30986852f9 100644 --- a/packages/api/tests/util/moderation-behavior.ts +++ b/packages/api/tests/util/moderation-behavior.ts @@ -1,8 +1,8 @@ import { - ModerationUI, - ModerationOpts, ComAtprotoLabelDefs, LabelPreference, + ModerationOpts, + ModerationUI, } from '../../src' import { mock as m } from '../../src/mocker' diff --git a/packages/aws/package.json b/packages/aws/package.json index b277284b583..752d6850761 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -18,6 +18,9 @@ "scripts": { "build": "tsc --build tsconfig.build.json" }, + "engines": { + "node": ">=18.7.0" + }, "dependencies": { "@atproto/common": "workspace:^", "@atproto/crypto": "workspace:^", diff --git a/packages/aws/src/kms.ts b/packages/aws/src/kms.ts index da2eb1836db..7589307dd6d 100644 --- a/packages/aws/src/kms.ts +++ b/packages/aws/src/kms.ts @@ -1,8 +1,8 @@ import * as aws from '@aws-sdk/client-kms' import { secp256k1 as noble } from '@noble/curves/secp256k1' +import KeyEncoder from 'key-encoder' import * as ui8 from 'uint8arrays' import * as crypto from '@atproto/crypto' -import KeyEncoder from 'key-encoder' const keyEncoder = new KeyEncoder('secp256k1') diff --git a/packages/aws/src/s3.ts b/packages/aws/src/s3.ts index 81014d63f7d..682a5a0cc8b 100644 --- a/packages/aws/src/s3.ts +++ b/packages/aws/src/s3.ts @@ -1,9 +1,9 @@ +import stream from 'node:stream' import * as aws from '@aws-sdk/client-s3' import { Upload } from '@aws-sdk/lib-storage' -import { BlobStore, BlobNotFoundError } from '@atproto/repo' -import { randomStr } from '@atproto/crypto' import { CID } from 'multiformats/cid' -import stream from 'stream' +import { randomStr } from '@atproto/crypto' +import { BlobNotFoundError, BlobStore } from '@atproto/repo' export type S3Config = { bucket: string; uploadTimeoutMs?: number } & Omit< aws.S3ClientConfig, diff --git a/packages/bsky/bin/migration-create.ts b/packages/bsky/bin/migration-create.ts index 27edc5e0979..4d77afd94fd 100644 --- a/packages/bsky/bin/migration-create.ts +++ b/packages/bsky/bin/migration-create.ts @@ -1,7 +1,7 @@ #!/usr/bin/env ts-node -import * as fs from 'fs/promises' -import * as path from 'path' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' export async function main() { const now = new Date() diff --git a/packages/bsky/package.json b/packages/bsky/package.json index 796460106de..069885e6f4e 100644 --- a/packages/bsky/package.json +++ b/packages/bsky/package.json @@ -26,6 +26,9 @@ "migration:create": "ts-node ./bin/migration-create.ts", "buf:gen": "buf generate ../bsync/proto && buf generate ./proto" }, + "engines": { + "node": ">=18.7.0" + }, "dependencies": { "@atproto-labs/fetch-node": "workspace:*", "@atproto-labs/xrpc-utils": "workspace:*", diff --git a/packages/bsky/src/api/app/bsky/actor/getProfile.ts b/packages/bsky/src/api/app/bsky/actor/getProfile.ts index 046312114b6..a28d790459d 100644 --- a/packages/bsky/src/api/app/bsky/actor/getProfile.ts +++ b/packages/bsky/src/api/app/bsky/actor/getProfile.ts @@ -1,15 +1,15 @@ import { InvalidRequestError } from '@atproto/xrpc-server' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfile' -import AppContext from '../../../../context' -import { resHeaders } from '../../../util' -import { createPipeline, noRules } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfile' +import { createPipeline, noRules } from '../../../../pipeline' import { Views } from '../../../../views' +import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getProfile = createPipeline(skeleton, hydration, noRules, presentation) diff --git a/packages/bsky/src/api/app/bsky/actor/getProfiles.ts b/packages/bsky/src/api/app/bsky/actor/getProfiles.ts index 3328bda7ad2..9f7eb8b5ef2 100644 --- a/packages/bsky/src/api/app/bsky/actor/getProfiles.ts +++ b/packages/bsky/src/api/app/bsky/actor/getProfiles.ts @@ -1,16 +1,16 @@ import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfiles' -import AppContext from '../../../../context' -import { resHeaders } from '../../../util' -import { createPipeline, noRules } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' +import { Server } from '../../../../lexicon' import { ids } from '../../../../lexicon/lexicons' +import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfiles' +import { createPipeline, noRules } from '../../../../pipeline' +import { Views } from '../../../../views' +import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getProfile = createPipeline(skeleton, hydration, noRules, presentation) diff --git a/packages/bsky/src/api/app/bsky/actor/getSuggestions.ts b/packages/bsky/src/api/app/bsky/actor/getSuggestions.ts index 4af0927feed..b6f29a2ac25 100644 --- a/packages/bsky/src/api/app/bsky/actor/getSuggestions.ts +++ b/packages/bsky/src/api/app/bsky/actor/getSuggestions.ts @@ -1,18 +1,18 @@ -import { mapDefined, noUndefinedVals } from '@atproto/common' import { AtpAgent } from '@atproto/api' +import { mapDefined, noUndefinedVals } from '@atproto/common' import { HeadersMap } from '@atproto/xrpc' -import AppContext from '../../../../context' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getSuggestions' -import { createPipeline } from '../../../../pipeline' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getSuggestions' +import { createPipeline } from '../../../../pipeline' +import { Views } from '../../../../views' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/actor/searchActors.ts b/packages/bsky/src/api/app/bsky/actor/searchActors.ts index 9e0d944e706..88dc6213cdb 100644 --- a/packages/bsky/src/api/app/bsky/actor/searchActors.ts +++ b/packages/bsky/src/api/app/bsky/actor/searchActors.ts @@ -1,7 +1,10 @@ -import AppContext from '../../../../context' -import { Server } from '../../../../lexicon' -import { mapDefined } from '@atproto/common' import { AtpAgent } from '@atproto/api' +import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/searchActors' import { HydrationFnInput, @@ -10,10 +13,7 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' -import { parseString } from '../../../../hydration/util' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/actor/searchActorsTypeahead.ts b/packages/bsky/src/api/app/bsky/actor/searchActorsTypeahead.ts index e5fbe0e3291..1808833d99f 100644 --- a/packages/bsky/src/api/app/bsky/actor/searchActorsTypeahead.ts +++ b/packages/bsky/src/api/app/bsky/actor/searchActorsTypeahead.ts @@ -1,7 +1,10 @@ -import AppContext from '../../../../context' -import { Server } from '../../../../lexicon' import { AtpAgent } from '@atproto/api' import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/searchActorsTypeahead' import { HydrationFnInput, @@ -10,10 +13,7 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' -import { parseString } from '../../../../hydration/util' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/feed/getActorFeeds.ts b/packages/bsky/src/api/app/bsky/feed/getActorFeeds.ts index 55624324aad..b71bead2d9e 100644 --- a/packages/bsky/src/api/app/bsky/feed/getActorFeeds.ts +++ b/packages/bsky/src/api/app/bsky/feed/getActorFeeds.ts @@ -1,17 +1,17 @@ -import { InvalidRequestError } from '@atproto/xrpc-server' import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorFeeds' -import AppContext from '../../../../context' -import { createPipeline, noRules } from '../../../../pipeline' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorFeeds' +import { createPipeline, noRules } from '../../../../pipeline' +import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/feed/getActorLikes.ts b/packages/bsky/src/api/app/bsky/feed/getActorLikes.ts index 897a1c25149..1c83ddccab2 100644 --- a/packages/bsky/src/api/app/bsky/feed/getActorLikes.ts +++ b/packages/bsky/src/api/app/bsky/feed/getActorLikes.ts @@ -1,20 +1,20 @@ -import { InvalidRequestError } from '@atproto/xrpc-server' import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorLikes' -import AppContext from '../../../../context' -import { clearlyBadCursor, resHeaders } from '../../../util' -import { createPipeline } from '../../../../pipeline' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { FeedItem } from '../../../../hydration/feed' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorLikes' +import { createPipeline } from '../../../../pipeline' import { uriToDid as creatorFromUri } from '../../../../util/uris' -import { FeedItem } from '../../../../hydration/feed' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getActorLikes = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts b/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts index d0804bde221..61ba783196f 100644 --- a/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts +++ b/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts @@ -1,23 +1,23 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getAuthorFeed' -import AppContext from '../../../../context' -import { clearlyBadCursor, resHeaders } from '../../../util' -import { createPipeline } from '../../../../pipeline' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { Actor } from '../../../../hydration/actor' +import { FeedItem, Post } from '../../../../hydration/feed' import { HydrateCtx, HydrationState, Hydrator, mergeStates, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' import { parseString } from '../../../../hydration/util' -import { safePinnedPost, uriToDid } from '../../../../util/uris' -import { Actor } from '../../../../hydration/actor' -import { FeedItem, Post } from '../../../../hydration/feed' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getAuthorFeed' +import { createPipeline } from '../../../../pipeline' import { FeedType } from '../../../../proto/bsky_pb' +import { safePinnedPost, uriToDid } from '../../../../util/uris' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getAuthorFeed = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getFeed.ts b/packages/bsky/src/api/app/bsky/feed/getFeed.ts index decd4a045fd..e61ac0e9474 100644 --- a/packages/bsky/src/api/app/bsky/feed/getFeed.ts +++ b/packages/bsky/src/api/app/bsky/feed/getFeed.ts @@ -1,17 +1,25 @@ -import { mapDefined } from '@atproto/common' +import { AppBskyFeedGetFeedSkeleton, AtpAgent } from '@atproto/api' +import { mapDefined, noUndefinedVals } from '@atproto/common' +import { ResponseType, XRPCError } from '@atproto/xrpc' import { InvalidRequestError, - UpstreamFailureError, ServerTimer, + UpstreamFailureError, serverTimingHeader, } from '@atproto/xrpc-server' -import { ResponseType, XRPCError } from '@atproto/xrpc' -import { AtpAgent, AppBskyFeedGetFeedSkeleton } from '@atproto/api' -import { noUndefinedVals } from '@atproto/common' +import { AppContext } from '../../../../context' +import { + Code, + getServiceEndpoint, + isDataplaneError, + unpackIdentityServices, +} from '../../../../data-plane' +import { FeedItem } from '../../../../hydration/feed' +import { HydrateCtx } from '../../../../hydration/hydrator' +import { Server } from '../../../../lexicon' +import { ids } from '../../../../lexicon/lexicons' import { QueryParams as GetFeedParams } from '../../../../lexicon/types/app/bsky/feed/getFeed' import { OutputSchema as SkeletonOutput } from '../../../../lexicon/types/app/bsky/feed/getFeedSkeleton' -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -19,17 +27,8 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx } from '../../../../hydration/hydrator' -import { FeedItem } from '../../../../hydration/feed' import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb' -import { - Code, - getServiceEndpoint, - isDataplaneError, - unpackIdentityServices, -} from '../../../../data-plane' import { BSKY_USER_AGENT, resHeaders } from '../../../util' -import { ids } from '../../../../lexicon/lexicons' export default function (server: Server, ctx: AppContext) { const getFeed = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getFeedGenerator.ts b/packages/bsky/src/api/app/bsky/feed/getFeedGenerator.ts index 647bfdd090b..12ce1d4dc5c 100644 --- a/packages/bsky/src/api/app/bsky/feed/getFeedGenerator.ts +++ b/packages/bsky/src/api/app/bsky/feed/getFeedGenerator.ts @@ -1,13 +1,13 @@ import { InvalidRequestError } from '@atproto/xrpc-server' -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' -import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb' +import { AppContext } from '../../../../context' import { Code, getServiceEndpoint, isDataplaneError, unpackIdentityServices, } from '../../../../data-plane' +import { Server } from '../../../../lexicon' +import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/feed/getFeedGenerators.ts b/packages/bsky/src/api/app/bsky/feed/getFeedGenerators.ts index 9bf3eaf267d..9f8dea404a9 100644 --- a/packages/bsky/src/api/app/bsky/feed/getFeedGenerators.ts +++ b/packages/bsky/src/api/app/bsky/feed/getFeedGenerators.ts @@ -1,13 +1,13 @@ import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getFeedGenerators' -import AppContext from '../../../../context' -import { createPipeline, noRules } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getFeedGenerators' +import { createPipeline, noRules } from '../../../../pipeline' import { Views } from '../../../../views' import { resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/feed/getLikes.ts b/packages/bsky/src/api/app/bsky/feed/getLikes.ts index e99630452ab..4e09bf00f00 100644 --- a/packages/bsky/src/api/app/bsky/feed/getLikes.ts +++ b/packages/bsky/src/api/app/bsky/feed/getLikes.ts @@ -1,20 +1,19 @@ import { mapDefined } from '@atproto/common' import { normalizeDatetimeAlways } from '@atproto/syntax' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getLikes' -import AppContext from '../../../../context' -import { createPipeline, RulesFnInput } from '../../../../pipeline' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, - mergeStates, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getLikes' +import { RulesFnInput, createPipeline } from '../../../../pipeline' import { uriToDid as creatorFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' -import { InvalidRequestError } from '@atproto/xrpc-server' export default function (server: Server, ctx: AppContext) { const getLikes = createPipeline(skeleton, hydration, noBlocks, presentation) diff --git a/packages/bsky/src/api/app/bsky/feed/getListFeed.ts b/packages/bsky/src/api/app/bsky/feed/getListFeed.ts index 7d30f3ac67c..e750350aba4 100644 --- a/packages/bsky/src/api/app/bsky/feed/getListFeed.ts +++ b/packages/bsky/src/api/app/bsky/feed/getListFeed.ts @@ -1,20 +1,20 @@ -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getListFeed' -import AppContext from '../../../../context' -import { clearlyBadCursor, resHeaders } from '../../../util' -import { createPipeline } from '../../../../pipeline' +import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { FeedItem } from '../../../../hydration/feed' import { HydrateCtx, HydrationState, Hydrator, mergeStates, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' -import { mapDefined } from '@atproto/common' import { parseString } from '../../../../hydration/util' -import { FeedItem } from '../../../../hydration/feed' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getListFeed' +import { createPipeline } from '../../../../pipeline' import { uriToDid } from '../../../../util/uris' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getListFeed = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getPostThread.ts b/packages/bsky/src/api/app/bsky/feed/getPostThread.ts index e15f91aa617..5b6613b72b4 100644 --- a/packages/bsky/src/api/app/bsky/feed/getPostThread.ts +++ b/packages/bsky/src/api/app/bsky/feed/getPostThread.ts @@ -1,12 +1,14 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { ServerConfig } from '../../../../config' +import { AppContext } from '../../../../context' +import { Code, DataPlaneClient, isDataplaneError } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { isNotFoundPost } from '../../../../lexicon/types/app/bsky/feed/defs' import { - QueryParams, OutputSchema, + QueryParams, } from '../../../../lexicon/types/app/bsky/feed/getPostThread' -import AppContext from '../../../../context' -import { ATPROTO_REPO_REV, resHeaders } from '../../../util' import { HydrationFnInput, PresentationFnInput, @@ -14,11 +16,9 @@ import { createPipeline, noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient, isDataplaneError, Code } from '../../../../data-plane' import { postUriToThreadgateUri } from '../../../../util/uris' -import { ServerConfig } from '../../../../config' +import { Views } from '../../../../views' +import { ATPROTO_REPO_REV, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getPostThread = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getPosts.ts b/packages/bsky/src/api/app/bsky/feed/getPosts.ts index 86fa1cc3d72..6b441631054 100644 --- a/packages/bsky/src/api/app/bsky/feed/getPosts.ts +++ b/packages/bsky/src/api/app/bsky/feed/getPosts.ts @@ -1,17 +1,17 @@ import { dedupeStrs, mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getPosts' -import AppContext from '../../../../context' -import { createPipeline } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' +import { Server } from '../../../../lexicon' +import { ids } from '../../../../lexicon/lexicons' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getPosts' +import { createPipeline } from '../../../../pipeline' import { uriToDid as creatorFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' import { resHeaders } from '../../../util' -import { ids } from '../../../../lexicon/lexicons' export default function (server: Server, ctx: AppContext) { const getPosts = createPipeline(skeleton, hydration, noBlocks, presentation) diff --git a/packages/bsky/src/api/app/bsky/feed/getQuotes.ts b/packages/bsky/src/api/app/bsky/feed/getQuotes.ts index 630f02d5dd1..d7c7f95d3dc 100644 --- a/packages/bsky/src/api/app/bsky/feed/getQuotes.ts +++ b/packages/bsky/src/api/app/bsky/feed/getQuotes.ts @@ -1,17 +1,17 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' -import { createPipeline } from '../../../../pipeline' -import { clearlyBadCursor, resHeaders } from '../../../util' +import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { mapDefined } from '@atproto/common' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getQuotes' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getQuotes' +import { createPipeline } from '../../../../pipeline' import { uriToDid } from '../../../../util/uris' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getQuotes = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/getRepostedBy.ts b/packages/bsky/src/api/app/bsky/feed/getRepostedBy.ts index 6055c55798d..cf514bbf84b 100644 --- a/packages/bsky/src/api/app/bsky/feed/getRepostedBy.ts +++ b/packages/bsky/src/api/app/bsky/feed/getRepostedBy.ts @@ -1,16 +1,16 @@ import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getRepostedBy' -import AppContext from '../../../../context' -import { createPipeline } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getRepostedBy' +import { createPipeline } from '../../../../pipeline' import { uriToDid as creatorFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/feed/getSuggestedFeeds.ts b/packages/bsky/src/api/app/bsky/feed/getSuggestedFeeds.ts index ad13b3a0a31..17e91c5449c 100644 --- a/packages/bsky/src/api/app/bsky/feed/getSuggestedFeeds.ts +++ b/packages/bsky/src/api/app/bsky/feed/getSuggestedFeeds.ts @@ -1,7 +1,7 @@ import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' +import { AppContext } from '../../../../context' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/feed/getTimeline.ts b/packages/bsky/src/api/app/bsky/feed/getTimeline.ts index 37f1b601b0b..31930e9995e 100644 --- a/packages/bsky/src/api/app/bsky/feed/getTimeline.ts +++ b/packages/bsky/src/api/app/bsky/feed/getTimeline.ts @@ -1,18 +1,18 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' -import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getTimeline' -import { clearlyBadCursor, resHeaders } from '../../../util' -import { createPipeline } from '../../../../pipeline' +import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { FeedItem } from '../../../../hydration/feed' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' import { parseString } from '../../../../hydration/util' -import { mapDefined } from '@atproto/common' -import { FeedItem } from '../../../../hydration/feed' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getTimeline' +import { createPipeline } from '../../../../pipeline' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getTimeline = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/feed/searchPosts.ts b/packages/bsky/src/api/app/bsky/feed/searchPosts.ts index 853c5453032..d0d31951820 100644 --- a/packages/bsky/src/api/app/bsky/feed/searchPosts.ts +++ b/packages/bsky/src/api/app/bsky/feed/searchPosts.ts @@ -1,7 +1,10 @@ -import AppContext from '../../../../context' -import { Server } from '../../../../lexicon' import { AtpAgent } from '@atproto/api' import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/searchPosts' import { HydrationFnInput, @@ -10,11 +13,8 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' -import { parseString } from '../../../../hydration/util' import { uriToDid as creatorFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/getActorStarterPacks.ts b/packages/bsky/src/api/app/bsky/graph/getActorStarterPacks.ts index e56efe17a3f..744297b9726 100644 --- a/packages/bsky/src/api/app/bsky/graph/getActorStarterPacks.ts +++ b/packages/bsky/src/api/app/bsky/graph/getActorStarterPacks.ts @@ -1,20 +1,20 @@ +import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { parseString } from '../../../../hydration/util' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getActorStarterPacks' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, - noRules, PresentationFnInput, SkeletonFnInput, + createPipeline, + noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { resHeaders } from '../../../util' -import { DataPlaneClient } from '../../../../data-plane' -import { parseString } from '../../../../hydration/util' -import { mapDefined } from '@atproto/common' export default function (server: Server, ctx: AppContext) { const getActorStarterPacks = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/graph/getBlocks.ts b/packages/bsky/src/api/app/bsky/graph/getBlocks.ts index 3042b07ed13..bed8610babd 100644 --- a/packages/bsky/src/api/app/bsky/graph/getBlocks.ts +++ b/packages/bsky/src/api/app/bsky/graph/getBlocks.ts @@ -1,15 +1,15 @@ import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getBlocks' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, - noRules, PresentationFnInput, SkeletonFnInput, + createPipeline, + noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getFollowers.ts b/packages/bsky/src/api/app/bsky/graph/getFollowers.ts index 76a501a3c6e..80594ab1665 100644 --- a/packages/bsky/src/api/app/bsky/graph/getFollowers.ts +++ b/packages/bsky/src/api/app/bsky/graph/getFollowers.ts @@ -1,8 +1,13 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { + HydrateCtx, + Hydrator, + mergeStates, +} from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -11,11 +16,6 @@ import { createPipeline, } from '../../../../pipeline' import { uriToDid as didFromUri } from '../../../../util/uris' -import { - HydrateCtx, - Hydrator, - mergeStates, -} from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getFollows.ts b/packages/bsky/src/api/app/bsky/graph/getFollows.ts index 94aac9cdbcb..46bf7af6677 100644 --- a/packages/bsky/src/api/app/bsky/graph/getFollows.ts +++ b/packages/bsky/src/api/app/bsky/graph/getFollows.ts @@ -1,8 +1,13 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { + HydrateCtx, + Hydrator, + mergeStates, +} from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -10,11 +15,6 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { - HydrateCtx, - Hydrator, - mergeStates, -} from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getKnownFollowers.ts b/packages/bsky/src/api/app/bsky/graph/getKnownFollowers.ts index 71501ba2344..b314e0a1dad 100644 --- a/packages/bsky/src/api/app/bsky/graph/getKnownFollowers.ts +++ b/packages/bsky/src/api/app/bsky/graph/getKnownFollowers.ts @@ -1,8 +1,9 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getKnownFollowers' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -10,7 +11,6 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getList.ts b/packages/bsky/src/api/app/bsky/graph/getList.ts index 995bc294c6e..e009637c489 100644 --- a/packages/bsky/src/api/app/bsky/graph/getList.ts +++ b/packages/bsky/src/api/app/bsky/graph/getList.ts @@ -1,25 +1,25 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { + HydrateCtx, + HydrationState, + Hydrator, + mergeManyStates, +} from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getList' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, PresentationFnInput, RulesFnInput, SkeletonFnInput, + createPipeline, } from '../../../../pipeline' -import { - HydrateCtx, - HydrationState, - Hydrator, - mergeManyStates, -} from '../../../../hydration/hydrator' -import { Views } from '../../../../views' -import { clearlyBadCursor, resHeaders } from '../../../util' import { ListItemInfo } from '../../../../proto/bsky_pb' import { uriToDid as didFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' +import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getList = createPipeline(skeleton, hydration, noBlocks, presentation) diff --git a/packages/bsky/src/api/app/bsky/graph/getListBlocks.ts b/packages/bsky/src/api/app/bsky/graph/getListBlocks.ts index 89f79edbb8f..70fd3c9b4a2 100644 --- a/packages/bsky/src/api/app/bsky/graph/getListBlocks.ts +++ b/packages/bsky/src/api/app/bsky/graph/getListBlocks.ts @@ -1,15 +1,15 @@ import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, - noRules, PresentationFnInput, SkeletonFnInput, + createPipeline, + noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getListMutes.ts b/packages/bsky/src/api/app/bsky/graph/getListMutes.ts index fbd62c215c7..61f951d06d2 100644 --- a/packages/bsky/src/api/app/bsky/graph/getListMutes.ts +++ b/packages/bsky/src/api/app/bsky/graph/getListMutes.ts @@ -1,15 +1,15 @@ import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, - noRules, PresentationFnInput, SkeletonFnInput, + createPipeline, + noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getLists.ts b/packages/bsky/src/api/app/bsky/graph/getLists.ts index 31d241710c2..e913658a9ba 100644 --- a/packages/bsky/src/api/app/bsky/graph/getLists.ts +++ b/packages/bsky/src/api/app/bsky/graph/getLists.ts @@ -1,17 +1,17 @@ import { mapDefined } from '@atproto/common' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getLists' import { REFERENCELIST } from '../../../../lexicon/types/app/bsky/graph/defs' -import AppContext from '../../../../context' +import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getLists' import { - createPipeline, HydrationFnInput, PresentationFnInput, RulesFnInput, SkeletonFnInput, + createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getMutes.ts b/packages/bsky/src/api/app/bsky/graph/getMutes.ts index 1f417c32b39..c28671ad716 100644 --- a/packages/bsky/src/api/app/bsky/graph/getMutes.ts +++ b/packages/bsky/src/api/app/bsky/graph/getMutes.ts @@ -1,9 +1,8 @@ import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getMutes' -import AppContext from '../../../../context' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' import { HydrationFnInput, PresentationFnInput, @@ -11,6 +10,7 @@ import { createPipeline, noRules, } from '../../../../pipeline' +import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/getRelationships.ts b/packages/bsky/src/api/app/bsky/graph/getRelationships.ts index 47aaa6cd083..b311ac918a9 100644 --- a/packages/bsky/src/api/app/bsky/graph/getRelationships.ts +++ b/packages/bsky/src/api/app/bsky/graph/getRelationships.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' export default function (server: Server, ctx: AppContext) { server.app.bsky.graph.getRelationships({ diff --git a/packages/bsky/src/api/app/bsky/graph/getStarterPack.ts b/packages/bsky/src/api/app/bsky/graph/getStarterPack.ts index 770f79294ff..8832bfd5f38 100644 --- a/packages/bsky/src/api/app/bsky/graph/getStarterPack.ts +++ b/packages/bsky/src/api/app/bsky/graph/getStarterPack.ts @@ -1,15 +1,15 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPack' -import AppContext from '../../../../context' import { - createPipeline, HydrationFnInput, - noRules, PresentationFnInput, SkeletonFnInput, + createPipeline, + noRules, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/getStarterPacks.ts b/packages/bsky/src/api/app/bsky/graph/getStarterPacks.ts index 845bc87b19c..dac4baf0315 100644 --- a/packages/bsky/src/api/app/bsky/graph/getStarterPacks.ts +++ b/packages/bsky/src/api/app/bsky/graph/getStarterPacks.ts @@ -1,15 +1,15 @@ import { dedupeStrs, mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPacks' -import AppContext from '../../../../context' -import { resHeaders } from '../../../util' -import { createPipeline, noRules } from '../../../../pipeline' +import { AppContext } from '../../../../context' import { HydrateCtx, HydrationState, Hydrator, } from '../../../../hydration/hydrator' +import { Server } from '../../../../lexicon' +import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPacks' +import { createPipeline, noRules } from '../../../../pipeline' import { Views } from '../../../../views' +import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { const getStarterPacks = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts b/packages/bsky/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts index c7eec21bad9..9aeb9816c81 100644 --- a/packages/bsky/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +++ b/packages/bsky/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts @@ -1,10 +1,11 @@ +import { AtpAgent } from '@atproto/api' import { mapDefined, noUndefinedVals } from '@atproto/common' -import { InvalidRequestError } from '@atproto/xrpc-server' -import AtpAgent from '@atproto/api' import { HeadersMap } from '@atproto/xrpc' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getSuggestedFollowsByActor' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -12,7 +13,6 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' import { resHeaders } from '../../../util' diff --git a/packages/bsky/src/api/app/bsky/graph/muteActor.ts b/packages/bsky/src/api/app/bsky/graph/muteActor.ts index 051e5564b9e..2f25af7966e 100644 --- a/packages/bsky/src/api/app/bsky/graph/muteActor.ts +++ b/packages/bsky/src/api/app/bsky/graph/muteActor.ts @@ -1,6 +1,6 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/muteActorList.ts b/packages/bsky/src/api/app/bsky/graph/muteActorList.ts index 2f9f8c7573f..177e6a7c21f 100644 --- a/packages/bsky/src/api/app/bsky/graph/muteActorList.ts +++ b/packages/bsky/src/api/app/bsky/graph/muteActorList.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/muteThread.ts b/packages/bsky/src/api/app/bsky/graph/muteThread.ts index a0e1cf9df00..013a6772519 100644 --- a/packages/bsky/src/api/app/bsky/graph/muteThread.ts +++ b/packages/bsky/src/api/app/bsky/graph/muteThread.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/searchStarterPacks.ts b/packages/bsky/src/api/app/bsky/graph/searchStarterPacks.ts index 53ca0dba859..5665950a63c 100644 --- a/packages/bsky/src/api/app/bsky/graph/searchStarterPacks.ts +++ b/packages/bsky/src/api/app/bsky/graph/searchStarterPacks.ts @@ -1,7 +1,10 @@ -import AppContext from '../../../../context' -import { Server } from '../../../../lexicon' +import { AtpAgent } from '@atproto/api' import { mapDefined } from '@atproto/common' -import { AtpAgent, AtUri } from '@atproto/api' +import { AppContext } from '../../../../context' +import { DataPlaneClient } from '../../../../data-plane' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/searchStarterPacks' import { HydrationFnInput, @@ -10,12 +13,9 @@ import { SkeletonFnInput, createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' +import { uriToDid as creatorFromUri } from '../../../../util/uris' import { Views } from '../../../../views' -import { DataPlaneClient } from '../../../../data-plane' -import { parseString } from '../../../../hydration/util' import { resHeaders } from '../../../util' -import { uriToDid as creatorFromUri } from '../../../../util/uris' export default function (server: Server, ctx: AppContext) { const searchStarterPacks = createPipeline( diff --git a/packages/bsky/src/api/app/bsky/graph/unmuteActor.ts b/packages/bsky/src/api/app/bsky/graph/unmuteActor.ts index 5462d7a7117..393da722d5c 100644 --- a/packages/bsky/src/api/app/bsky/graph/unmuteActor.ts +++ b/packages/bsky/src/api/app/bsky/graph/unmuteActor.ts @@ -1,6 +1,6 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/unmuteActorList.ts b/packages/bsky/src/api/app/bsky/graph/unmuteActorList.ts index 2c80e42187f..8ebd4c7006c 100644 --- a/packages/bsky/src/api/app/bsky/graph/unmuteActorList.ts +++ b/packages/bsky/src/api/app/bsky/graph/unmuteActorList.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/graph/unmuteThread.ts b/packages/bsky/src/api/app/bsky/graph/unmuteThread.ts index d8e53200317..55507633a38 100644 --- a/packages/bsky/src/api/app/bsky/graph/unmuteThread.ts +++ b/packages/bsky/src/api/app/bsky/graph/unmuteThread.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { MuteOperation_Type } from '../../../../proto/bsync_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/labeler/getServices.ts b/packages/bsky/src/api/app/bsky/labeler/getServices.ts index f5df1cbf5ca..c40b6a4b13f 100644 --- a/packages/bsky/src/api/app/bsky/labeler/getServices.ts +++ b/packages/bsky/src/api/app/bsky/labeler/getServices.ts @@ -1,6 +1,6 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { mapDefined } from '@atproto/common' +import { AppContext } from '../../../../context' +import { Server } from '../../../../lexicon' import { resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/notification/getUnreadCount.ts b/packages/bsky/src/api/app/bsky/notification/getUnreadCount.ts index fe58a66b0a5..1b25638dd10 100644 --- a/packages/bsky/src/api/app/bsky/notification/getUnreadCount.ts +++ b/packages/bsky/src/api/app/bsky/notification/getUnreadCount.ts @@ -1,7 +1,8 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/getUnreadCount' -import AppContext from '../../../../context' import { HydrationFnInput, PresentationFnInput, @@ -9,7 +10,6 @@ import { createPipeline, noRules, } from '../../../../pipeline' -import { Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/notification/listNotifications.ts b/packages/bsky/src/api/app/bsky/notification/listNotifications.ts index 8f4fa2f073e..07d11dac56e 100644 --- a/packages/bsky/src/api/app/bsky/notification/listNotifications.ts +++ b/packages/bsky/src/api/app/bsky/notification/listNotifications.ts @@ -1,20 +1,20 @@ -import { InvalidRequestError } from '@atproto/xrpc-server' import { mapDefined } from '@atproto/common' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' -import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/listNotifications' import { isRecord as isPostRecord } from '../../../../lexicon/types/app/bsky/feed/post' -import AppContext from '../../../../context' +import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/listNotifications' import { - createPipeline, HydrationFnInput, PresentationFnInput, RulesFnInput, SkeletonFnInput, + createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' -import { Views } from '../../../../views' import { Notification } from '../../../../proto/bsky_pb' import { uriToDid as didFromUri } from '../../../../util/uris' +import { Views } from '../../../../views' import { clearlyBadCursor, resHeaders } from '../../../util' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/notification/putPreferences.ts b/packages/bsky/src/api/app/bsky/notification/putPreferences.ts index 7cafa2283ad..901b2549fb5 100644 --- a/packages/bsky/src/api/app/bsky/notification/putPreferences.ts +++ b/packages/bsky/src/api/app/bsky/notification/putPreferences.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' export default function (server: Server, ctx: AppContext) { server.app.bsky.notification.putPreferences({ diff --git a/packages/bsky/src/api/app/bsky/notification/registerPush.ts b/packages/bsky/src/api/app/bsky/notification/registerPush.ts index 32c04b608f7..959a20acec6 100644 --- a/packages/bsky/src/api/app/bsky/notification/registerPush.ts +++ b/packages/bsky/src/api/app/bsky/notification/registerPush.ts @@ -2,8 +2,8 @@ import { InvalidRequestError, MethodNotImplementedError, } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { AppPlatform } from '../../../../proto/courier_pb' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/notification/updateSeen.ts b/packages/bsky/src/api/app/bsky/notification/updateSeen.ts index 923b4dfe4b6..2ecdea14c86 100644 --- a/packages/bsky/src/api/app/bsky/notification/updateSeen.ts +++ b/packages/bsky/src/api/app/bsky/notification/updateSeen.ts @@ -1,7 +1,7 @@ -import murmur from 'murmurhash' import { Struct, Timestamp } from '@bufbuild/protobuf' +import { v3 as murmurV3 } from 'murmurhash' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' export default function (server: Server, ctx: AppContext) { server.app.bsky.notification.updateSeen({ @@ -45,5 +45,5 @@ function getNotifId(viewer: string, seenAt: Date) { const key = ['mark-read-generic', viewer, seenAt.getTime().toString()].join( '::', ) - return murmur.v3(key).toString(16) + return murmurV3(key).toString(16) } diff --git a/packages/bsky/src/api/app/bsky/unspecced/getConfig.ts b/packages/bsky/src/api/app/bsky/unspecced/getConfig.ts index f77c4a1993e..441c3f1fe2b 100644 --- a/packages/bsky/src/api/app/bsky/unspecced/getConfig.ts +++ b/packages/bsky/src/api/app/bsky/unspecced/getConfig.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' // THIS IS A TEMPORARY UNSPECCED ROUTE export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts b/packages/bsky/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts index d9694382709..8753c44ae80 100644 --- a/packages/bsky/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +++ b/packages/bsky/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts @@ -1,7 +1,7 @@ import { mapDefined } from '@atproto/common' -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' +import { AppContext } from '../../../../context' import { parseString } from '../../../../hydration/util' +import { Server } from '../../../../lexicon' import { clearlyBadCursor, resHeaders } from '../../../util' // THIS IS A TEMPORARY UNSPECCED ROUTE diff --git a/packages/bsky/src/api/app/bsky/unspecced/getTaggedSuggestions.ts b/packages/bsky/src/api/app/bsky/unspecced/getTaggedSuggestions.ts index 79df4857945..ffe077505db 100644 --- a/packages/bsky/src/api/app/bsky/unspecced/getTaggedSuggestions.ts +++ b/packages/bsky/src/api/app/bsky/unspecced/getTaggedSuggestions.ts @@ -1,5 +1,5 @@ +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' // THIS IS A TEMPORARY UNSPECCED ROUTE export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/app/bsky/unspecced/getTrendingTopics.ts b/packages/bsky/src/api/app/bsky/unspecced/getTrendingTopics.ts index 35187f78135..7c53caecb1b 100644 --- a/packages/bsky/src/api/app/bsky/unspecced/getTrendingTopics.ts +++ b/packages/bsky/src/api/app/bsky/unspecced/getTrendingTopics.ts @@ -1,19 +1,19 @@ +import AtpAgent from '@atproto/api' import { noUndefinedVals } from '@atproto/common' -import AppContext from '../../../../context' +import { InternalServerError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Server } from '../../../../lexicon' +import { TrendingTopic } from '../../../../lexicon/types/app/bsky/unspecced/defs' +import { QueryParams } from '../../../../lexicon/types/app/bsky/unspecced/getTrendingTopics' import { - createPipeline, HydrationFnInput, PresentationFnInput, RulesFnInput, SkeletonFnInput, + createPipeline, } from '../../../../pipeline' -import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator' import { Views } from '../../../../views' -import { QueryParams } from '../../../../lexicon/types/app/bsky/unspecced/getTrendingTopics' -import AtpAgent from '@atproto/api' -import { TrendingTopic } from '../../../../lexicon/types/app/bsky/unspecced/defs' -import { InternalServerError } from '@atproto/xrpc-server' export default function (server: Server, ctx: AppContext) { const getTrendingTopics = createPipeline( diff --git a/packages/bsky/src/api/blob-dispatcher.ts b/packages/bsky/src/api/blob-dispatcher.ts index 24dd9694571..3baa89a0c1e 100644 --- a/packages/bsky/src/api/blob-dispatcher.ts +++ b/packages/bsky/src/api/blob-dispatcher.ts @@ -1,6 +1,5 @@ -import { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node' import { Agent, Dispatcher, Pool, RetryAgent } from 'undici' - +import { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node' import { ServerConfig } from '../config' import { RETRYABLE_HTTP_STATUS_CODES } from '../util/retry' diff --git a/packages/bsky/src/api/blob-resolver.ts b/packages/bsky/src/api/blob-resolver.ts index 562c1003843..c7098065ffd 100644 --- a/packages/bsky/src/api/blob-resolver.ts +++ b/packages/bsky/src/api/blob-resolver.ts @@ -1,23 +1,22 @@ +import { Duplex, Transform, Writable } from 'node:stream' +import { pipeline } from 'node:stream/promises' +import createError, { isHttpError } from 'http-errors' +import { CID } from 'multiformats/cid' +import { Dispatcher } from 'undici' +import { + VerifyCidError, + VerifyCidTransform, + createDecoders, +} from '@atproto/common' +import { AtprotoDid, isAtprotoDid } from '@atproto/did' import { ACCEPT_ENCODING_COMPRESSED, ACCEPT_ENCODING_UNCOMPRESSED, buildProxiedContentEncoding, formatAcceptHeader, } from '@atproto-labs/xrpc-utils' -import { - createDecoders, - VerifyCidError, - VerifyCidTransform, -} from '@atproto/common' -import { AtprotoDid, isAtprotoDid } from '@atproto/did' -import createError, { isHttpError } from 'http-errors' -import { CID } from 'multiformats/cid' -import { Duplex, Transform, Writable } from 'node:stream' -import { pipeline } from 'node:stream/promises' -import { Dispatcher } from 'undici' - import { ServerConfig } from '../config' -import AppContext from '../context' +import { AppContext } from '../context' import { Code, DataPlaneClient, diff --git a/packages/bsky/src/api/com/atproto/admin/getAccountInfos.ts b/packages/bsky/src/api/com/atproto/admin/getAccountInfos.ts index 788e7dbefc6..4efee135c3f 100644 --- a/packages/bsky/src/api/com/atproto/admin/getAccountInfos.ts +++ b/packages/bsky/src/api/com/atproto/admin/getAccountInfos.ts @@ -1,7 +1,7 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { mapDefined } from '@atproto/common' import { INVALID_HANDLE } from '@atproto/syntax' +import { AppContext } from '../../../../context' +import { Server } from '../../../../lexicon' export default function (server: Server, ctx: AppContext) { server.com.atproto.admin.getAccountInfos({ diff --git a/packages/bsky/src/api/com/atproto/admin/getSubjectStatus.ts b/packages/bsky/src/api/com/atproto/admin/getSubjectStatus.ts index 3be4c1c0185..74078737578 100644 --- a/packages/bsky/src/api/com/atproto/admin/getSubjectStatus.ts +++ b/packages/bsky/src/api/com/atproto/admin/getSubjectStatus.ts @@ -1,6 +1,6 @@ import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { OutputSchema } from '../../../../lexicon/types/com/atproto/admin/getSubjectStatus' export default function (server: Server, ctx: AppContext) { diff --git a/packages/bsky/src/api/com/atproto/admin/updateSubjectStatus.ts b/packages/bsky/src/api/com/atproto/admin/updateSubjectStatus.ts index 8256efbe7e5..14cf1b9a50d 100644 --- a/packages/bsky/src/api/com/atproto/admin/updateSubjectStatus.ts +++ b/packages/bsky/src/api/com/atproto/admin/updateSubjectStatus.ts @@ -1,10 +1,10 @@ import { Timestamp } from '@bufbuild/protobuf' import { AuthRequiredError, InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { - isRepoRef, isRepoBlobRef, + isRepoRef, } from '../../../../lexicon/types/com/atproto/admin/defs' import { isMain as isStrongRef } from '../../../../lexicon/types/com/atproto/repo/strongRef' diff --git a/packages/bsky/src/api/com/atproto/identity/resolveHandle.ts b/packages/bsky/src/api/com/atproto/identity/resolveHandle.ts index 6cb524c6ec2..f917ede3de8 100644 --- a/packages/bsky/src/api/com/atproto/identity/resolveHandle.ts +++ b/packages/bsky/src/api/com/atproto/identity/resolveHandle.ts @@ -1,7 +1,7 @@ -import { InvalidRequestError } from '@atproto/xrpc-server' import * as ident from '@atproto/syntax' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' export default function (server: Server, ctx: AppContext) { server.com.atproto.identity.resolveHandle(async ({ req, params }) => { diff --git a/packages/bsky/src/api/com/atproto/label/queryLabels.ts b/packages/bsky/src/api/com/atproto/label/queryLabels.ts index dbbf32d1049..f9d2b14485d 100644 --- a/packages/bsky/src/api/com/atproto/label/queryLabels.ts +++ b/packages/bsky/src/api/com/atproto/label/queryLabels.ts @@ -1,6 +1,6 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { Server } from '../../../../lexicon' export default function (server: Server, ctx: AppContext) { server.com.atproto.label.queryLabels(async ({ params }) => { diff --git a/packages/bsky/src/api/com/atproto/repo/getRecord.ts b/packages/bsky/src/api/com/atproto/repo/getRecord.ts index bb8c8660ae7..c7c9897c3af 100644 --- a/packages/bsky/src/api/com/atproto/repo/getRecord.ts +++ b/packages/bsky/src/api/com/atproto/repo/getRecord.ts @@ -1,7 +1,7 @@ -import { InvalidRequestError } from '@atproto/xrpc-server' import { AtUri } from '@atproto/syntax' +import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' export default function (server: Server, ctx: AppContext) { server.com.atproto.repo.getRecord({ diff --git a/packages/bsky/src/api/com/atproto/temp/fetchLabels.ts b/packages/bsky/src/api/com/atproto/temp/fetchLabels.ts index 044a8d4dfd4..5bbebc40af5 100644 --- a/packages/bsky/src/api/com/atproto/temp/fetchLabels.ts +++ b/packages/bsky/src/api/com/atproto/temp/fetchLabels.ts @@ -1,6 +1,6 @@ -import { Server } from '../../../../lexicon' -import AppContext from '../../../../context' import { InvalidRequestError } from '@atproto/xrpc-server' +import { AppContext } from '../../../../context' +import { Server } from '../../../../lexicon' export default function (server: Server, _ctx: AppContext) { server.com.atproto.temp.fetchLabels(async (_reqCtx) => { diff --git a/packages/bsky/src/api/health.ts b/packages/bsky/src/api/health.ts index 8b0f42dae95..dd385909007 100644 --- a/packages/bsky/src/api/health.ts +++ b/packages/bsky/src/api/health.ts @@ -1,8 +1,8 @@ -import express from 'express' -import AppContext from '../context' +import { Router } from 'express' +import { AppContext } from '../context' -export const createRouter = (ctx: AppContext): express.Router => { - const router = express.Router() +export const createRouter = (ctx: AppContext): Router => { + const router = Router() router.get('/', function (req, res) { res.type('text/plain') diff --git a/packages/bsky/src/api/index.ts b/packages/bsky/src/api/index.ts index a8eaabf291c..3eb292664c0 100644 --- a/packages/bsky/src/api/index.ts +++ b/packages/bsky/src/api/index.ts @@ -1,8 +1,12 @@ +import { AppContext } from '../context' import { Server } from '../lexicon' -import AppContext from '../context' -import getTimeline from './app/bsky/feed/getTimeline' +import getProfile from './app/bsky/actor/getProfile' +import getProfiles from './app/bsky/actor/getProfiles' +import getSuggestions from './app/bsky/actor/getSuggestions' +import searchActors from './app/bsky/actor/searchActors' +import searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead' import getActorFeeds from './app/bsky/feed/getActorFeeds' -import getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds' +import getActorLikes from './app/bsky/feed/getActorLikes' import getAuthorFeed from './app/bsky/feed/getAuthorFeed' import getFeed from './app/bsky/feed/getFeed' import getFeedGenerator from './app/bsky/feed/getFeedGenerator' @@ -11,53 +15,49 @@ import getLikes from './app/bsky/feed/getLikes' import getListFeed from './app/bsky/feed/getListFeed' import getPostThread from './app/bsky/feed/getPostThread' import getPosts from './app/bsky/feed/getPosts' -import searchPosts from './app/bsky/feed/searchPosts' -import getActorLikes from './app/bsky/feed/getActorLikes' import getQuotes from './app/bsky/feed/getQuotes' -import getProfile from './app/bsky/actor/getProfile' -import getProfiles from './app/bsky/actor/getProfiles' import getRepostedBy from './app/bsky/feed/getRepostedBy' +import getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds' +import getTimeline from './app/bsky/feed/getTimeline' +import searchPosts from './app/bsky/feed/searchPosts' import getActorStarterPacks from './app/bsky/graph/getActorStarterPacks' import getBlocks from './app/bsky/graph/getBlocks' -import getListBlocks from './app/bsky/graph/getListBlocks' import getFollowers from './app/bsky/graph/getFollowers' -import getKnownFollowers from './app/bsky/graph/getKnownFollowers' import getFollows from './app/bsky/graph/getFollows' +import getKnownFollowers from './app/bsky/graph/getKnownFollowers' import getList from './app/bsky/graph/getList' -import getLists from './app/bsky/graph/getLists' +import getListBlocks from './app/bsky/graph/getListBlocks' import getListMutes from './app/bsky/graph/getListMutes' +import getLists from './app/bsky/graph/getLists' import getMutes from './app/bsky/graph/getMutes' import getRelationships from './app/bsky/graph/getRelationships' import getStarterPack from './app/bsky/graph/getStarterPack' import getStarterPacks from './app/bsky/graph/getStarterPacks' -import searchStarterPacks from './app/bsky/graph/searchStarterPacks' +import getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor' import muteActor from './app/bsky/graph/muteActor' -import unmuteActor from './app/bsky/graph/unmuteActor' import muteActorList from './app/bsky/graph/muteActorList' -import unmuteActorList from './app/bsky/graph/unmuteActorList' import muteThread from './app/bsky/graph/muteThread' +import searchStarterPacks from './app/bsky/graph/searchStarterPacks' +import unmuteActor from './app/bsky/graph/unmuteActor' +import unmuteActorList from './app/bsky/graph/unmuteActorList' import unmuteThread from './app/bsky/graph/unmuteThread' -import getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor' -import getTrendingTopics from './app/bsky/unspecced/getTrendingTopics' import getLabelerServices from './app/bsky/labeler/getServices' -import searchActors from './app/bsky/actor/searchActors' -import searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead' -import getSuggestions from './app/bsky/actor/getSuggestions' import getUnreadCount from './app/bsky/notification/getUnreadCount' import listNotifications from './app/bsky/notification/listNotifications' -import updateSeen from './app/bsky/notification/updateSeen' import putPreferences from './app/bsky/notification/putPreferences' import registerPush from './app/bsky/notification/registerPush' +import updateSeen from './app/bsky/notification/updateSeen' import getConfig from './app/bsky/unspecced/getConfig' import getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators' import getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions' +import getTrendingTopics from './app/bsky/unspecced/getTrendingTopics' +import getAccountInfos from './com/atproto/admin/getAccountInfos' import getSubjectStatus from './com/atproto/admin/getSubjectStatus' import updateSubjectStatus from './com/atproto/admin/updateSubjectStatus' -import getAccountInfos from './com/atproto/admin/getAccountInfos' import resolveHandle from './com/atproto/identity/resolveHandle' +import queryLabels from './com/atproto/label/queryLabels' import getRecord from './com/atproto/repo/getRecord' import fetchLabels from './com/atproto/temp/fetchLabels' -import queryLabels from './com/atproto/label/queryLabels' export * as health from './health' diff --git a/packages/bsky/src/api/well-known.ts b/packages/bsky/src/api/well-known.ts index e628d0ab2be..cc65a0d8c4b 100644 --- a/packages/bsky/src/api/well-known.ts +++ b/packages/bsky/src/api/well-known.ts @@ -1,8 +1,8 @@ -import express from 'express' -import AppContext from '../context' +import { Router } from 'express' +import { AppContext } from '../context' -export const createRouter = (ctx: AppContext): express.Router => { - const router = express.Router() +export const createRouter = (ctx: AppContext): Router => { + const router = Router() const did = ctx.cfg.serverDid if (did.startsWith('did:web:')) { diff --git a/packages/bsky/src/auth-verifier.ts b/packages/bsky/src/auth-verifier.ts index d1bc06cc8d0..29cfa1bb4db 100644 --- a/packages/bsky/src/auth-verifier.ts +++ b/packages/bsky/src/auth-verifier.ts @@ -1,15 +1,16 @@ import crypto, { KeyObject } from 'node:crypto' +import express from 'express' +import * as jose from 'jose' +import KeyEncoder from 'key-encoder' +import * as ui8 from 'uint8arrays' +import { SECP256K1_JWT_ALG, parseDidKey } from '@atproto/crypto' import { AuthRequiredError, + VerifySignatureWithKeyFn, cryptoVerifySignatureWithKey, parseReqNsid, verifyJwt as verifyServiceJwt, - VerifySignatureWithKeyFn, } from '@atproto/xrpc-server' -import KeyEncoder from 'key-encoder' -import * as ui8 from 'uint8arrays' -import * as jose from 'jose' -import express from 'express' import { Code, DataPlaneClient, @@ -18,7 +19,6 @@ import { unpackIdentityKeys, } from './data-plane' import { GetIdentityByDidResponse } from './proto/bsky_pb' -import { parseDidKey, SECP256K1_JWT_ALG } from '@atproto/crypto' type ReqCtx = { req: express.Request diff --git a/packages/bsky/src/bsync.ts b/packages/bsky/src/bsync.ts index 40a21a9c2c5..83e0bc7b12b 100644 --- a/packages/bsky/src/bsync.ts +++ b/packages/bsky/src/bsync.ts @@ -1,15 +1,15 @@ -import { Service } from './proto/bsync_connect' import { Code, ConnectError, + Interceptor, PromiseClient, createPromiseClient, - Interceptor, } from '@connectrpc/connect' import { - createConnectTransport, ConnectTransportOptions, + createConnectTransport, } from '@connectrpc/connect-node' +import { Service } from './proto/bsync_connect' export type BsyncClient = PromiseClient diff --git a/packages/bsky/src/context.ts b/packages/bsky/src/context.ts index 06e48ba8cf4..55c66599947 100644 --- a/packages/bsky/src/context.ts +++ b/packages/bsky/src/context.ts @@ -1,23 +1,23 @@ -import express from 'express' import * as plc from '@did-plc/lib' -import { IdResolver } from '@atproto/identity' +import express from 'express' +import { Dispatcher } from 'undici' import { AtpAgent } from '@atproto/api' import { Keypair } from '@atproto/crypto' -import { ServerConfig } from './config' -import { DataPlaneClient } from './data-plane/client' -import { Hydrator } from './hydration/hydrator' -import { Views } from './views' +import { IdResolver } from '@atproto/identity' import { AuthVerifier } from './auth-verifier' import { BsyncClient } from './bsync' +import { ServerConfig } from './config' import { CourierClient } from './courier' +import { DataPlaneClient } from './data-plane/client' import { FeatureGates } from './feature-gates' +import { Hydrator } from './hydration/hydrator' +import { httpLogger as log } from './logger' import { ParsedLabelers, defaultLabelerHeader, parseLabelerHeader, } from './util' -import { httpLogger as log } from './logger' -import { Dispatcher } from 'undici' +import { Views } from './views' export class AppContext { constructor( @@ -112,5 +112,3 @@ export class AppContext { return parsed } } - -export default AppContext diff --git a/packages/bsky/src/courier.ts b/packages/bsky/src/courier.ts index aeb095898f6..8de5fe72229 100644 --- a/packages/bsky/src/courier.ts +++ b/packages/bsky/src/courier.ts @@ -1,15 +1,15 @@ -import { Service } from './proto/courier_connect' import { Code, ConnectError, + Interceptor, PromiseClient, createPromiseClient, - Interceptor, } from '@connectrpc/connect' import { - createConnectTransport, ConnectTransportOptions, + createConnectTransport, } from '@connectrpc/connect-node' +import { Service } from './proto/courier_connect' export type CourierClient = PromiseClient diff --git a/packages/bsky/src/data-plane/bsync/index.ts b/packages/bsky/src/data-plane/bsync/index.ts index a8ad57467bc..722d4fa7f83 100644 --- a/packages/bsky/src/data-plane/bsync/index.ts +++ b/packages/bsky/src/data-plane/bsync/index.ts @@ -1,14 +1,14 @@ -import http from 'http' -import events from 'events' -import assert from 'assert' -import express from 'express' +import assert from 'node:assert' +import events from 'node:events' +import http from 'node:http' import { ConnectRouter } from '@connectrpc/connect' import { expressConnectMiddleware } from '@connectrpc/connect-express' +import express from 'express' import { AtUri } from '@atproto/syntax' -import { Database } from '../server/db' +import { ids } from '../../lexicon/lexicons' import { Service } from '../../proto/bsync_connect' import { MuteOperation_Type } from '../../proto/bsync_pb' -import { ids } from '../../lexicon/lexicons' +import { Database } from '../server/db' export class MockBsync { constructor(public server: http.Server) {} diff --git a/packages/bsky/src/data-plane/client.ts b/packages/bsky/src/data-plane/client.ts index 11e68a6680c..0b12db4c670 100644 --- a/packages/bsky/src/data-plane/client.ts +++ b/packages/bsky/src/data-plane/client.ts @@ -1,6 +1,5 @@ import assert from 'node:assert' import { randomInt } from 'node:crypto' -import * as ui8 from 'uint8arrays' import { Code, ConnectError, @@ -9,6 +8,7 @@ import { makeAnyClient, } from '@connectrpc/connect' import { createGrpcTransport } from '@connectrpc/connect-node' +import * as ui8 from 'uint8arrays' import { getDidKeyFromMultibase } from '@atproto/identity' import { Service } from '../proto/bsky_connect' diff --git a/packages/bsky/src/data-plane/server/background.ts b/packages/bsky/src/data-plane/server/background.ts index 59d8ccf0ddf..ef74d3a09bc 100644 --- a/packages/bsky/src/data-plane/server/background.ts +++ b/packages/bsky/src/data-plane/server/background.ts @@ -1,6 +1,6 @@ import PQueue from 'p-queue' -import { Database } from './db' import { dbLogger } from '../../logger' +import { Database } from './db' // A simple queue for in-process, out-of-band/backgrounded work diff --git a/packages/bsky/src/data-plane/server/db/database-schema.ts b/packages/bsky/src/data-plane/server/db/database-schema.ts index 195b09483e0..5fe3f830a1b 100644 --- a/packages/bsky/src/data-plane/server/db/database-schema.ts +++ b/packages/bsky/src/data-plane/server/db/database-schema.ts @@ -1,42 +1,42 @@ import { Kysely } from 'kysely' +import * as actor from './tables/actor' +import * as actorBlock from './tables/actor-block' +import * as actorState from './tables/actor-state' +import * as actorSync from './tables/actor-sync' +import * as algo from './tables/algo' +import * as blobTakedown from './tables/blob-takedown' +import * as didCache from './tables/did-cache' import * as duplicateRecord from './tables/duplicate-record' -import * as profile from './tables/profile' -import * as profileAgg from './tables/profile-agg' -import * as post from './tables/post' -import * as postEmbed from './tables/post-embed' -import * as postAgg from './tables/post-agg' -import * as repost from './tables/repost' -import * as threadgate from './tables/thread-gate' -import * as postgate from './tables/post-gate' +import * as feedGenerator from './tables/feed-generator' import * as feedItem from './tables/feed-item' import * as follow from './tables/follow' +import * as label from './tables/label' +import * as labeler from './tables/labeler' import * as like from './tables/like' import * as list from './tables/list' +import * as listBlock from './tables/list-block' import * as listItem from './tables/list-item' import * as listMute from './tables/list-mute' -import * as listBlock from './tables/list-block' import * as mute from './tables/mute' -import * as actorBlock from './tables/actor-block' -import * as threadMute from './tables/thread-mute' -import * as feedGenerator from './tables/feed-generator' -import * as subscription from './tables/subscription' -import * as actor from './tables/actor' -import * as actorState from './tables/actor-state' -import * as actorSync from './tables/actor-sync' -import * as record from './tables/record' import * as notification from './tables/notification' import * as notificationPushToken from './tables/notification-push-token' -import * as didCache from './tables/did-cache' -import * as label from './tables/label' -import * as algo from './tables/algo' -import * as viewParam from './tables/view-param' -import * as suggestedFollow from './tables/suggested-follow' +import * as post from './tables/post' +import * as postAgg from './tables/post-agg' +import * as postEmbed from './tables/post-embed' +import * as postgate from './tables/post-gate' +import * as profile from './tables/profile' +import * as profileAgg from './tables/profile-agg' +import * as quote from './tables/quote' +import * as record from './tables/record' +import * as repost from './tables/repost' +import * as starterPack from './tables/starter-pack' +import * as subscription from './tables/subscription' import * as suggestedFeed from './tables/suggested-feed' +import * as suggestedFollow from './tables/suggested-follow' import * as taggedSuggestion from './tables/tagged-suggestion' -import * as blobTakedown from './tables/blob-takedown' -import * as labeler from './tables/labeler' -import * as starterPack from './tables/starter-pack' -import * as quote from './tables/quote' +import * as threadgate from './tables/thread-gate' +import * as threadMute from './tables/thread-mute' +import * as viewParam from './tables/view-param' export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & @@ -78,5 +78,3 @@ export type DatabaseSchemaType = duplicateRecord.PartialDB & quote.PartialDB export type DatabaseSchema = Kysely - -export default DatabaseSchema diff --git a/packages/bsky/src/data-plane/server/db/db.ts b/packages/bsky/src/data-plane/server/db/db.ts index 9b1cc645d62..063aef8e248 100644 --- a/packages/bsky/src/data-plane/server/db/db.ts +++ b/packages/bsky/src/data-plane/server/db/db.ts @@ -1,5 +1,5 @@ -import assert from 'assert' -import EventEmitter from 'events' +import assert from 'node:assert' +import EventEmitter from 'node:events' import { Kysely, KyselyPlugin, @@ -11,13 +11,13 @@ import { RootOperationNode, UnknownRow, } from 'kysely' -import TypedEmitter from 'typed-emitter' import { Pool as PgPool, types as pgTypes } from 'pg' -import * as migrations from './migrations' -import DatabaseSchema, { DatabaseSchemaType } from './database-schema' -import { PgOptions } from './types' +import TypedEmitter from 'typed-emitter' import { dbLogger } from '../../../logger' +import { DatabaseSchema, DatabaseSchemaType } from './database-schema' +import * as migrations from './migrations' import { CtxMigrationProvider } from './migrations/provider' +import { PgOptions } from './types' export class Database { pool: PgPool diff --git a/packages/bsky/src/data-plane/server/db/util.ts b/packages/bsky/src/data-plane/server/db/util.ts index cee5d100f3d..ae9dddbf4b0 100644 --- a/packages/bsky/src/data-plane/server/db/util.ts +++ b/packages/bsky/src/data-plane/server/db/util.ts @@ -4,12 +4,12 @@ import { ExpressionBuilder, RawBuilder, SelectQueryBuilder, - sql, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler, + sql, } from 'kysely' -import DatabaseSchema, { DatabaseSchemaType } from './database-schema' +import { DatabaseSchema, DatabaseSchemaType } from './database-schema' export const actorWhereClause = (actor: string) => { if (actor.startsWith('did:')) { diff --git a/packages/bsky/src/data-plane/server/index.ts b/packages/bsky/src/data-plane/server/index.ts index a12c63a22b3..6814e58a495 100644 --- a/packages/bsky/src/data-plane/server/index.ts +++ b/packages/bsky/src/data-plane/server/index.ts @@ -1,10 +1,10 @@ -import http from 'http' -import events from 'events' -import express from 'express' +import events from 'node:events' +import http from 'node:http' import { expressConnectMiddleware } from '@connectrpc/connect-express' -import createRoutes from './routes' -import { Database } from './db' +import express from 'express' import { IdResolver, MemoryCache } from '@atproto/identity' +import { Database } from './db' +import createRoutes from './routes' export { RepoSubscription } from './subscription' diff --git a/packages/bsky/src/data-plane/server/indexing/index.ts b/packages/bsky/src/data-plane/server/indexing/index.ts index 66f9f98f6b4..17578099a98 100644 --- a/packages/bsky/src/data-plane/server/indexing/index.ts +++ b/packages/bsky/src/data-plane/server/indexing/index.ts @@ -1,38 +1,38 @@ import { sql } from 'kysely' import { CID } from 'multiformats/cid' import { AtpAgent, ComAtprotoSyncGetLatestCommit } from '@atproto/api' +import { DAY, HOUR } from '@atproto/common' +import { IdResolver, getPds } from '@atproto/identity' +import { ValidationError } from '@atproto/lexicon' import { - readCarWithRoot, - WriteOpAction, - verifyRepo, VerifiedRepo, + WriteOpAction, getAndParseRecord, + readCarWithRoot, + verifyRepo, } from '@atproto/repo' import { AtUri } from '@atproto/syntax' -import { IdResolver, getPds } from '@atproto/identity' -import { DAY, HOUR } from '@atproto/common' -import { ValidationError } from '@atproto/lexicon' +import { subLogger } from '../../../logger' +import { retryXrpc } from '../../../util/retry' +import { BackgroundQueue } from '../background' import { Database } from '../db' import { Actor } from '../db/tables/actor' -import * as Post from './plugins/post' -import * as Threadgate from './plugins/thread-gate' -import * as Postgate from './plugins/post-gate' -import * as Like from './plugins/like' -import * as Repost from './plugins/repost' +import * as Block from './plugins/block' +import * as ChatDeclaration from './plugins/chat-declaration' +import * as FeedGenerator from './plugins/feed-generator' import * as Follow from './plugins/follow' -import * as Profile from './plugins/profile' +import * as Labeler from './plugins/labeler' +import * as Like from './plugins/like' import * as List from './plugins/list' -import * as ListItem from './plugins/list-item' import * as ListBlock from './plugins/list-block' -import * as Block from './plugins/block' -import * as FeedGenerator from './plugins/feed-generator' +import * as ListItem from './plugins/list-item' +import * as Post from './plugins/post' +import * as Postgate from './plugins/post-gate' +import * as Profile from './plugins/profile' +import * as Repost from './plugins/repost' import * as StarterPack from './plugins/starter-pack' -import * as Labeler from './plugins/labeler' -import * as ChatDeclaration from './plugins/chat-declaration' -import RecordProcessor from './processor' -import { subLogger } from '../../../logger' -import { retryXrpc } from '../../../util/retry' -import { BackgroundQueue } from '../background' +import * as Threadgate from './plugins/thread-gate' +import { RecordProcessor } from './processor' export class IndexingService { records: { diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/block.ts b/packages/bsky/src/data-plane/server/indexing/plugins/block.ts index ec4956a04f5..290a376f47c 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/block.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/block.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as Block from '../../../../lexicon/types/app/bsky/graph/block' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' +import * as Block from '../../../../lexicon/types/app/bsky/graph/block' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphBlock type IndexedBlock = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/chat-declaration.ts b/packages/bsky/src/data-plane/server/indexing/plugins/chat-declaration.ts index e234768e8b5..08e168595ab 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/chat-declaration.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/chat-declaration.ts @@ -1,10 +1,10 @@ -import { AtUri } from '@atproto/syntax' import { CID } from 'multiformats/cid' +import { AtUri } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' -import { DatabaseSchema } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { Database } from '../../db' import { BackgroundQueue } from '../../background' +import { Database } from '../../db' +import { DatabaseSchema } from '../../db/database-schema' +import { RecordProcessor } from '../processor' // @NOTE this indexer is a placeholder to ensure it gets indexed in the generic records table diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/feed-generator.ts b/packages/bsky/src/data-plane/server/indexing/plugins/feed-generator.ts index f3b82c75567..8e567680d88 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/feed-generator.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/feed-generator.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as FeedGenerator from '../../../../lexicon/types/app/bsky/feed/generator' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' +import * as FeedGenerator from '../../../../lexicon/types/app/bsky/feed/generator' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyFeedGenerator type IndexedFeedGenerator = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/follow.ts b/packages/bsky/src/data-plane/server/indexing/plugins/follow.ts index 6f238755761..36f8e1d9bb2 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/follow.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/follow.ts @@ -1,13 +1,13 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as Follow from '../../../../lexicon/types/app/bsky/graph/follow' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' -import RecordProcessor from '../processor' +import * as Follow from '../../../../lexicon/types/app/bsky/graph/follow' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' -import { countAll, excluded } from '../../db/util' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { BackgroundQueue } from '../../background' +import { countAll, excluded } from '../../db/util' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphFollow type IndexedFollow = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/labeler.ts b/packages/bsky/src/data-plane/server/indexing/plugins/labeler.ts index 5efdb0e30ca..7ee479055ee 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/labeler.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/labeler.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as Labeler from '../../../../lexicon/types/app/bsky/labeler/service' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' +import * as Labeler from '../../../../lexicon/types/app/bsky/labeler/service' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyLabelerService type IndexedLabeler = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/like.ts b/packages/bsky/src/data-plane/server/indexing/plugins/like.ts index 98e9fc722f8..6afd30aff37 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/like.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/like.ts @@ -1,13 +1,13 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as Like from '../../../../lexicon/types/app/bsky/feed/like' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' -import RecordProcessor from '../processor' -import { countAll, excluded } from '../../db/util' +import * as Like from '../../../../lexicon/types/app/bsky/feed/like' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { BackgroundQueue } from '../../background' +import { countAll, excluded } from '../../db/util' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyFeedLike type IndexedLike = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/list-block.ts b/packages/bsky/src/data-plane/server/indexing/plugins/list-block.ts index 09eabcdb9f4..19cd392bdcc 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/list-block.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/list-block.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as ListBlock from '../../../../lexicon/types/app/bsky/graph/listblock' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' +import * as ListBlock from '../../../../lexicon/types/app/bsky/graph/listblock' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphListblock type IndexedListBlock = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/list-item.ts b/packages/bsky/src/data-plane/server/indexing/plugins/list-item.ts index f2a43cff485..0536176da92 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/list-item.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/list-item.ts @@ -1,13 +1,13 @@ import { Selectable } from 'kysely' -import { InvalidRequestError } from '@atproto/xrpc-server' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as ListItem from '../../../../lexicon/types/app/bsky/graph/listitem' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' +import { InvalidRequestError } from '@atproto/xrpc-server' import * as lex from '../../../../lexicon/lexicons' -import RecordProcessor from '../processor' +import * as ListItem from '../../../../lexicon/types/app/bsky/graph/listitem' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphListitem type IndexedListItem = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/list.ts b/packages/bsky/src/data-plane/server/indexing/plugins/list.ts index f6deaf0a68e..7451060d7c2 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/list.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/list.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as List from '../../../../lexicon/types/app/bsky/graph/list' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' -import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { Database } from '../../db' +import * as List from '../../../../lexicon/types/app/bsky/graph/list' import { BackgroundQueue } from '../../background' +import { Database } from '../../db' +import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphList type IndexedList = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/post-gate.ts b/packages/bsky/src/data-plane/server/indexing/plugins/post-gate.ts index 3b92d4a1312..34b9bb4b8ad 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/post-gate.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/post-gate.ts @@ -1,12 +1,12 @@ +import { CID } from 'multiformats/cid' import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { InvalidRequestError } from '@atproto/xrpc-server' -import { CID } from 'multiformats/cid' -import * as Postgate from '../../../../lexicon/types/app/bsky/feed/postgate' import * as lex from '../../../../lexicon/lexicons' -import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { Database } from '../../db' -import RecordProcessor from '../processor' +import * as Postgate from '../../../../lexicon/types/app/bsky/feed/postgate' import { BackgroundQueue } from '../../background' +import { Database } from '../../db' +import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyFeedPostgate type IndexedGate = DatabaseSchemaType['post_gate'] diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/post.ts b/packages/bsky/src/data-plane/server/indexing/plugins/post.ts index 606d2aff3f8..80ce451354e 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/post.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/post.ts @@ -1,27 +1,33 @@ import { Insertable, Selectable, sql } from 'kysely' import { CID } from 'multiformats/cid' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { jsonStringToLex } from '@atproto/lexicon' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' +import * as lex from '../../../../lexicon/lexicons' +import { isMain as isEmbedExternal } from '../../../../lexicon/types/app/bsky/embed/external' +import { isMain as isEmbedImage } from '../../../../lexicon/types/app/bsky/embed/images' +import { isMain as isEmbedRecord } from '../../../../lexicon/types/app/bsky/embed/record' +import { isMain as isEmbedRecordWithMedia } from '../../../../lexicon/types/app/bsky/embed/recordWithMedia' +import { isMain as isEmbedVideo } from '../../../../lexicon/types/app/bsky/embed/video' import { Record as PostRecord, ReplyRef, } from '../../../../lexicon/types/app/bsky/feed/post' -import { Record as GateRecord } from '../../../../lexicon/types/app/bsky/feed/threadgate' import { Record as PostgateRecord } from '../../../../lexicon/types/app/bsky/feed/postgate' -import { isMain as isEmbedImage } from '../../../../lexicon/types/app/bsky/embed/images' -import { isMain as isEmbedExternal } from '../../../../lexicon/types/app/bsky/embed/external' -import { isMain as isEmbedRecord } from '../../../../lexicon/types/app/bsky/embed/record' -import { isMain as isEmbedRecordWithMedia } from '../../../../lexicon/types/app/bsky/embed/recordWithMedia' -import { isMain as isEmbedVideo } from '../../../../lexicon/types/app/bsky/embed/video' +import { Record as GateRecord } from '../../../../lexicon/types/app/bsky/feed/threadgate' import { - isMention, isLink, + isMention, } from '../../../../lexicon/types/app/bsky/richtext/facet' -import * as lex from '../../../../lexicon/lexicons' +import { + postUriToPostgateUri, + postUriToThreadgateUri, + uriToDid, +} from '../../../../util/uris' +import { parsePostgate } from '../../../../views/util' +import { BackgroundQueue } from '../../background' +import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' import { Notification } from '../../db/tables/notification' -import { Database } from '../../db' import { countAll, excluded } from '../../db/util' import { getAncestorsAndSelfQb, @@ -29,13 +35,7 @@ import { invalidReplyRoot as checkInvalidReplyRoot, violatesThreadGate as checkViolatesThreadGate, } from '../../util' -import { BackgroundQueue } from '../../background' -import { parsePostgate } from '../../../../views/util' -import { - postUriToThreadgateUri, - postUriToPostgateUri, - uriToDid, -} from '../../../../util/uris' +import { RecordProcessor } from '../processor' type Notif = Insertable type Post = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/profile.ts b/packages/bsky/src/data-plane/server/indexing/plugins/profile.ts index 762fb4c4b29..deeca3f5607 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/profile.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/profile.ts @@ -1,11 +1,11 @@ -import { AtUri } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as Profile from '../../../../lexicon/types/app/bsky/actor/profile' +import { AtUri } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' -import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { Database } from '../../db' +import * as Profile from '../../../../lexicon/types/app/bsky/actor/profile' import { BackgroundQueue } from '../../background' +import { Database } from '../../db' +import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyActorProfile type IndexedProfile = DatabaseSchemaType['profile'] diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/repost.ts b/packages/bsky/src/data-plane/server/indexing/plugins/repost.ts index ec2e7754fb0..c43267b8d57 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/repost.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/repost.ts @@ -1,13 +1,13 @@ import { Selectable } from 'kysely' import { CID } from 'multiformats/cid' import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' -import * as Repost from '../../../../lexicon/types/app/bsky/feed/repost' import * as lex from '../../../../lexicon/lexicons' -import RecordProcessor from '../processor' +import * as Repost from '../../../../lexicon/types/app/bsky/feed/repost' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' -import { countAll, excluded } from '../../db/util' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { BackgroundQueue } from '../../background' +import { countAll, excluded } from '../../db/util' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyFeedRepost type IndexedRepost = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/starter-pack.ts b/packages/bsky/src/data-plane/server/indexing/plugins/starter-pack.ts index 844c84544a9..fe237c5cffd 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/starter-pack.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/starter-pack.ts @@ -1,12 +1,12 @@ import { Selectable } from 'kysely' -import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { CID } from 'multiformats/cid' -import * as StarterPack from '../../../../lexicon/types/app/bsky/graph/starterpack' +import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import * as lex from '../../../../lexicon/lexicons' +import * as StarterPack from '../../../../lexicon/types/app/bsky/graph/starterpack' +import { BackgroundQueue } from '../../background' import { Database } from '../../db' import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import RecordProcessor from '../processor' -import { BackgroundQueue } from '../../background' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyGraphStarterpack type IndexedStarterPack = Selectable diff --git a/packages/bsky/src/data-plane/server/indexing/plugins/thread-gate.ts b/packages/bsky/src/data-plane/server/indexing/plugins/thread-gate.ts index bbcd42190ed..a6c53d84e18 100644 --- a/packages/bsky/src/data-plane/server/indexing/plugins/thread-gate.ts +++ b/packages/bsky/src/data-plane/server/indexing/plugins/thread-gate.ts @@ -1,12 +1,12 @@ +import { CID } from 'multiformats/cid' import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax' import { InvalidRequestError } from '@atproto/xrpc-server' -import { CID } from 'multiformats/cid' -import * as Threadgate from '../../../../lexicon/types/app/bsky/feed/threadgate' import * as lex from '../../../../lexicon/lexicons' -import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' -import { Database } from '../../db' -import RecordProcessor from '../processor' +import * as Threadgate from '../../../../lexicon/types/app/bsky/feed/threadgate' import { BackgroundQueue } from '../../background' +import { Database } from '../../db' +import { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema' +import { RecordProcessor } from '../processor' const lexId = lex.ids.AppBskyFeedThreadgate type IndexedGate = DatabaseSchemaType['thread_gate'] diff --git a/packages/bsky/src/data-plane/server/indexing/processor.ts b/packages/bsky/src/data-plane/server/indexing/processor.ts index d88d230dd5d..ade9dea328a 100644 --- a/packages/bsky/src/data-plane/server/indexing/processor.ts +++ b/packages/bsky/src/data-plane/server/indexing/processor.ts @@ -1,13 +1,13 @@ import { Insertable } from 'kysely' import { CID } from 'multiformats/cid' -import { AtUri } from '@atproto/syntax' import { chunkArray } from '@atproto/common' import { jsonStringToLex, stringifyLex } from '@atproto/lexicon' +import { AtUri } from '@atproto/syntax' import { lexicons } from '../../../lexicon/lexicons' +import { BackgroundQueue } from '../background' import { Database } from '../db' -import DatabaseSchema from '../db/database-schema' +import { DatabaseSchema } from '../db/database-schema' import { Notification } from '../db/tables/notification' -import { BackgroundQueue } from '../background' // @NOTE re: insertions and deletions. Due to how record updates are handled, // (insertFn) should have the same effect as (insertFn -> deleteFn -> insertFn). diff --git a/packages/bsky/src/data-plane/server/routes/feeds.ts b/packages/bsky/src/data-plane/server/routes/feeds.ts index 60b737a889a..4a0135d748d 100644 --- a/packages/bsky/src/data-plane/server/routes/feeds.ts +++ b/packages/bsky/src/data-plane/server/routes/feeds.ts @@ -1,8 +1,8 @@ import { ServiceImpl } from '@connectrpc/connect' import { Service } from '../../../proto/bsky_connect' +import { FeedType } from '../../../proto/bsky_pb' import { Database } from '../db' import { TimeCidKeyset, paginate } from '../db/pagination' -import { FeedType } from '../../../proto/bsky_pb' export default (db: Database): Partial> => ({ async getAuthorFeed(req) { diff --git a/packages/bsky/src/data-plane/server/routes/follows.ts b/packages/bsky/src/data-plane/server/routes/follows.ts index 8ef27fdfe05..9038807fdac 100644 --- a/packages/bsky/src/data-plane/server/routes/follows.ts +++ b/packages/bsky/src/data-plane/server/routes/follows.ts @@ -1,5 +1,5 @@ -import { keyBy } from '@atproto/common' import { ServiceImpl } from '@connectrpc/connect' +import { keyBy } from '@atproto/common' import { Service } from '../../../proto/bsky_connect' import { FollowsFollowing } from '../../../proto/bsky_pb' import { Database } from '../db' diff --git a/packages/bsky/src/data-plane/server/routes/identity.ts b/packages/bsky/src/data-plane/server/routes/identity.ts index fb8dffc096c..007ace4fe88 100644 --- a/packages/bsky/src/data-plane/server/routes/identity.ts +++ b/packages/bsky/src/data-plane/server/routes/identity.ts @@ -1,8 +1,8 @@ +import { Timestamp } from '@bufbuild/protobuf' import { Code, ConnectError, ServiceImpl } from '@connectrpc/connect' +import { DidDocument, IdResolver, getDid, getHandle } from '@atproto/identity' import { Service } from '../../../proto/bsky_connect' import { Database } from '../db' -import { DidDocument, IdResolver, getDid, getHandle } from '@atproto/identity' -import { Timestamp } from '@bufbuild/protobuf' export default ( _db: Database, diff --git a/packages/bsky/src/data-plane/server/routes/index.ts b/packages/bsky/src/data-plane/server/routes/index.ts index 5504d38f812..f64bf4bd07f 100644 --- a/packages/bsky/src/data-plane/server/routes/index.ts +++ b/packages/bsky/src/data-plane/server/routes/index.ts @@ -1,6 +1,7 @@ import { ConnectRouter } from '@connectrpc/connect' import { IdResolver } from '@atproto/identity' import { Service } from '../../../proto/bsky_connect' +import { Database } from '../db' import blocks from './blocks' import feedGens from './feed-gens' import feeds from './feeds' @@ -20,11 +21,10 @@ import records from './records' import relationships from './relationships' import reposts from './reposts' import search from './search' +import starterPacks from './starter-packs' import suggestions from './suggestions' import sync from './sync' import threads from './threads' -import starterPacks from './starter-packs' -import { Database } from '../db' export default (db: Database, idResolver: IdResolver) => (router: ConnectRouter) => diff --git a/packages/bsky/src/data-plane/server/routes/interactions.ts b/packages/bsky/src/data-plane/server/routes/interactions.ts index 2a0e00f2cfc..2ce84b391e4 100644 --- a/packages/bsky/src/data-plane/server/routes/interactions.ts +++ b/packages/bsky/src/data-plane/server/routes/interactions.ts @@ -1,5 +1,5 @@ -import { DAY, keyBy } from '@atproto/common' import { ServiceImpl } from '@connectrpc/connect' +import { DAY, keyBy } from '@atproto/common' import { Service } from '../../../proto/bsky_connect' import { Database } from '../db' import { countAll } from '../db/util' diff --git a/packages/bsky/src/data-plane/server/routes/labels.ts b/packages/bsky/src/data-plane/server/routes/labels.ts index ccd485da3ba..045279f8238 100644 --- a/packages/bsky/src/data-plane/server/routes/labels.ts +++ b/packages/bsky/src/data-plane/server/routes/labels.ts @@ -1,9 +1,9 @@ +import { ServiceImpl } from '@connectrpc/connect' +import { Selectable } from 'kysely' import * as ui8 from 'uint8arrays' import { noUndefinedVals } from '@atproto/common' -import { ServiceImpl } from '@connectrpc/connect' import { Service } from '../../../proto/bsky_connect' import { Database } from '../db' -import { Selectable } from 'kysely' import { Label } from '../db/tables/label' type LabelRow = Selectable