diff --git a/package.json b/package.json index 0c03df2affd..34bb494dbd8 100644 --- a/package.json +++ b/package.json @@ -38,18 +38,18 @@ "@swc/jest": "^0.2.24", "@types/jest": "^28.1.4", "@types/node": "^18.19.24", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", "babel-eslint": "^10.1.0", "dotenv": "^16.0.3", - "eslint": "^8.24.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.2.1", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", "jest": "^28.1.2", "node-gyp": "^9.3.1", "pino-pretty": "^9.1.0", - "prettier": "^2.7.1", - "prettier-config-standard": "^5.0.0", + "prettier": "^3.2.5", + "prettier-config-standard": "^7.0.0", "typescript": "^5.3.3" }, "workspaces": { diff --git a/packages/api/src/moderation/util.ts b/packages/api/src/moderation/util.ts index aaf800aa8aa..c7ac5bdf975 100644 --- a/packages/api/src/moderation/util.ts +++ b/packages/api/src/moderation/util.ts @@ -38,8 +38,8 @@ export function interpretLabelValueDefinition( def.severity === 'alert' ? 'alert' : def.severity === 'inform' - ? 'inform' - : undefined + ? 'inform' + : undefined if (def.blurs === 'content') { // target=account, blurs=content behaviors.account.profileList = alertOrInform diff --git a/packages/api/src/rich-text/rich-text.ts b/packages/api/src/rich-text/rich-text.ts index 4c041b8bb5f..8e7a9465146 100644 --- a/packages/api/src/rich-text/rich-text.ts +++ b/packages/api/src/rich-text/rich-text.ts @@ -117,7 +117,10 @@ export interface RichTextOpts { } export class RichTextSegment { - constructor(public text: string, public facet?: Facet) {} + constructor( + public text: string, + public facet?: Facet, + ) {} get link(): FacetLink | undefined { const link = this.facet?.features.find(AppBskyRichtextFacet.isLink) diff --git a/packages/aws/src/s3.ts b/packages/aws/src/s3.ts index 71702637dbd..46d82c0966e 100644 --- a/packages/aws/src/s3.ts +++ b/packages/aws/src/s3.ts @@ -17,7 +17,10 @@ export class S3BlobStore implements BlobStore { private client: aws.S3 private bucket: string - constructor(public did: string, cfg: S3Config) { + constructor( + public did: string, + cfg: S3Config, + ) { const { bucket, ...rest } = cfg this.bucket = bucket this.client = new aws.S3({ diff --git a/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts b/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts index 63b9ed0f37b..55075180ae3 100644 --- a/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts +++ b/packages/bsky/src/api/app/bsky/feed/getAuthorFeed.ts @@ -190,7 +190,10 @@ class SelfThreadTracker { feedUris = new Set() cache = new Map() - constructor(items: FeedItem[], private hydration: HydrationState) { + constructor( + items: FeedItem[], + private hydration: HydrationState, + ) { items.forEach((item) => { if (!item.repost) { this.feedUris.add(item.post.uri) diff --git a/packages/bsky/src/api/app/bsky/notification/registerPush.ts b/packages/bsky/src/api/app/bsky/notification/registerPush.ts index bd4bcec1f2b..87b82e294ca 100644 --- a/packages/bsky/src/api/app/bsky/notification/registerPush.ts +++ b/packages/bsky/src/api/app/bsky/notification/registerPush.ts @@ -24,8 +24,8 @@ export default function (server: Server, ctx: AppContext) { platform === 'ios' ? AppPlatform.IOS : platform === 'android' - ? AppPlatform.ANDROID - : AppPlatform.WEB, + ? AppPlatform.ANDROID + : AppPlatform.WEB, appId, }) }, diff --git a/packages/bsky/src/auth-verifier.ts b/packages/bsky/src/auth-verifier.ts index 44bde797932..ad41a6f12fb 100644 --- a/packages/bsky/src/auth-verifier.ts +++ b/packages/bsky/src/auth-verifier.ts @@ -64,7 +64,10 @@ export class AuthVerifier { public modServiceDid: string private adminPasses: Set - constructor(public dataplane: DataPlaneClient, opts: AuthVerifierOpts) { + constructor( + public dataplane: DataPlaneClient, + opts: AuthVerifierOpts, + ) { this.ownDid = opts.ownDid this.modServiceDid = opts.modServiceDid this.adminPasses = new Set(opts.adminPasses) diff --git a/packages/bsky/src/cache/read-through.ts b/packages/bsky/src/cache/read-through.ts index 1d1849e8451..aa2d207fae5 100644 --- a/packages/bsky/src/cache/read-through.ts +++ b/packages/bsky/src/cache/read-through.ts @@ -14,7 +14,10 @@ export type CacheOptions = { } export class ReadThroughCache { - constructor(public redis: Redis, public opts: CacheOptions) {} + constructor( + public redis: Redis, + public opts: CacheOptions, + ) {} private async _fetchMany(keys: string[]): Promise> { let result: Record = {} @@ -142,10 +145,13 @@ export class ReadThroughCache { } const removeNulls = (obj: Record): Record => { - return Object.entries(obj).reduce((acc, [key, val]) => { - if (val !== null) { - acc[key] = val - } - return acc - }, {} as Record) + return Object.entries(obj).reduce( + (acc, [key, val]) => { + if (val !== null) { + acc[key] = val + } + return acc + }, + {} as Record, + ) } diff --git a/packages/bsky/src/data-plane/server/db/pagination.ts b/packages/bsky/src/data-plane/server/db/pagination.ts index d4c5747e2b4..90d7be0b84d 100644 --- a/packages/bsky/src/data-plane/server/db/pagination.ts +++ b/packages/bsky/src/data-plane/server/db/pagination.ts @@ -23,7 +23,10 @@ export type LabeledResult = { * ↳ SQL Condition */ export abstract class GenericKeyset { - constructor(public primary: DbRef, public secondary: DbRef) {} + constructor( + public primary: DbRef, + public secondary: DbRef, + ) {} abstract labelResult(result: R): LR abstract labeledResultToCursor(labeled: LR): Cursor abstract cursorToLabeledResult(cursor: Cursor): LR diff --git a/packages/bsky/src/data-plane/server/index.ts b/packages/bsky/src/data-plane/server/index.ts index f925de83c48..a12c63a22b3 100644 --- a/packages/bsky/src/data-plane/server/index.ts +++ b/packages/bsky/src/data-plane/server/index.ts @@ -9,7 +9,10 @@ import { IdResolver, MemoryCache } from '@atproto/identity' export { RepoSubscription } from './subscription' export class DataPlaneServer { - constructor(public server: http.Server, public idResolver: IdResolver) {} + constructor( + public server: http.Server, + public idResolver: IdResolver, + ) {} static async create(db: Database, port: number, plcUrl?: string) { const app = express() diff --git a/packages/bsky/src/data-plane/server/indexing/index.ts b/packages/bsky/src/data-plane/server/indexing/index.ts index 743e0380f97..4322887fe0c 100644 --- a/packages/bsky/src/data-plane/server/indexing/index.ts +++ b/packages/bsky/src/data-plane/server/indexing/index.ts @@ -206,13 +206,16 @@ export class IndexingService { .where('did', '=', did) .select(['uri', 'cid']) .execute() - return res.reduce((acc, cur) => { - acc[cur.uri] = { - uri: new AtUri(cur.uri), - cid: CID.parse(cur.cid), - } - return acc - }, {} as Record) + return res.reduce( + (acc, cur) => { + acc[cur.uri] = { + uri: new AtUri(cur.uri), + cid: CID.parse(cur.cid), + } + return acc + }, + {} as Record, + ) } async setCommitLastSeen( diff --git a/packages/bsky/src/data-plane/server/subscription/index.ts b/packages/bsky/src/data-plane/server/subscription/index.ts index a020eb0542d..cc9fcab0a28 100644 --- a/packages/bsky/src/data-plane/server/subscription/index.ts +++ b/packages/bsky/src/data-plane/server/subscription/index.ts @@ -134,9 +134,8 @@ export class RepoSubscription { return } if (msg.rebase) { - const needsReindex = await this.indexingSvc.checkCommitNeedsIndexing( - root, - ) + const needsReindex = + await this.indexingSvc.checkCommitNeedsIndexing(root) if (needsReindex) { await this.indexingSvc.indexRepo(msg.repo, rootCid.toString()) } diff --git a/packages/bsky/src/data-plane/server/subscription/util.ts b/packages/bsky/src/data-plane/server/subscription/util.ts index 40bf30f73c8..5027453a91c 100644 --- a/packages/bsky/src/data-plane/server/subscription/util.ts +++ b/packages/bsky/src/data-plane/server/subscription/util.ts @@ -88,7 +88,10 @@ export class ConsecutiveList { export class ConsecutiveItem { isComplete = false - constructor(private consecutive: ConsecutiveList, public value: T) {} + constructor( + private consecutive: ConsecutiveList, + public value: T, + ) {} complete() { this.isComplete = true diff --git a/packages/bsky/src/hydration/actor.ts b/packages/bsky/src/hydration/actor.ts index 44f8d4360e0..c578d3c5f5d 100644 --- a/packages/bsky/src/hydration/actor.ts +++ b/packages/bsky/src/hydration/actor.ts @@ -61,13 +61,16 @@ export class ActorHydrator { const res = handles.length ? await this.dataplane.getDidsByHandles({ handles }) : { dids: [] } - const didByHandle = handles.reduce((acc, cur, i) => { - const did = res.dids[i] - if (did && did.length > 0) { - return acc.set(cur, did) - } - return acc - }, new Map() as Map) + const didByHandle = handles.reduce( + (acc, cur, i) => { + const did = res.dids[i] + if (did && did.length > 0) { + return acc.set(cur, did) + } + return acc + }, + new Map() as Map, + ) return handleOrDids.map((id) => id.startsWith('did:') ? id : didByHandle.get(id), ) diff --git a/packages/bsky/src/hydration/graph.ts b/packages/bsky/src/hydration/graph.ts index efcd2fb9948..38ca8fa0db9 100644 --- a/packages/bsky/src/hydration/graph.ts +++ b/packages/bsky/src/hydration/graph.ts @@ -28,11 +28,14 @@ export type Block = RecordInfo export type RelationshipPair = [didA: string, didB: string] const dedupePairs = (pairs: RelationshipPair[]): RelationshipPair[] => { - const mapped = pairs.reduce((acc, cur) => { - const sorted = ([...cur] as RelationshipPair).sort() - acc[sorted.join('-')] = sorted - return acc - }, {} as Record) + const mapped = pairs.reduce( + (acc, cur) => { + const sorted = ([...cur] as RelationshipPair).sort() + acc[sorted.join('-')] = sorted + return acc + }, + {} as Record, + ) return Object.values(mapped) } diff --git a/packages/bsky/src/image/server.ts b/packages/bsky/src/image/server.ts index caadc0e68c7..dd98738b890 100644 --- a/packages/bsky/src/image/server.ts +++ b/packages/bsky/src/image/server.ts @@ -29,7 +29,10 @@ export class ImageProcessingServer { app: Express = express() uriBuilder: ImageUriBuilder - constructor(public cfg: ServerConfig, public cache: BlobCache) { + constructor( + public cfg: ServerConfig, + public cache: BlobCache, + ) { this.uriBuilder = new ImageUriBuilder('') this.app.get('*', this.handler.bind(this)) this.app.use(errorMiddleware) diff --git a/packages/bsky/tests/_util.ts b/packages/bsky/tests/_util.ts index fc93fce6d91..7f13d383aaf 100644 --- a/packages/bsky/tests/_util.ts +++ b/packages/bsky/tests/_util.ts @@ -178,16 +178,16 @@ export const stripViewerFromPost = (postUnknown: unknown): PostView => { post.embed && isViewRecord(post.embed.record) ? post.embed.record // Record from record embed : post.embed?.['record'] && isViewRecord(post.embed['record']['record']) - ? post.embed['record']['record'] // Record from record-with-media embed - : undefined + ? post.embed['record']['record'] // Record from record-with-media embed + : undefined if (recordEmbed) { recordEmbed.author = stripViewer(recordEmbed.author) recordEmbed.embeds?.forEach((deepEmbed) => { const deepRecordEmbed = isViewRecord(deepEmbed.record) ? deepEmbed.record // Record from record embed : deepEmbed['record'] && isViewRecord(deepEmbed['record']['record']) - ? deepEmbed['record']['record'] // Record from record-with-media embed - : undefined + ? deepEmbed['record']['record'] // Record from record-with-media embed + : undefined if (deepRecordEmbed) { deepRecordEmbed.author = stripViewer(deepRecordEmbed.author) } diff --git a/packages/common-web/src/arrays.ts b/packages/common-web/src/arrays.ts index 36c2f0dcb27..69fb9415cbe 100644 --- a/packages/common-web/src/arrays.ts +++ b/packages/common-web/src/arrays.ts @@ -1,8 +1,11 @@ export const keyBy = (arr: T[], key: string): Record => { - return arr.reduce((acc, cur) => { - acc[cur[key]] = cur - return acc - }, {} as Record) + return arr.reduce( + (acc, cur) => { + acc[cur[key]] = cur + return acc + }, + {} as Record, + ) } export const mapDefined = ( diff --git a/packages/common/src/ipld.ts b/packages/common/src/ipld.ts index 6939afe1049..921fd9e9026 100644 --- a/packages/common/src/ipld.ts +++ b/packages/common/src/ipld.ts @@ -92,7 +92,10 @@ export class VerifyCidTransform extends Transform { } export class VerifyCidError extends Error { - constructor(public expected: CID, public actual: CID) { + constructor( + public expected: CID, + public actual: CID, + ) { super('Bad cid check') } } diff --git a/packages/common/src/streams.ts b/packages/common/src/streams.ts index 691ad3ff08c..5514e8a7ca6 100644 --- a/packages/common/src/streams.ts +++ b/packages/common/src/streams.ts @@ -53,7 +53,10 @@ export const bytesToStream = (bytes: Uint8Array): Readable => { export class MaxSizeChecker extends Transform { totalSize = 0 - constructor(public maxSize: number, public createError: () => Error) { + constructor( + public maxSize: number, + public createError: () => Error, + ) { super() } _transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback) { diff --git a/packages/crypto/src/p256/keypair.ts b/packages/crypto/src/p256/keypair.ts index a858fd77093..94a84c2ad2c 100644 --- a/packages/crypto/src/p256/keypair.ts +++ b/packages/crypto/src/p256/keypair.ts @@ -18,7 +18,10 @@ export class P256Keypair implements Keypair { jwtAlg = P256_JWT_ALG private publicKey: Uint8Array - constructor(private privateKey: Uint8Array, private exportable: boolean) { + constructor( + private privateKey: Uint8Array, + private exportable: boolean, + ) { this.publicKey = p256.getPublicKey(privateKey) } diff --git a/packages/crypto/src/secp256k1/keypair.ts b/packages/crypto/src/secp256k1/keypair.ts index 4391e01add9..e312ee8f9ba 100644 --- a/packages/crypto/src/secp256k1/keypair.ts +++ b/packages/crypto/src/secp256k1/keypair.ts @@ -18,7 +18,10 @@ export class Secp256k1Keypair implements Keypair { jwtAlg = SECP256K1_JWT_ALG private publicKey: Uint8Array - constructor(private privateKey: Uint8Array, private exportable: boolean) { + constructor( + private privateKey: Uint8Array, + private exportable: boolean, + ) { this.publicKey = k256.getPublicKey(privateKey) } diff --git a/packages/dev-env/src/network-no-appview.ts b/packages/dev-env/src/network-no-appview.ts index c47713c4443..ee102b0cc98 100644 --- a/packages/dev-env/src/network-no-appview.ts +++ b/packages/dev-env/src/network-no-appview.ts @@ -8,7 +8,10 @@ import { SeedClient } from './seed/client' export class TestNetworkNoAppView { feedGens: TestFeedGen[] = [] - constructor(public plc: TestPlc, public pds: TestPds) {} + constructor( + public plc: TestPlc, + public pds: TestPds, + ) {} static async create( params: Partial = {}, diff --git a/packages/dev-env/src/ozone.ts b/packages/dev-env/src/ozone.ts index 90733932ec3..435a8cf20a2 100644 --- a/packages/dev-env/src/ozone.ts +++ b/packages/dev-env/src/ozone.ts @@ -128,8 +128,8 @@ export class TestOzone { role === 'admin' ? this.adminAccnt : role === 'moderator' - ? this.moderatorAccnt - : this.triageAccnt + ? this.moderatorAccnt + : this.triageAccnt const jwt = await createServiceJwt({ iss: account.did, aud: this.ctx.cfg.service.did, diff --git a/packages/dev-env/src/seed/client.ts b/packages/dev-env/src/seed/client.ts index 41ba25e551e..556c44d8ba7 100644 --- a/packages/dev-env/src/seed/client.ts +++ b/packages/dev-env/src/seed/client.ts @@ -88,7 +88,10 @@ export class SeedClient< > dids: Record - constructor(public network: Network, public agent: AtpAgent) { + constructor( + public network: Network, + public agent: AtpAgent, + ) { this.accounts = {} this.profiles = {} this.follows = {} @@ -277,8 +280,8 @@ export class SeedClient< media: imageEmbed, } : recordEmbed - ? { $type: 'app.bsky.embed.record', ...recordEmbed } - : imageEmbed + ? { $type: 'app.bsky.embed.record', ...recordEmbed } + : imageEmbed const res = await this.agent.api.app.bsky.feed.post.create( { repo: by }, { diff --git a/packages/identity/src/did/web-resolver.ts b/packages/identity/src/did/web-resolver.ts index d93c886d57f..201d70c902c 100644 --- a/packages/identity/src/did/web-resolver.ts +++ b/packages/identity/src/did/web-resolver.ts @@ -6,7 +6,10 @@ import { PoorlyFormattedDidError, UnsupportedDidWebPathError } from '../errors' export const DOC_PATH = '/.well-known/did.json' export class DidWebResolver extends BaseResolver { - constructor(public timeout: number, public cache?: DidCache) { + constructor( + public timeout: number, + public cache?: DidCache, + ) { super(cache) } diff --git a/packages/identity/src/errors.ts b/packages/identity/src/errors.ts index 6d91da57eab..f5ad52740db 100644 --- a/packages/identity/src/errors.ts +++ b/packages/identity/src/errors.ts @@ -17,7 +17,10 @@ export class UnsupportedDidMethodError extends Error { } export class PoorlyFormattedDidDocumentError extends Error { - constructor(public did: string, public doc: unknown) { + constructor( + public did: string, + public doc: unknown, + ) { super(`Poorly formatted DID Document: ${doc}`) } } diff --git a/packages/ozone/src/auth-verifier.ts b/packages/ozone/src/auth-verifier.ts index b3ab579d754..b3ef1144c4a 100644 --- a/packages/ozone/src/auth-verifier.ts +++ b/packages/ozone/src/auth-verifier.ts @@ -60,7 +60,10 @@ export class AuthVerifier { triage: string[] private adminPassword: string - constructor(public idResolver: IdResolver, opts: AuthVerifierOpts) { + constructor( + public idResolver: IdResolver, + opts: AuthVerifierOpts, + ) { this.serviceDid = opts.serviceDid this.admins = opts.admins this.moderators = opts.moderators diff --git a/packages/ozone/src/context.ts b/packages/ozone/src/context.ts index d0cbd9ae347..f9241124c7e 100644 --- a/packages/ozone/src/context.ts +++ b/packages/ozone/src/context.ts @@ -37,7 +37,10 @@ export type AppContextOptions = { } export class AppContext { - constructor(private opts: AppContextOptions, private secrets: OzoneSecrets) {} + constructor( + private opts: AppContextOptions, + private secrets: OzoneSecrets, + ) {} static async fromConfig( cfg: OzoneConfig, diff --git a/packages/ozone/src/db/pagination.ts b/packages/ozone/src/db/pagination.ts index 672da3450dd..5f3d935582d 100644 --- a/packages/ozone/src/db/pagination.ts +++ b/packages/ozone/src/db/pagination.ts @@ -23,7 +23,10 @@ export type LabeledResult = { * ↳ SQL Condition */ export abstract class GenericKeyset { - constructor(public primary: DbRef, public secondary: DbRef) {} + constructor( + public primary: DbRef, + public secondary: DbRef, + ) {} abstract labelResult(result: R): LR abstract labeledResultToCursor(labeled: LR): Cursor abstract cursorToLabeledResult(cursor: Cursor): LR diff --git a/packages/ozone/src/sequencer/outbox.ts b/packages/ozone/src/sequencer/outbox.ts index c9ed203ca1c..c7069fee273 100644 --- a/packages/ozone/src/sequencer/outbox.ts +++ b/packages/ozone/src/sequencer/outbox.ts @@ -13,7 +13,10 @@ export class Outbox { cutoverBuffer: LabelsEvt[] outBuffer: AsyncBuffer - constructor(public sequencer: Sequencer, opts: Partial = {}) { + constructor( + public sequencer: Sequencer, + opts: Partial = {}, + ) { const { maxBufferSize = 500 } = opts this.cutoverBuffer = [] this.outBuffer = new AsyncBuffer(maxBufferSize) diff --git a/packages/ozone/src/sequencer/sequencer.ts b/packages/ozone/src/sequencer/sequencer.ts index aac7fcf802b..aa430acd53c 100644 --- a/packages/ozone/src/sequencer/sequencer.ts +++ b/packages/ozone/src/sequencer/sequencer.ts @@ -18,7 +18,10 @@ export class Sequencer extends (EventEmitter as new () => SequencerEmitter) { queued = false conn: PoolClient | undefined - constructor(public modSrvc: ModerationService, public lastSeen = 0) { + constructor( + public modSrvc: ModerationService, + public lastSeen = 0, + ) { super() this.db = modSrvc.db // note: this does not err when surpassed, just prints a warning to stderr diff --git a/packages/ozone/tests/_util.ts b/packages/ozone/tests/_util.ts index 546e210cf37..991569ef4e7 100644 --- a/packages/ozone/tests/_util.ts +++ b/packages/ozone/tests/_util.ts @@ -164,16 +164,16 @@ export const stripViewerFromPost = (postUnknown: unknown): PostView => { post.embed && isViewRecord(post.embed.record) ? post.embed.record // Record from record embed : post.embed?.['record'] && isViewRecord(post.embed['record']['record']) - ? post.embed['record']['record'] // Record from record-with-media embed - : undefined + ? post.embed['record']['record'] // Record from record-with-media embed + : undefined if (recordEmbed) { recordEmbed.author = stripViewer(recordEmbed.author) recordEmbed.embeds?.forEach((deepEmbed) => { const deepRecordEmbed = isViewRecord(deepEmbed.record) ? deepEmbed.record // Record from record embed : deepEmbed['record'] && isViewRecord(deepEmbed['record']['record']) - ? deepEmbed['record']['record'] // Record from record-with-media embed - : undefined + ? deepEmbed['record']['record'] // Record from record-with-media embed + : undefined if (deepRecordEmbed) { deepRecordEmbed.author = stripViewer(deepRecordEmbed.author) } diff --git a/packages/pds/src/account-manager/helpers/invite.ts b/packages/pds/src/account-manager/helpers/invite.ts index 81034b7f5d9..7b5135a08ee 100644 --- a/packages/pds/src/account-manager/helpers/invite.ts +++ b/packages/pds/src/account-manager/helpers/invite.ts @@ -43,7 +43,7 @@ export const createAccountInviteCodes = async ( forAccount, createdBy: forAccount, createdAt: now, - } as InviteCode), + }) as InviteCode, ) await db.executeWithRetry(db.db.insertInto('invite_code').values(rows)) @@ -199,12 +199,15 @@ export const getInvitedByForAccounts = async ( uses: uses[row.code] ?? [], disabled: row.disabled === 1, })) - return codeDetails.reduce((acc, cur) => { - for (const use of cur.uses) { - acc[use.usedBy] = cur - } - return acc - }, {} as Record) + return codeDetails.reduce( + (acc, cur) => { + for (const use of cur.uses) { + acc[use.usedBy] = cur + } + return acc + }, + {} as Record, + ) } export const disableInviteCodes = async ( diff --git a/packages/pds/src/actor-store/blob/reader.ts b/packages/pds/src/actor-store/blob/reader.ts index 299358b1119..0ad71d15803 100644 --- a/packages/pds/src/actor-store/blob/reader.ts +++ b/packages/pds/src/actor-store/blob/reader.ts @@ -7,7 +7,10 @@ import { countAll, countDistinct, notSoftDeletedClause } from '../../db/util' import { StatusAttr } from '../../lexicon/types/com/atproto/admin/defs' export class BlobReader { - constructor(public db: ActorDb, public blobstore: BlobStore) {} + constructor( + public db: ActorDb, + public blobstore: BlobStore, + ) {} async getBlob( cid: CID, diff --git a/packages/pds/src/actor-store/record/transactor.ts b/packages/pds/src/actor-store/record/transactor.ts index 7e67caec752..9145c86e337 100644 --- a/packages/pds/src/actor-store/record/transactor.ts +++ b/packages/pds/src/actor-store/record/transactor.ts @@ -8,7 +8,10 @@ import { StatusAttr } from '../../lexicon/types/com/atproto/admin/defs' import { RepoRecord } from '@atproto/lexicon' export class RecordTransactor extends RecordReader { - constructor(public db: ActorDb, public blobstore: BlobStore) { + constructor( + public db: ActorDb, + public blobstore: BlobStore, + ) { super(db) } diff --git a/packages/pds/src/actor-store/repo/reader.ts b/packages/pds/src/actor-store/repo/reader.ts index 07be5f83eff..63abe1400d6 100644 --- a/packages/pds/src/actor-store/repo/reader.ts +++ b/packages/pds/src/actor-store/repo/reader.ts @@ -9,7 +9,10 @@ export class RepoReader { record: RecordReader storage: SqlRepoReader - constructor(public db: ActorDb, public blobstore: BlobStore) { + constructor( + public db: ActorDb, + public blobstore: BlobStore, + ) { this.blob = new BlobReader(db, blobstore) this.record = new RecordReader(db) this.storage = new SqlRepoReader(db) diff --git a/packages/pds/src/actor-store/repo/sql-repo-transactor.ts b/packages/pds/src/actor-store/repo/sql-repo-transactor.ts index 0be7e0ebcb3..effc182a3f7 100644 --- a/packages/pds/src/actor-store/repo/sql-repo-transactor.ts +++ b/packages/pds/src/actor-store/repo/sql-repo-transactor.ts @@ -8,7 +8,11 @@ export class SqlRepoTransactor extends SqlRepoReader implements RepoStorage { cache: BlockMap = new BlockMap() now: string - constructor(public db: ActorDb, public did: string, now?: string) { + constructor( + public db: ActorDb, + public did: string, + now?: string, + ) { super(db) this.now = now ?? new Date().toISOString() } diff --git a/packages/pds/src/api/com/atproto/repo/uploadBlob.ts b/packages/pds/src/api/com/atproto/repo/uploadBlob.ts index ca610f79d9d..494a9fe0196 100644 --- a/packages/pds/src/api/com/atproto/repo/uploadBlob.ts +++ b/packages/pds/src/api/com/atproto/repo/uploadBlob.ts @@ -21,9 +21,8 @@ export default function (server: Server, ctx: AppContext) { ) return store.transact(async (actorTxn) => { - const blobRef = await actorTxn.repo.blob.trackUntetheredBlob( - metadata, - ) + const blobRef = + await actorTxn.repo.blob.trackUntetheredBlob(metadata) // make the blob permanent if an associated record is already indexed const recordsForBlob = await actorTxn.repo.blob.getRecordsForBlob( diff --git a/packages/pds/src/db/migrator.ts b/packages/pds/src/db/migrator.ts index 00d6cff44f2..844a80c204d 100644 --- a/packages/pds/src/db/migrator.ts +++ b/packages/pds/src/db/migrator.ts @@ -1,7 +1,10 @@ import { Kysely, Migrator as KyselyMigrator, Migration } from 'kysely' export class Migrator extends KyselyMigrator { - constructor(public db: Kysely, migrations: Record) { + constructor( + public db: Kysely, + migrations: Record, + ) { super({ db, provider: { diff --git a/packages/pds/src/db/pagination.ts b/packages/pds/src/db/pagination.ts index bfc82da6dfa..02430033662 100644 --- a/packages/pds/src/db/pagination.ts +++ b/packages/pds/src/db/pagination.ts @@ -23,7 +23,10 @@ export type LabeledResult = { * ↳ SQL Condition */ export abstract class GenericKeyset { - constructor(public primary: DbRef, public secondary: DbRef) {} + constructor( + public primary: DbRef, + public secondary: DbRef, + ) {} abstract labelResult(result: R): LR abstract labeledResultToCursor(labeled: LR): Cursor abstract cursorToLabeledResult(cursor: Cursor): LR diff --git a/packages/pds/src/mailer/index.ts b/packages/pds/src/mailer/index.ts index 3a4633da1c2..00aa4704b7a 100644 --- a/packages/pds/src/mailer/index.ts +++ b/packages/pds/src/mailer/index.ts @@ -60,7 +60,7 @@ export class ServerMailer { private async sendTemplate( templateName: K, - params: Parameters[0], + params: Parameters<(typeof templates)[K]>[0], mailOpts: Mail.Options, ) { const html = templates[templateName]({ diff --git a/packages/pds/src/pipethrough.ts b/packages/pds/src/pipethrough.ts index 90200ea1945..59998d5b81b 100644 --- a/packages/pds/src/pipethrough.ts +++ b/packages/pds/src/pipethrough.ts @@ -163,10 +163,13 @@ const RES_HEADERS_TO_FORWARD = [ ] const makeResHeaders = (res: Response): Record => { - const headers = RES_HEADERS_TO_FORWARD.reduce((acc, cur) => { - acc[cur] = res.headers.get(cur) ?? undefined - return acc - }, {} as Record) + const headers = RES_HEADERS_TO_FORWARD.reduce( + (acc, cur) => { + acc[cur] = res.headers.get(cur) ?? undefined + return acc + }, + {} as Record, + ) return noUndefinedVals(headers) } diff --git a/packages/pds/src/sequencer/outbox.ts b/packages/pds/src/sequencer/outbox.ts index 5ebdaf970a8..56ccba45ae9 100644 --- a/packages/pds/src/sequencer/outbox.ts +++ b/packages/pds/src/sequencer/outbox.ts @@ -13,7 +13,10 @@ export class Outbox { cutoverBuffer: SeqEvt[] outBuffer: AsyncBuffer - constructor(public sequencer: Sequencer, opts: Partial = {}) { + constructor( + public sequencer: Sequencer, + opts: Partial = {}, + ) { const { maxBufferSize = 500 } = opts this.cutoverBuffer = [] this.outBuffer = new AsyncBuffer(maxBufferSize) diff --git a/packages/pds/tests/entryway.test.ts b/packages/pds/tests/entryway.test.ts index 8ef77239a4d..0e91496886e 100644 --- a/packages/pds/tests/entryway.test.ts +++ b/packages/pds/tests/entryway.test.ts @@ -120,9 +120,8 @@ describe('entryway', () => { }, ) const doc = await entryway.ctx.idResolver.did.resolve(alice) - const handleToDid = await entryway.ctx.idResolver.handle.resolve( - 'alice3.test', - ) + const handleToDid = + await entryway.ctx.idResolver.handle.resolve('alice3.test') const accountFromPds = await pds.ctx.accountManager.getAccount(alice) const accountFromEntryway = await entryway.ctx.services .account(entryway.ctx.db) diff --git a/packages/repo/src/error.ts b/packages/repo/src/error.ts index 8ceaaa2a2c2..4cd16b2babf 100644 --- a/packages/repo/src/error.ts +++ b/packages/repo/src/error.ts @@ -1,7 +1,10 @@ import { CID } from 'multiformats/cid' export class MissingBlockError extends Error { - constructor(public cid: CID, def?: string) { + constructor( + public cid: CID, + def?: string, + ) { let msg = `block not found: ${cid.toString()}` if (def) { msg += `, expected type: ${def}` @@ -11,21 +14,30 @@ export class MissingBlockError extends Error { } export class MissingBlocksError extends Error { - constructor(public context: string, public cids: CID[]) { + constructor( + public context: string, + public cids: CID[], + ) { const cidStr = cids.map((c) => c.toString()) super(`missing ${context} blocks: ${cidStr}`) } } export class MissingCommitBlocksError extends Error { - constructor(public commit: CID, public cids: CID[]) { + constructor( + public commit: CID, + public cids: CID[], + ) { const cidStr = cids.map((c) => c.toString()) super(`missing blocks for commit ${commit.toString()}: ${cidStr}`) } } export class UnexpectedObjectError extends Error { - constructor(public cid: CID, public def: string) { + constructor( + public cid: CID, + public def: string, + ) { super(`unexpected object at ${cid.toString()}, expected: ${def}`) } } diff --git a/packages/repo/src/mst/mst.ts b/packages/repo/src/mst/mst.ts index 1a44aafdc65..8c567ca7b26 100644 --- a/packages/repo/src/mst/mst.ts +++ b/packages/repo/src/mst/mst.ts @@ -776,7 +776,10 @@ export class MST { } export class Leaf { - constructor(public key: string, public value: CID) {} + constructor( + public key: string, + public value: CID, + ) {} isTree(): this is MST { return false diff --git a/packages/xrpc-server/src/types.ts b/packages/xrpc-server/src/types.ts index 5d406d77a11..81e05bd0bde 100644 --- a/packages/xrpc-server/src/types.ts +++ b/packages/xrpc-server/src/types.ts @@ -22,7 +22,7 @@ export type Options = { } } -export type UndecodedParams = typeof express.request['query'] +export type UndecodedParams = (typeof express.request)['query'] export type Primitive = string | number | boolean export type Params = Record diff --git a/packages/xrpc-server/src/util.ts b/packages/xrpc-server/src/util.ts index cb389d859c2..ff3d98bc99b 100644 --- a/packages/xrpc-server/src/util.ts +++ b/packages/xrpc-server/src/util.ts @@ -33,7 +33,7 @@ export function decodeQueryParams( const property = def.parameters?.properties?.[k] if (property) { if (property.type === 'array') { - const vals: typeof val[] = [] + const vals: (typeof val)[] = [] decoded[k] = val ? vals .concat(val) // Cast to array @@ -282,7 +282,10 @@ export function serverTimingHeader(timings: ServerTiming[]) { export class ServerTimer implements ServerTiming { public duration?: number private startMs?: number - constructor(public name: string, public description?: string) {} + constructor( + public name: string, + public description?: string, + ) {} start() { this.startMs = Date.now() return this diff --git a/packages/xrpc/src/types.ts b/packages/xrpc/src/types.ts index 9b79f3cd21c..b82fba737dc 100644 --- a/packages/xrpc/src/types.ts +++ b/packages/xrpc/src/types.ts @@ -80,7 +80,10 @@ export const ResponseTypeStrings = { export class XRPCResponse { success = true - constructor(public data: any, public headers: Headers) {} + constructor( + public data: any, + public headers: Headers, + ) {} } export class XRPCError extends Error { diff --git a/packages/xrpc/src/util.ts b/packages/xrpc/src/util.ts index ef48eff9330..5ceea2bd30e 100644 --- a/packages/xrpc/src/util.ts +++ b/packages/xrpc/src/util.ts @@ -39,7 +39,7 @@ export function constructMethodCallUri( } if (value !== undefined) { if (paramSchema.type === 'array') { - const vals: typeof value[] = [] + const vals: (typeof value)[] = [] vals.concat(value).forEach((val) => { uri.searchParams.append( key, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69f36a831c4..9b8d94c9e87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,26 +36,26 @@ importers: specifier: ^18.19.24 version: 18.19.24 '@typescript-eslint/eslint-plugin': - specifier: ^6.14.0 - version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.24.0)(typescript@5.3.3) + specifier: ^7.4.0 + version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.14.0 - version: 6.18.1(eslint@8.24.0)(typescript@5.3.3) + specifier: ^7.4.0 + version: 7.4.0(eslint@8.57.0)(typescript@5.3.3) babel-eslint: specifier: ^10.1.0 - version: 10.1.0(eslint@8.24.0) + version: 10.1.0(eslint@8.57.0) dotenv: specifier: ^16.0.3 version: 16.0.3 eslint: - specifier: ^8.24.0 - version: 8.24.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: - specifier: ^8.5.0 - version: 8.5.0(eslint@8.24.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.5.0)(eslint@8.24.0)(prettier@2.7.1) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) jest: specifier: ^28.1.2 version: 28.1.2(@types/node@18.19.24)(ts-node@10.8.2) @@ -66,11 +66,11 @@ importers: specifier: ^9.1.0 version: 9.1.0 prettier: - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^3.2.5 + version: 3.2.5 prettier-config-standard: - specifier: ^5.0.0 - version: 5.0.0(prettier@2.7.1) + specifier: ^7.0.0 + version: 7.0.0(prettier@3.2.5) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -5072,13 +5072,13 @@ packages: - pg-native - supports-color - /@eslint-community/eslint-utils@4.4.0(eslint@8.24.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.24.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5087,8 +5087,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -5104,6 +5104,11 @@ packages: - supports-color dev: true + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} @@ -5115,28 +5120,24 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@humanwhocodes/config-array@0.10.7: - resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/gitignore-to-minimatch@1.0.2: - resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} - dev: true - /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@ioredis/commands@1.2.0: @@ -5581,6 +5582,11 @@ packages: dev: false optional: true + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false @@ -6029,25 +6035,25 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.24.0)(typescript@5.3.3): - resolution: {integrity: sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.18.1(eslint@8.24.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/type-utils': 6.18.1(eslint@8.24.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.1(eslint@8.24.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.4.0 debug: 4.3.4 - eslint: 8.24.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -6058,71 +6064,71 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.18.1(eslint@8.24.0)(typescript@5.3.3): - resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.4.0 debug: 4.3.4 - eslint: 8.24.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.18.1: - resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.4.0: + resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 dev: true - /@typescript-eslint/type-utils@6.18.1(eslint@8.24.0)(typescript@5.3.3): - resolution: {integrity: sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.1(eslint@8.24.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.24.0 + eslint: 8.57.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.18.1: - resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.4.0: + resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): - resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.4.0(typescript@5.3.3): + resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6134,30 +6140,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.18.1(eslint@8.24.0)(typescript@5.3.3): - resolution: {integrity: sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.24.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) - eslint: 8.24.0 + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) + eslint: 8.57.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.18.1: - resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.4.0: + resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/types': 7.4.0 eslint-visitor-keys: 3.4.3 dev: true @@ -6169,6 +6175,10 @@ packages: - supports-color dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true @@ -6441,7 +6451,7 @@ packages: /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - /babel-eslint@10.1.0(eslint@8.24.0): + /babel-eslint@10.1.0(eslint@8.57.0): resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} engines: {node: '>=6'} deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. @@ -6452,7 +6462,7 @@ packages: '@babel/parser': 7.22.10 '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 - eslint: 8.24.0 + eslint: 8.57.0 eslint-visitor-keys: 1.3.0 resolve: 1.22.4 transitivePeerDependencies: @@ -7704,30 +7714,34 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.5.0(eslint@8.24.0): - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.24.0 + eslint: 8.57.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0)(eslint@8.24.0)(prettier@2.7.1): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=7.28.0' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=2.0.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true dependencies: - eslint: 8.24.0 - eslint-config-prettier: 8.5.0(eslint@8.24.0) - prettier: 2.7.1 + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.2.5 prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 dev: true /eslint-scope@7.2.2: @@ -7738,40 +7752,29 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.24.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.24.0 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: true - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.24.0: - resolution: {integrity: sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.10.7 - '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -7779,7 +7782,6 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-utils: 3.0.0(eslint@8.24.0) eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 @@ -7789,13 +7791,11 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.21.0 - globby: 11.1.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 - js-sdsl: 4.4.2 + is-path-inside: 3.0.3 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -7803,9 +7803,7 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 - regexpp: 3.2.0 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -8784,6 +8782,11 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -9343,10 +9346,6 @@ packages: engines: {node: '>=10'} dev: true - /js-sdsl@4.4.2: - resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -10431,12 +10430,12 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-config-standard@5.0.0(prettier@2.7.1): - resolution: {integrity: sha512-QK252QwCxlsak8Zx+rPKZU31UdbRcu9iUk9X1ONYtLSO221OgvV9TlKoTf6iPDZtvF3vE2mkgzFIEgSUcGELSQ==} + /prettier-config-standard@7.0.0(prettier@3.2.5): + resolution: {integrity: sha512-NgZy4TYupJR6aMMuV/Aqs0ONnVhlFT8PXVkYRskxREq8EUhJHOddVfBxPV6fWpgcASpJSgvvhVLk0CBO5M3Hvw==} peerDependencies: - prettier: ^2.4.0 + prettier: ^2.6.0 || ^3.0.0 dependencies: - prettier: 2.7.1 + prettier: 3.2.5 dev: true /prettier-linter-helpers@1.0.0: @@ -10452,6 +10451,12 @@ packages: hasBin: true dev: true + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@28.1.3: resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -10699,11 +10704,6 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -11297,6 +11297,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: