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
This commit is contained in:
Matthieu Sieben 2025-02-05 15:06:58 +01:00 committed by GitHub
parent 53a577fd4b
commit 61dc0d60e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
818 changed files with 3643 additions and 2797 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,5 @@
---
"@atproto/oauth-types": patch
---
Support environments not providing URL.canParse

View File

@ -1,24 +1,48 @@
{ {
"root": true, "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": [ "extends": [
"eslint:recommended", "eslint:recommended",
"plugin:@typescript-eslint/base",
"plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended", "plugin:prettier/recommended",
"prettier" "plugin:import/recommended",
"plugin:import/typescript"
], ],
"plugins": ["n"],
"ignorePatterns": ["dist", "node_modules"], "ignorePatterns": ["dist", "node_modules"],
"rules": { "rules": {
"no-var": "error", "no-var": "error",
"prefer-const": "warn", "prefer-const": "warn",
"no-misleading-character-class": "warn", "no-misleading-character-class": "warn",
"eqeqeq": ["error", "always", { "null": "ignore" }], "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": [ "@typescript-eslint/no-unused-vars": [
"warn", "warn",
{ "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }
@ -43,6 +67,33 @@
"rules": { "rules": {
"@typescript-eslint/no-var-requires": "off" "@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"]
}
}
}
} }

2
.gitignore vendored
View File

@ -5,12 +5,12 @@ yarn-error.log
packages/**/dist packages/**/dist
.idea .idea
packages/*/coverage packages/*/coverage
.vscode/
test.sqlite test.sqlite
.DS_Store .DS_Store
*.log *.log
*.tsbuildinfo *.tsbuildinfo
.*.env .*.env
.env.*
.env .env
\#*\# \#*\#
*~ *~

View File

@ -1,12 +1,8 @@
node_modules node_modules
interop-test-files interop-test-files
__snapshots__
dist dist
build
.nyc_output
coverage
pnpm-lock.yaml pnpm-lock.yaml
.pnpm* .pnpm*
.changeset .changeset
*.d.ts
packages/bsky/src/data-plane/gen
CHANGELOG.md CHANGELOG.md

View File

@ -9,6 +9,13 @@
"options": { "options": {
"singleQuote": false "singleQuote": false
} }
},
{
"files": [".eslintrc"],
"options": {
"parser": "json",
"trailingComma": "none"
}
} }
] ]
} }

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"typescript.tsdk": "node_modules/typescript/lib",
"files.associations": {
"**/tsconfig/*.json": "jsonc"
}
}

View File

@ -6,7 +6,7 @@
"license": "MIT", "license": "MIT",
"private": true, "private": true,
"engines": { "engines": {
"node": "18" "node": ">=18.7.0"
}, },
"packageManager": "pnpm@8.15.9", "packageManager": "pnpm@8.15.9",
"scripts": { "scripts": {
@ -43,6 +43,9 @@
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.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", "eslint-plugin-prettier": "^5.1.3",
"jest": "^28.1.2", "jest": "^28.1.2",
"node-gyp": "^9.3.1", "node-gyp": "^9.3.1",

View File

@ -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' })
}
})
})

View File

@ -1,12 +1,7 @@
import AwaitLock from 'await-lock'
import { TID } from '@atproto/common-web' import { TID } from '@atproto/common-web'
import { AtUri, ensureValidDid } from '@atproto/syntax' import { AtUri, ensureValidDid } from '@atproto/syntax'
import { import { FetchHandler, XrpcClient, buildFetchHandler } from '@atproto/xrpc'
buildFetchHandler,
BuildFetchHandlerOptions,
FetchHandler,
XrpcClient,
} from '@atproto/xrpc'
import AwaitLock from 'await-lock'
import { import {
AppBskyActorDefs, AppBskyActorDefs,
AppBskyActorProfile, AppBskyActorProfile,
@ -38,14 +33,14 @@ import {
BskyThreadViewPreference, BskyThreadViewPreference,
} from './types' } from './types'
import { import {
asDid,
Did, Did,
asDid,
getSavedFeedType, getSavedFeedType,
isDid, isDid,
sanitizeMutedWordValue, sanitizeMutedWordValue,
savedFeedsToUriArrays, savedFeedsToUriArrays,
validateSavedFeed,
validateNux, validateNux,
validateSavedFeed,
} from './util' } from './util'
const FEED_VIEW_PREF_DEFAULTS = { const FEED_VIEW_PREF_DEFAULTS = {

View File

@ -4,10 +4,10 @@ import { lexicons as internalLexicons } from './client/lexicons'
export { AtUri } from '@atproto/syntax' export { AtUri } from '@atproto/syntax'
export { export {
BlobRef, BlobRef,
jsonStringToLex,
jsonToLex,
lexToJson, lexToJson,
stringifyLex, stringifyLex,
jsonToLex,
jsonStringToLex,
} from '@atproto/lexicon' } from '@atproto/lexicon'
export { parseLanguage } from '@atproto/common-web' export { parseLanguage } from '@atproto/common-web'
export * from './types' export * from './types'
@ -22,7 +22,7 @@ export * from './rich-text/util'
export * from './moderation' export * from './moderation'
export * from './moderation/types' export * from './moderation/types'
export * from './mocker' 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 { Agent } from './agent'
export { AtpAgent, type AtpAgentOptions } from './atp-agent' export { AtpAgent, type AtpAgentOptions } from './atp-agent'

View File

@ -1,11 +1,11 @@
import { import {
ComAtprotoLabelDefs,
AppBskyFeedDefs,
AppBskyActorDefs, AppBskyActorDefs,
AppBskyFeedPost,
AppBskyEmbedRecord, AppBskyEmbedRecord,
AppBskyFeedDefs,
AppBskyFeedPost,
AppBskyGraphDefs, AppBskyGraphDefs,
AppBskyNotificationListNotifications, AppBskyNotificationListNotifications,
ComAtprotoLabelDefs,
} from './client' } from './client'
const FAKE_CID = 'bafyreiclp443lavogvhj3d2ob2cxbfuscni2k5jk7bebjzg7khl3esabwq' const FAKE_CID = 'bafyreiclp443lavogvhj3d2ob2cxbfuscni2k5jk7bebjzg7khl3esabwq'

View File

@ -1,20 +1,20 @@
import { AppBskyGraphDefs } from '../client/index' import { AppBskyGraphDefs } from '../client/index'
import { LABELS } from './const/labels'
import { import {
BLOCK_BEHAVIOR, BLOCK_BEHAVIOR,
MUTE_BEHAVIOR, CUSTOM_LABEL_VALUE_RE,
MUTEWORD_BEHAVIOR,
HIDE_BEHAVIOR, HIDE_BEHAVIOR,
NOOP_BEHAVIOR,
Label, Label,
LabelPreference, LabelPreference,
LabelTarget,
MUTEWORD_BEHAVIOR,
MUTE_BEHAVIOR,
ModerationBehavior,
ModerationCause, ModerationCause,
ModerationOpts, ModerationOpts,
LabelTarget, NOOP_BEHAVIOR,
ModerationBehavior,
CUSTOM_LABEL_VALUE_RE,
} from './types' } from './types'
import { ModerationUI } from './ui' import { ModerationUI } from './ui'
import { LABELS } from './const/labels'
enum ModerationBehaviorSeverity { enum ModerationBehaviorSeverity {
High, High,

View File

@ -1,18 +1,18 @@
import { import { ModerationDecision } from './decision'
ModerationSubjectProfile,
ModerationSubjectPost,
ModerationSubjectNotification,
ModerationSubjectFeedGenerator,
ModerationSubjectUserList,
ModerationOpts,
} from './types'
import { decideAccount } from './subjects/account' import { decideAccount } from './subjects/account'
import { decideProfile } from './subjects/profile' import { decideFeedGenerator } from './subjects/feed-generator'
import { decideNotification } from './subjects/notification' import { decideNotification } from './subjects/notification'
import { decidePost } from './subjects/post' import { decidePost } from './subjects/post'
import { decideFeedGenerator } from './subjects/feed-generator' import { decideProfile } from './subjects/profile'
import { decideUserList } from './subjects/user-list' import { decideUserList } from './subjects/user-list'
import { ModerationDecision } from './decision' import {
ModerationOpts,
ModerationSubjectFeedGenerator,
ModerationSubjectNotification,
ModerationSubjectPost,
ModerationSubjectProfile,
ModerationSubjectUserList,
} from './types'
export { ModerationUI } from './ui' export { ModerationUI } from './ui'
export { ModerationDecision } from './decision' export { ModerationDecision } from './decision'

View File

@ -1,5 +1,5 @@
import { ModerationDecision } from '../decision' import { ModerationDecision } from '../decision'
import { Label, ModerationSubjectProfile, ModerationOpts } from '../types' import { Label, ModerationOpts, ModerationSubjectProfile } from '../types'
export function decideAccount( export function decideAccount(
subject: ModerationSubjectProfile, subject: ModerationSubjectProfile,

View File

@ -1,5 +1,5 @@
import { ModerationDecision } from '../decision' import { ModerationDecision } from '../decision'
import { ModerationSubjectFeedGenerator, ModerationOpts } from '../types' import { ModerationOpts, ModerationSubjectFeedGenerator } from '../types'
import { decideAccount } from './account' import { decideAccount } from './account'
import { decideProfile } from './profile' import { decideProfile } from './profile'

View File

@ -1,5 +1,5 @@
import { ModerationDecision } from '../decision' import { ModerationDecision } from '../decision'
import { ModerationSubjectNotification, ModerationOpts } from '../types' import { ModerationOpts, ModerationSubjectNotification } from '../types'
import { decideAccount } from './account' import { decideAccount } from './account'
import { decideProfile } from './profile' import { decideProfile } from './profile'

View File

@ -1,14 +1,14 @@
import { ModerationDecision } from '../decision'
import { import {
AppBskyFeedPost, AppBskyActorDefs,
AppBskyEmbedExternal,
AppBskyEmbedImages, AppBskyEmbedImages,
AppBskyEmbedRecord, AppBskyEmbedRecord,
AppBskyEmbedRecordWithMedia, AppBskyEmbedRecordWithMedia,
AppBskyEmbedExternal, AppBskyFeedPost,
AppBskyActorDefs,
} from '../../client' } from '../../client'
import { ModerationSubjectPost, ModerationOpts } from '../types' import { ModerationDecision } from '../decision'
import { hasMutedWord } from '../mutewords' import { hasMutedWord } from '../mutewords'
import { ModerationOpts, ModerationSubjectPost } from '../types'
import { decideAccount } from './account' import { decideAccount } from './account'
import { decideProfile } from './profile' import { decideProfile } from './profile'

View File

@ -1,5 +1,5 @@
import { ModerationDecision } from '../decision' import { ModerationDecision } from '../decision'
import { Label, ModerationSubjectProfile, ModerationOpts } from '../types' import { Label, ModerationOpts, ModerationSubjectProfile } from '../types'
export function decideProfile( export function decideProfile(
subject: ModerationSubjectProfile, subject: ModerationSubjectProfile,

View File

@ -1,7 +1,7 @@
import { AtUri } from '@atproto/syntax' import { AtUri } from '@atproto/syntax'
import { AppBskyActorDefs } from '../../client/index' import { AppBskyActorDefs } from '../../client/index'
import { ModerationDecision } from '../decision' import { ModerationDecision } from '../decision'
import { ModerationSubjectUserList, ModerationOpts } from '../types' import { ModerationOpts, ModerationSubjectUserList } from '../types'
import { decideAccount } from './account' import { decideAccount } from './account'
import { decideProfile } from './profile' import { decideProfile } from './profile'

View File

@ -1,8 +1,8 @@
import { import {
AppBskyActorDefs, AppBskyActorDefs,
AppBskyFeedDefs, AppBskyFeedDefs,
AppBskyNotificationListNotifications,
AppBskyGraphDefs, AppBskyGraphDefs,
AppBskyNotificationListNotifications,
ComAtprotoLabelDefs, ComAtprotoLabelDefs,
} from '../client/index' } from '../client/index'
import { KnownLabelValue } from './const/labels' import { KnownLabelValue } from './const/labels'

View File

@ -6,9 +6,9 @@ import {
} from '../client' } from '../client'
import { import {
InterpretedLabelValueDefinition, InterpretedLabelValueDefinition,
ModerationBehavior,
LabelPreference, LabelPreference,
LabelValueDefinitionFlag, LabelValueDefinitionFlag,
ModerationBehavior,
} from './types' } from './types'
export function isQuotedPost(embed: unknown): embed is AppBskyEmbedRecord.View { export function isQuotedPost(embed: unknown): embed is AppBskyEmbedRecord.View {

View File

@ -2,10 +2,10 @@ import TLDs from 'tlds'
import { AppBskyRichtextFacet } from '../client' import { AppBskyRichtextFacet } from '../client'
import { UnicodeString } from './unicode' import { UnicodeString } from './unicode'
import { import {
URL_REGEX,
MENTION_REGEX, MENTION_REGEX,
TAG_REGEX, TAG_REGEX,
TRAILING_PUNCTUATION_REGEX, TRAILING_PUNCTUATION_REGEX,
URL_REGEX,
} from './util' } from './util'
export type Facet = AppBskyRichtextFacet.Main export type Facet = AppBskyRichtextFacet.Main

View File

@ -92,9 +92,9 @@ F: 0 1 2 3 4 5 6 7 8 910 // string indices
*/ */
import { AppBskyFeedPost, AppBskyRichtextFacet, AtpBaseClient } from '../client' import { AppBskyFeedPost, AppBskyRichtextFacet, AtpBaseClient } from '../client'
import { UnicodeString } from './unicode'
import { sanitizeRichText } from './sanitization'
import { detectFacets } from './detection' import { detectFacets } from './detection'
import { sanitizeRichText } from './sanitization'
import { UnicodeString } from './unicode'
export type Facet = AppBskyRichtextFacet.Main export type Facet = AppBskyRichtextFacet.Main
export type FacetLink = AppBskyRichtextFacet.Link export type FacetLink = AppBskyRichtextFacet.Link

View File

@ -1,9 +1,8 @@
import { AtUri } from '@atproto/syntax' import { z } from 'zod'
import { TID } from '@atproto/common-web' import { TID } from '@atproto/common-web'
import zod from 'zod' import { AtUri } from '@atproto/syntax'
import { Nux } from './client/types/app/bsky/actor/defs'
import { AppBskyActorDefs } from './client' import { AppBskyActorDefs } from './client'
import { Nux } from './client/types/app/bsky/actor/defs'
export function sanitizeMutedWordValue(value: string) { export function sanitizeMutedWordValue(value: string) {
return ( return (
@ -97,12 +96,12 @@ export const asDid = (value: string): Did => {
throw new TypeError(`Invalid DID: ${value}`) throw new TypeError(`Invalid DID: ${value}`)
} }
export const nuxSchema = zod export const nuxSchema = z
.object({ .object({
id: zod.string().max(64), id: z.string().max(64),
completed: zod.boolean(), completed: z.boolean(),
data: zod.string().max(300).optional(), data: z.string().max(300).optional(),
expiresAt: zod.string().datetime().optional(), expiresAt: z.string().datetime().optional(),
}) })
.strict() .strict()

View File

@ -1,5 +1,5 @@
import { TestNetworkNoAppView } from '@atproto/dev-env'
import { TID } from '@atproto/common-web' import { TID } from '@atproto/common-web'
import { TestNetworkNoAppView } from '@atproto/dev-env'
import { import {
AppBskyActorDefs, AppBskyActorDefs,
AppBskyActorProfile, AppBskyActorProfile,

View File

@ -1,13 +1,13 @@
import assert from 'node:assert'
import { AddressInfo } from 'node:net' import { AddressInfo } from 'node:net'
import assert from 'assert' import { getPdsEndpoint, isValidDidDoc } from '@atproto/common-web'
import { TestNetworkNoAppView } from '@atproto/dev-env'
import { import {
AtpAgent, AtpAgent,
AtpSessionEvent,
AtpSessionData, AtpSessionData,
AtpSessionEvent,
BSKY_LABELER_DID, BSKY_LABELER_DID,
} from '../src' } from '../src'
import { TestNetworkNoAppView } from '@atproto/dev-env'
import { getPdsEndpoint, isValidDidDoc } from '@atproto/common-web'
import { createHeaderEchoServer } from './util/echo-server' import { createHeaderEchoServer } from './util/echo-server'
const getPdsEndpointUrl = (...args: Parameters<typeof getPdsEndpoint>) => { const getPdsEndpointUrl = (...args: Parameters<typeof getPdsEndpoint>) => {

View File

@ -1,5 +1,5 @@
import { AtpAgent, ComAtprotoServerCreateAccount } from '..'
import { TestNetworkNoAppView } from '@atproto/dev-env' import { TestNetworkNoAppView } from '@atproto/dev-env'
import { AtpAgent, ComAtprotoServerCreateAccount } from '..'
describe('errors', () => { describe('errors', () => {
let network: TestNetworkNoAppView let network: TestNetworkNoAppView

View File

@ -1,10 +1,10 @@
import { moderateProfile, moderatePost } from '../src' import { moderatePost, moderateProfile } from '../src'
import { import {
ModerationBehaviorSuiteRunner, ModerationBehaviorSuiteRunner,
SuiteUsers, ModerationTestSuiteScenario,
SuiteConfigurations, SuiteConfigurations,
SuiteScenarios, SuiteScenarios,
ModerationTestSuiteScenario, SuiteUsers,
} from './util/moderation-behavior' } from './util/moderation-behavior'
const USERS: SuiteUsers = { const USERS: SuiteUsers = {

View File

@ -1,10 +1,10 @@
import { import {
moderateProfile,
moderatePost,
mock,
ModerationOpts,
InterpretedLabelValueDefinition, InterpretedLabelValueDefinition,
ModerationOpts,
interpretLabelValueDefinition, interpretLabelValueDefinition,
mock,
moderatePost,
moderateProfile,
} from '../src' } from '../src'
import './util/moderation-behavior' import './util/moderation-behavior'

View File

@ -1,5 +1,4 @@
import { RichText, mock, moderatePost } from '../src/' import { RichText, mock, moderatePost } from '../src/'
import { hasMutedWord } from '../src/moderation/mutewords' import { hasMutedWord } from '../src/moderation/mutewords'
describe(`hasMutedWord`, () => { describe(`hasMutedWord`, () => {

View File

@ -1,9 +1,9 @@
import { import {
moderatePost,
mock,
ModerationOpts,
InterpretedLabelValueDefinition, InterpretedLabelValueDefinition,
ModerationOpts,
interpretLabelValueDefinition, interpretLabelValueDefinition,
mock,
moderatePost,
} from '../src' } from '../src'
import './util/moderation-behavior' import './util/moderation-behavior'

View File

@ -1,11 +1,11 @@
import { ModerationOpts } from '../dist'
import { import {
moderateProfile,
moderatePost,
mock,
interpretLabelValueDefinition, interpretLabelValueDefinition,
mock,
moderatePost,
moderateProfile,
} from '../src' } from '../src'
import './util/moderation-behavior' import './util/moderation-behavior'
import { ModerationOpts } from '../dist'
describe('Moderation', () => { describe('Moderation', () => {
it('Applies self-labels on profiles according to the global preferences', () => { it('Applies self-labels on profiles according to the global preferences', () => {

View File

@ -1,4 +1,4 @@
import { RichText, sanitizeRichText, Facet, UnicodeString } from '../src' import { Facet, RichText, UnicodeString, sanitizeRichText } from '../src'
describe('sanitizeRichText: cleanNewlines', () => { describe('sanitizeRichText: cleanNewlines', () => {
it('removes more than two consecutive new lines', () => { it('removes more than two consecutive new lines', () => {

View File

@ -1,8 +1,8 @@
import { import {
ModerationUI,
ModerationOpts,
ComAtprotoLabelDefs, ComAtprotoLabelDefs,
LabelPreference, LabelPreference,
ModerationOpts,
ModerationUI,
} from '../../src' } from '../../src'
import { mock as m } from '../../src/mocker' import { mock as m } from '../../src/mocker'

View File

@ -18,6 +18,9 @@
"scripts": { "scripts": {
"build": "tsc --build tsconfig.build.json" "build": "tsc --build tsconfig.build.json"
}, },
"engines": {
"node": ">=18.7.0"
},
"dependencies": { "dependencies": {
"@atproto/common": "workspace:^", "@atproto/common": "workspace:^",
"@atproto/crypto": "workspace:^", "@atproto/crypto": "workspace:^",

View File

@ -1,8 +1,8 @@
import * as aws from '@aws-sdk/client-kms' import * as aws from '@aws-sdk/client-kms'
import { secp256k1 as noble } from '@noble/curves/secp256k1' import { secp256k1 as noble } from '@noble/curves/secp256k1'
import KeyEncoder from 'key-encoder'
import * as ui8 from 'uint8arrays' import * as ui8 from 'uint8arrays'
import * as crypto from '@atproto/crypto' import * as crypto from '@atproto/crypto'
import KeyEncoder from 'key-encoder'
const keyEncoder = new KeyEncoder('secp256k1') const keyEncoder = new KeyEncoder('secp256k1')

View File

@ -1,9 +1,9 @@
import stream from 'node:stream'
import * as aws from '@aws-sdk/client-s3' import * as aws from '@aws-sdk/client-s3'
import { Upload } from '@aws-sdk/lib-storage' import { Upload } from '@aws-sdk/lib-storage'
import { BlobStore, BlobNotFoundError } from '@atproto/repo'
import { randomStr } from '@atproto/crypto'
import { CID } from 'multiformats/cid' 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< export type S3Config = { bucket: string; uploadTimeoutMs?: number } & Omit<
aws.S3ClientConfig, aws.S3ClientConfig,

View File

@ -1,7 +1,7 @@
#!/usr/bin/env ts-node #!/usr/bin/env ts-node
import * as fs from 'fs/promises' import * as fs from 'node:fs/promises'
import * as path from 'path' import * as path from 'node:path'
export async function main() { export async function main() {
const now = new Date() const now = new Date()

View File

@ -26,6 +26,9 @@
"migration:create": "ts-node ./bin/migration-create.ts", "migration:create": "ts-node ./bin/migration-create.ts",
"buf:gen": "buf generate ../bsync/proto && buf generate ./proto" "buf:gen": "buf generate ../bsync/proto && buf generate ./proto"
}, },
"engines": {
"node": ">=18.7.0"
},
"dependencies": { "dependencies": {
"@atproto-labs/fetch-node": "workspace:*", "@atproto-labs/fetch-node": "workspace:*",
"@atproto-labs/xrpc-utils": "workspace:*", "@atproto-labs/xrpc-utils": "workspace:*",

View File

@ -1,15 +1,15 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfile'
import AppContext from '../../../../context'
import { resHeaders } from '../../../util'
import { createPipeline, noRules } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/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 { Views } from '../../../../views'
import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getProfile = createPipeline(skeleton, hydration, noRules, presentation) const getProfile = createPipeline(skeleton, hydration, noRules, presentation)

View File

@ -1,16 +1,16 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getProfiles'
import AppContext from '../../../../context'
import { resHeaders } from '../../../util'
import { createPipeline, noRules } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Server } from '../../../../lexicon'
import { ids } from '../../../../lexicon/lexicons' 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) { export default function (server: Server, ctx: AppContext) {
const getProfile = createPipeline(skeleton, hydration, noRules, presentation) const getProfile = createPipeline(skeleton, hydration, noRules, presentation)

View File

@ -1,18 +1,18 @@
import { mapDefined, noUndefinedVals } from '@atproto/common'
import { AtpAgent } from '@atproto/api' import { AtpAgent } from '@atproto/api'
import { mapDefined, noUndefinedVals } from '@atproto/common'
import { HeadersMap } from '@atproto/xrpc' import { HeadersMap } from '@atproto/xrpc'
import AppContext from '../../../../context' import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { DataPlaneClient } from '../../../../data-plane'
import { QueryParams } from '../../../../lexicon/types/app/bsky/actor/getSuggestions'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util' 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' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,10 @@
import AppContext from '../../../../context'
import { Server } from '../../../../lexicon'
import { mapDefined } from '@atproto/common'
import { AtpAgent } from '@atproto/api' 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 { QueryParams } from '../../../../lexicon/types/app/bsky/actor/searchActors'
import { import {
HydrationFnInput, HydrationFnInput,
@ -10,10 +13,7 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,10 @@
import AppContext from '../../../../context'
import { Server } from '../../../../lexicon'
import { AtpAgent } from '@atproto/api' import { AtpAgent } from '@atproto/api'
import { mapDefined } from '@atproto/common' 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 { QueryParams } from '../../../../lexicon/types/app/bsky/actor/searchActorsTypeahead'
import { import {
HydrationFnInput, HydrationFnInput,
@ -10,10 +13,7 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,17 +1,17 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { InvalidRequestError } from '@atproto/xrpc-server'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorFeeds' import { AppContext } from '../../../../context'
import AppContext from '../../../../context' import { DataPlaneClient } from '../../../../data-plane'
import { createPipeline, noRules } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util' 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' import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,20 +1,20 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { InvalidRequestError } from '@atproto/xrpc-server'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getActorLikes' import { AppContext } from '../../../../context'
import AppContext from '../../../../context' import { DataPlaneClient } from '../../../../data-plane'
import { clearlyBadCursor, resHeaders } from '../../../util' import { FeedItem } from '../../../../hydration/feed'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util' 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 { 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) { export default function (server: Server, ctx: AppContext) {
const getActorLikes = createPipeline( const getActorLikes = createPipeline(

View File

@ -1,23 +1,23 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getAuthorFeed' import { DataPlaneClient } from '../../../../data-plane'
import AppContext from '../../../../context' import { Actor } from '../../../../hydration/actor'
import { clearlyBadCursor, resHeaders } from '../../../util' import { FeedItem, Post } from '../../../../hydration/feed'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
mergeStates, mergeStates,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util' import { parseString } from '../../../../hydration/util'
import { safePinnedPost, uriToDid } from '../../../../util/uris' import { Server } from '../../../../lexicon'
import { Actor } from '../../../../hydration/actor' import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getAuthorFeed'
import { FeedItem, Post } from '../../../../hydration/feed' import { createPipeline } from '../../../../pipeline'
import { FeedType } from '../../../../proto/bsky_pb' 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) { export default function (server: Server, ctx: AppContext) {
const getAuthorFeed = createPipeline( const getAuthorFeed = createPipeline(

View File

@ -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 { import {
InvalidRequestError, InvalidRequestError,
UpstreamFailureError,
ServerTimer, ServerTimer,
UpstreamFailureError,
serverTimingHeader, serverTimingHeader,
} from '@atproto/xrpc-server' } from '@atproto/xrpc-server'
import { ResponseType, XRPCError } from '@atproto/xrpc' import { AppContext } from '../../../../context'
import { AtpAgent, AppBskyFeedGetFeedSkeleton } from '@atproto/api' import {
import { noUndefinedVals } from '@atproto/common' 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 { QueryParams as GetFeedParams } from '../../../../lexicon/types/app/bsky/feed/getFeed'
import { OutputSchema as SkeletonOutput } from '../../../../lexicon/types/app/bsky/feed/getFeedSkeleton' import { OutputSchema as SkeletonOutput } from '../../../../lexicon/types/app/bsky/feed/getFeedSkeleton'
import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -19,17 +27,8 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx } from '../../../../hydration/hydrator'
import { FeedItem } from '../../../../hydration/feed'
import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb' import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb'
import {
Code,
getServiceEndpoint,
isDataplaneError,
unpackIdentityServices,
} from '../../../../data-plane'
import { BSKY_USER_AGENT, resHeaders } from '../../../util' import { BSKY_USER_AGENT, resHeaders } from '../../../util'
import { ids } from '../../../../lexicon/lexicons'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getFeed = createPipeline( const getFeed = createPipeline(

View File

@ -1,13 +1,13 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import AppContext from '../../../../context'
import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb'
import { import {
Code, Code,
getServiceEndpoint, getServiceEndpoint,
isDataplaneError, isDataplaneError,
unpackIdentityServices, unpackIdentityServices,
} from '../../../../data-plane' } from '../../../../data-plane'
import { Server } from '../../../../lexicon'
import { GetIdentityByDidResponse } from '../../../../proto/bsky_pb'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,13 +1,13 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getFeedGenerators'
import AppContext from '../../../../context'
import { createPipeline, noRules } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/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 { Views } from '../../../../views'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'

View File

@ -1,20 +1,19 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { normalizeDatetimeAlways } from '@atproto/syntax' import { normalizeDatetimeAlways } from '@atproto/syntax'
import { Server } from '../../../../lexicon' import { InvalidRequestError } from '@atproto/xrpc-server'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getLikes' import { AppContext } from '../../../../context'
import AppContext from '../../../../context'
import { createPipeline, RulesFnInput } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
mergeStates,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { parseString } from '../../../../hydration/util' 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 { uriToDid as creatorFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'
import { InvalidRequestError } from '@atproto/xrpc-server'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getLikes = createPipeline(skeleton, hydration, noBlocks, presentation) const getLikes = createPipeline(skeleton, hydration, noBlocks, presentation)

View File

@ -1,20 +1,20 @@
import { Server } from '../../../../lexicon' import { mapDefined } from '@atproto/common'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getListFeed' import { AppContext } from '../../../../context'
import AppContext from '../../../../context' import { DataPlaneClient } from '../../../../data-plane'
import { clearlyBadCursor, resHeaders } from '../../../util' import { FeedItem } from '../../../../hydration/feed'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
mergeStates, mergeStates,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { mapDefined } from '@atproto/common'
import { parseString } from '../../../../hydration/util' 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 { uriToDid } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getListFeed = createPipeline( const getListFeed = createPipeline(

View File

@ -1,12 +1,14 @@
import { InvalidRequestError } from '@atproto/xrpc-server' 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 { Server } from '../../../../lexicon'
import { isNotFoundPost } from '../../../../lexicon/types/app/bsky/feed/defs' import { isNotFoundPost } from '../../../../lexicon/types/app/bsky/feed/defs'
import { import {
QueryParams,
OutputSchema, OutputSchema,
QueryParams,
} from '../../../../lexicon/types/app/bsky/feed/getPostThread' } from '../../../../lexicon/types/app/bsky/feed/getPostThread'
import AppContext from '../../../../context'
import { ATPROTO_REPO_REV, resHeaders } from '../../../util'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -14,11 +16,9 @@ import {
createPipeline, createPipeline,
noRules, noRules,
} from '../../../../pipeline' } 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 { 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) { export default function (server: Server, ctx: AppContext) {
const getPostThread = createPipeline( const getPostThread = createPipeline(

View File

@ -1,17 +1,17 @@
import { dedupeStrs, mapDefined } from '@atproto/common' import { dedupeStrs, mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getPosts'
import AppContext from '../../../../context'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Server } from '../../../../lexicon'
import { uriToDid as creatorFromUri } from '../../../../util/uris'
import { resHeaders } from '../../../util'
import { ids } from '../../../../lexicon/lexicons' 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'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getPosts = createPipeline(skeleton, hydration, noBlocks, presentation) const getPosts = createPipeline(skeleton, hydration, noBlocks, presentation)

View File

@ -1,17 +1,17 @@
import { Server } from '../../../../lexicon' import { mapDefined } from '@atproto/common'
import AppContext from '../../../../context' import { AppContext } from '../../../../context'
import { createPipeline } from '../../../../pipeline'
import { clearlyBadCursor, resHeaders } from '../../../util'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/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 { 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 { uriToDid } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getQuotes = createPipeline( const getQuotes = createPipeline(

View File

@ -1,16 +1,16 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getRepostedBy'
import AppContext from '../../../../context'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { parseString } from '../../../../hydration/util' 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 { uriToDid as creatorFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,7 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import AppContext from '../../../../context'
import { parseString } from '../../../../hydration/util' import { parseString } from '../../../../hydration/util'
import { Server } from '../../../../lexicon'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,18 +1,18 @@
import { Server } from '../../../../lexicon' import { mapDefined } from '@atproto/common'
import AppContext from '../../../../context' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getTimeline' import { DataPlaneClient } from '../../../../data-plane'
import { clearlyBadCursor, resHeaders } from '../../../util' import { FeedItem } from '../../../../hydration/feed'
import { createPipeline } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { DataPlaneClient } from '../../../../data-plane'
import { parseString } from '../../../../hydration/util' import { parseString } from '../../../../hydration/util'
import { mapDefined } from '@atproto/common' import { Server } from '../../../../lexicon'
import { FeedItem } from '../../../../hydration/feed' 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) { export default function (server: Server, ctx: AppContext) {
const getTimeline = createPipeline( const getTimeline = createPipeline(

View File

@ -1,7 +1,10 @@
import AppContext from '../../../../context'
import { Server } from '../../../../lexicon'
import { AtpAgent } from '@atproto/api' import { AtpAgent } from '@atproto/api'
import { mapDefined } from '@atproto/common' 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 { QueryParams } from '../../../../lexicon/types/app/bsky/feed/searchPosts'
import { import {
HydrationFnInput, HydrationFnInput,
@ -10,11 +13,8 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } 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 { uriToDid as creatorFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,20 +1,20 @@
import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' 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 { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getActorStarterPacks' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getActorStarterPacks'
import AppContext from '../../../../context'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
noRules,
PresentationFnInput, PresentationFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { resHeaders } from '../../../util' 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) { export default function (server: Server, ctx: AppContext) {
const getActorStarterPacks = createPipeline( const getActorStarterPacks = createPipeline(

View File

@ -1,15 +1,15 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getBlocks' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getBlocks'
import AppContext from '../../../../context'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
noRules,
PresentationFnInput, PresentationFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,8 +1,13 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import {
HydrateCtx,
Hydrator,
mergeStates,
} from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -11,11 +16,6 @@ import {
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { uriToDid as didFromUri } from '../../../../util/uris' import { uriToDid as didFromUri } from '../../../../util/uris'
import {
HydrateCtx,
Hydrator,
mergeStates,
} from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,8 +1,13 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import {
HydrateCtx,
Hydrator,
mergeStates,
} from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getFollowers'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -10,11 +15,6 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import {
HydrateCtx,
Hydrator,
mergeStates,
} from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,8 +1,9 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getKnownFollowers' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getKnownFollowers'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -10,7 +11,6 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,25 +1,25 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getList'
import AppContext from '../../../../context'
import {
createPipeline,
HydrationFnInput,
PresentationFnInput,
RulesFnInput,
SkeletonFnInput,
} from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
mergeManyStates, mergeManyStates,
} from '../../../../hydration/hydrator' } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Server } from '../../../../lexicon'
import { clearlyBadCursor, resHeaders } from '../../../util' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getList'
import {
HydrationFnInput,
PresentationFnInput,
RulesFnInput,
SkeletonFnInput,
createPipeline,
} from '../../../../pipeline'
import { ListItemInfo } from '../../../../proto/bsky_pb' import { ListItemInfo } from '../../../../proto/bsky_pb'
import { uriToDid as didFromUri } from '../../../../util/uris' import { uriToDid as didFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getList = createPipeline(skeleton, hydration, noBlocks, presentation) const getList = createPipeline(skeleton, hydration, noBlocks, presentation)

View File

@ -1,15 +1,15 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks'
import AppContext from '../../../../context'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
noRules,
PresentationFnInput, PresentationFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,15 +1,15 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getListBlocks'
import AppContext from '../../../../context'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
noRules,
PresentationFnInput, PresentationFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,17 +1,17 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getLists'
import { REFERENCELIST } from '../../../../lexicon/types/app/bsky/graph/defs' import { REFERENCELIST } from '../../../../lexicon/types/app/bsky/graph/defs'
import AppContext from '../../../../context' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getLists'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
RulesFnInput, RulesFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'

View File

@ -1,9 +1,8 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getMutes' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getMutes'
import AppContext from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -11,6 +10,7 @@ import {
createPipeline, createPipeline,
noRules, noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.app.bsky.graph.getRelationships({ server.app.bsky.graph.getRelationships({

View File

@ -1,15 +1,15 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPack' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPack'
import AppContext from '../../../../context'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
noRules,
PresentationFnInput, PresentationFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'

View File

@ -1,15 +1,15 @@
import { dedupeStrs, mapDefined } from '@atproto/common' import { dedupeStrs, mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getStarterPacks'
import AppContext from '../../../../context'
import { resHeaders } from '../../../util'
import { createPipeline, noRules } from '../../../../pipeline'
import { import {
HydrateCtx, HydrateCtx,
HydrationState, HydrationState,
Hydrator, Hydrator,
} from '../../../../hydration/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 { Views } from '../../../../views'
import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const getStarterPacks = createPipeline( const getStarterPacks = createPipeline(

View File

@ -1,10 +1,11 @@
import { AtpAgent } from '@atproto/api'
import { mapDefined, noUndefinedVals } from '@atproto/common' import { mapDefined, noUndefinedVals } from '@atproto/common'
import { InvalidRequestError } from '@atproto/xrpc-server'
import AtpAgent from '@atproto/api'
import { HeadersMap } from '@atproto/xrpc' 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 { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getSuggestedFollowsByActor' import { QueryParams } from '../../../../lexicon/types/app/bsky/graph/getSuggestedFollowsByActor'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -12,7 +13,6 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'

View File

@ -1,6 +1,6 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,10 @@
import AppContext from '../../../../context' import { AtpAgent } from '@atproto/api'
import { Server } from '../../../../lexicon'
import { mapDefined } from '@atproto/common' 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 { QueryParams } from '../../../../lexicon/types/app/bsky/graph/searchStarterPacks'
import { import {
HydrationFnInput, HydrationFnInput,
@ -10,12 +13,9 @@ import {
SkeletonFnInput, SkeletonFnInput,
createPipeline, createPipeline,
} from '../../../../pipeline' } 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'
import { uriToDid as creatorFromUri } from '../../../../util/uris' import { uriToDid as creatorFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
const searchStarterPacks = createPipeline( const searchStarterPacks = createPipeline(

View File

@ -1,6 +1,6 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { MuteOperation_Type } from '../../../../proto/bsync_pb' import { MuteOperation_Type } from '../../../../proto/bsync_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,6 +1,6 @@
import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon'
import { resHeaders } from '../../../util' import { resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,8 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Hydrator } from '../../../../hydration/hydrator'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/getUnreadCount' import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/getUnreadCount'
import AppContext from '../../../../context'
import { import {
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
@ -9,7 +10,6 @@ import {
createPipeline, createPipeline,
noRules, noRules,
} from '../../../../pipeline' } from '../../../../pipeline'
import { Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' import { Views } from '../../../../views'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,20 +1,20 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import { mapDefined } from '@atproto/common' 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 { Server } from '../../../../lexicon'
import { QueryParams } from '../../../../lexicon/types/app/bsky/notification/listNotifications'
import { isRecord as isPostRecord } from '../../../../lexicon/types/app/bsky/feed/post' 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 { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
RulesFnInput, RulesFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views'
import { Notification } from '../../../../proto/bsky_pb' import { Notification } from '../../../../proto/bsky_pb'
import { uriToDid as didFromUri } from '../../../../util/uris' import { uriToDid as didFromUri } from '../../../../util/uris'
import { Views } from '../../../../views'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.app.bsky.notification.putPreferences({ server.app.bsky.notification.putPreferences({

View File

@ -2,8 +2,8 @@ import {
InvalidRequestError, InvalidRequestError,
MethodNotImplementedError, MethodNotImplementedError,
} from '@atproto/xrpc-server' } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { AppPlatform } from '../../../../proto/courier_pb' import { AppPlatform } from '../../../../proto/courier_pb'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,7 @@
import murmur from 'murmurhash'
import { Struct, Timestamp } from '@bufbuild/protobuf' import { Struct, Timestamp } from '@bufbuild/protobuf'
import { v3 as murmurV3 } from 'murmurhash'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.app.bsky.notification.updateSeen({ 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( const key = ['mark-read-generic', viewer, seenAt.getTime().toString()].join(
'::', '::',
) )
return murmur.v3(key).toString(16) return murmurV3(key).toString(16)
} }

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
// THIS IS A TEMPORARY UNSPECCED ROUTE // THIS IS A TEMPORARY UNSPECCED ROUTE
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,7 +1,7 @@
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { Server } from '../../../../lexicon' import { AppContext } from '../../../../context'
import AppContext from '../../../../context'
import { parseString } from '../../../../hydration/util' import { parseString } from '../../../../hydration/util'
import { Server } from '../../../../lexicon'
import { clearlyBadCursor, resHeaders } from '../../../util' import { clearlyBadCursor, resHeaders } from '../../../util'
// THIS IS A TEMPORARY UNSPECCED ROUTE // THIS IS A TEMPORARY UNSPECCED ROUTE

View File

@ -1,5 +1,5 @@
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
// THIS IS A TEMPORARY UNSPECCED ROUTE // THIS IS A TEMPORARY UNSPECCED ROUTE
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,19 +1,19 @@
import AtpAgent from '@atproto/api'
import { noUndefinedVals } from '@atproto/common' 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 { Server } from '../../../../lexicon'
import { TrendingTopic } from '../../../../lexicon/types/app/bsky/unspecced/defs'
import { QueryParams } from '../../../../lexicon/types/app/bsky/unspecced/getTrendingTopics'
import { import {
createPipeline,
HydrationFnInput, HydrationFnInput,
PresentationFnInput, PresentationFnInput,
RulesFnInput, RulesFnInput,
SkeletonFnInput, SkeletonFnInput,
createPipeline,
} from '../../../../pipeline' } from '../../../../pipeline'
import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'
import { Views } from '../../../../views' 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) { export default function (server: Server, ctx: AppContext) {
const getTrendingTopics = createPipeline( const getTrendingTopics = createPipeline(

View File

@ -1,6 +1,5 @@
import { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node'
import { Agent, Dispatcher, Pool, RetryAgent } from 'undici' import { Agent, Dispatcher, Pool, RetryAgent } from 'undici'
import { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node'
import { ServerConfig } from '../config' import { ServerConfig } from '../config'
import { RETRYABLE_HTTP_STATUS_CODES } from '../util/retry' import { RETRYABLE_HTTP_STATUS_CODES } from '../util/retry'

View File

@ -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 { import {
ACCEPT_ENCODING_COMPRESSED, ACCEPT_ENCODING_COMPRESSED,
ACCEPT_ENCODING_UNCOMPRESSED, ACCEPT_ENCODING_UNCOMPRESSED,
buildProxiedContentEncoding, buildProxiedContentEncoding,
formatAcceptHeader, formatAcceptHeader,
} from '@atproto-labs/xrpc-utils' } 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 { ServerConfig } from '../config'
import AppContext from '../context' import { AppContext } from '../context'
import { import {
Code, Code,
DataPlaneClient, DataPlaneClient,

View File

@ -1,7 +1,7 @@
import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { mapDefined } from '@atproto/common' import { mapDefined } from '@atproto/common'
import { INVALID_HANDLE } from '@atproto/syntax' import { INVALID_HANDLE } from '@atproto/syntax'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.com.atproto.admin.getAccountInfos({ server.com.atproto.admin.getAccountInfos({

View File

@ -1,6 +1,6 @@
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { OutputSchema } from '../../../../lexicon/types/com/atproto/admin/getSubjectStatus' import { OutputSchema } from '../../../../lexicon/types/com/atproto/admin/getSubjectStatus'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {

View File

@ -1,10 +1,10 @@
import { Timestamp } from '@bufbuild/protobuf' import { Timestamp } from '@bufbuild/protobuf'
import { AuthRequiredError, InvalidRequestError } from '@atproto/xrpc-server' import { AuthRequiredError, InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { import {
isRepoRef,
isRepoBlobRef, isRepoBlobRef,
isRepoRef,
} from '../../../../lexicon/types/com/atproto/admin/defs' } from '../../../../lexicon/types/com/atproto/admin/defs'
import { isMain as isStrongRef } from '../../../../lexicon/types/com/atproto/repo/strongRef' import { isMain as isStrongRef } from '../../../../lexicon/types/com/atproto/repo/strongRef'

View File

@ -1,7 +1,7 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import * as ident from '@atproto/syntax' import * as ident from '@atproto/syntax'
import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.com.atproto.identity.resolveHandle(async ({ req, params }) => { server.com.atproto.identity.resolveHandle(async ({ req, params }) => {

View File

@ -1,6 +1,6 @@
import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { InvalidRequestError } from '@atproto/xrpc-server' import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.com.atproto.label.queryLabels(async ({ params }) => { server.com.atproto.label.queryLabels(async ({ params }) => {

View File

@ -1,7 +1,7 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import { AtUri } from '@atproto/syntax' import { AtUri } from '@atproto/syntax'
import { InvalidRequestError } from '@atproto/xrpc-server'
import { AppContext } from '../../../../context'
import { Server } from '../../../../lexicon' import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
export default function (server: Server, ctx: AppContext) { export default function (server: Server, ctx: AppContext) {
server.com.atproto.repo.getRecord({ server.com.atproto.repo.getRecord({

Some files were not shown because too many files have changed in this diff Show More