@atproto/pds 0.4.193 → 0.4.195
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/actor-store/blob/transactor.d.ts.map +1 -1
- package/dist/actor-store/blob/transactor.js +1 -0
- package/dist/actor-store/blob/transactor.js.map +1 -1
- package/dist/actor-store/record/reader.d.ts.map +1 -1
- package/dist/actor-store/record/reader.js +1 -0
- package/dist/actor-store/record/reader.js.map +1 -1
- package/dist/actor-store/record/transactor.d.ts.map +1 -1
- package/dist/actor-store/record/transactor.js +1 -0
- package/dist/actor-store/record/transactor.js.map +1 -1
- package/dist/api/com/atproto/repo/importRepo.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/importRepo.js +1 -0
- package/dist/api/com/atproto/repo/importRepo.js.map +1 -1
- package/dist/lexicon/index.d.ts +11 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +32 -1
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +806 -6
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +425 -3
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/begin.d.ts +31 -0
- package/dist/lexicon/types/app/bsky/ageassurance/begin.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js +7 -0
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts +138 -0
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js +115 -0
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.d.ts +18 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js +7 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getState.d.ts +24 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getState.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js +7 -0
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +13 -2
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts +10 -0
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js.map +1 -1
- package/dist/repo/prepare.d.ts.map +1 -1
- package/dist/repo/prepare.js +1 -0
- package/dist/repo/prepare.js.map +1 -1
- package/dist/repo/types.d.ts.map +1 -1
- package/dist/repo/types.js +1 -0
- package/dist/repo/types.js.map +1 -1
- package/dist/sequencer/events.d.ts.map +1 -1
- package/dist/sequencer/events.js +1 -0
- package/dist/sequencer/events.js.map +1 -1
- package/dist/sequencer/sequencer.d.ts.map +1 -1
- package/dist/sequencer/sequencer.js +1 -0
- package/dist/sequencer/sequencer.js.map +1 -1
- package/package.json +18 -16
- package/src/actor-store/blob/transactor.ts +2 -0
- package/src/actor-store/record/reader.ts +2 -0
- package/src/actor-store/record/transactor.ts +2 -0
- package/src/api/com/atproto/repo/importRepo.ts +2 -0
- package/src/lexicon/index.ts +49 -0
- package/src/lexicon/lexicons.ts +458 -3
- package/src/lexicon/types/app/bsky/ageassurance/begin.ts +54 -0
- package/src/lexicon/types/app/bsky/ageassurance/defs.ts +301 -0
- package/src/lexicon/types/app/bsky/ageassurance/getConfig.ts +34 -0
- package/src/lexicon/types/app/bsky/ageassurance/getState.ts +42 -0
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +13 -2
- package/src/lexicon/types/tools/ozone/moderation/queryStatuses.ts +6 -1
- package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +10 -0
- package/src/repo/prepare.ts +2 -0
- package/src/repo/types.ts +2 -0
- package/src/sequencer/events.ts +2 -0
- package/src/sequencer/sequencer.ts +2 -0
- package/tests/crud.test.ts +2 -1
- package/tests/oauth.test.ts +3 -3
- package/tests/sequencer.test.ts +2 -0
- package/tests/sync/subscribe-repos.test.ts +3 -1
- package/tests/sync/sync.test.ts +2 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EAGZ,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,MAAM,EAMP,MAAM,UAAU,CAAA;AAEjB,cAAc,UAAU,CAAA;8BAEwB,UAAU,gBAAgB;AAA1E,qBAAa,SAAU,SAAQ,cAA4C;IAOhE,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ;IARjB,EAAE,EAAE,WAAW,CAAA;IACf,SAAS,UAAQ;IACjB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IACxC,kBAAkB,SAAI;gBAGb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,SAAI,EACnB,wBAAwB,UAAQ;IAQ5B,KAAK;IAWL,OAAO;IAQP,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU9B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAW5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWvD,eAAe,CAAC,IAAI,EAAE;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YA6BP,MAAM;YAwBN,kBAAkB;IAM1B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhD,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAKZ,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAK9C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlE,kBAAkB,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO;CAUjE;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,EAAE,KAAG,MAAM,EAuC7D,CAAA;AAED,KAAK,MAAM,GAAG,YAAY,CAAA;AAE1B,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAE5D,eAAe,SAAS,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'node:events'\nimport TypedEmitter from 'typed-emitter'\nimport { SECOND, cborDecode, wait } from '@atproto/common'\nimport { AccountStatus } from '../account-manager/helpers/account'\nimport { Crawlers } from '../crawlers'\nimport { seqLogger as log } from '../logger'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport {\n RepoSeqEntry,\n RepoSeqInsert,\n SequencerDb,\n getDb,\n getMigrator,\n} from './db'\nimport {\n AccountEvt,\n CommitEvt,\n IdentityEvt,\n SeqEvt,\n SyncEvt,\n formatSeqAccountEvt,\n formatSeqCommit,\n formatSeqIdentityEvt,\n formatSeqSyncEvt,\n} from './events'\n\nexport * from './events'\n\nexport class Sequencer extends (EventEmitter as new () => SequencerEmitter) {\n db: SequencerDb\n destroyed = false\n pollPromise: Promise<void> | null = null\n triesWithNoResults = 0\n\n constructor(\n public dbLocation: string,\n public crawlers: Crawlers,\n public lastSeen = 0,\n disableWalAutoCheckpoint = false,\n ) {\n super()\n // note: this does not err when surpassed, just prints a warning to stderr\n this.setMaxListeners(100)\n this.db = getDb(dbLocation, disableWalAutoCheckpoint)\n }\n\n async start() {\n await this.db.ensureWal()\n const migrator = getMigrator(this.db)\n await migrator.migrateToLatestOrThrow()\n const curr = await this.curr()\n this.lastSeen = curr ?? 0\n if (this.pollPromise === null) {\n this.pollPromise = this.pollDb()\n }\n }\n\n async destroy() {\n this.destroyed = true\n if (this.pollPromise) {\n await this.pollPromise\n }\n this.emit('close')\n }\n\n async curr(): Promise<number | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'desc')\n .limit(1)\n .executeTakeFirst()\n return got?.seq ?? null\n }\n\n async next(cursor: number): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('seq', '>', cursor)\n .limit(1)\n .orderBy('seq', 'asc')\n .executeTakeFirst()\n return got || null\n }\n\n async earliestAfterTime(time: string): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('sequencedAt', '>=', time)\n .orderBy('sequencedAt', 'asc')\n .limit(1)\n .executeTakeFirst()\n return got || null\n }\n\n async requestSeqRange(opts: {\n earliestSeq?: number\n latestSeq?: number\n earliestTime?: string\n limit?: number\n }): Promise<SeqEvt[]> {\n const { earliestSeq, latestSeq, earliestTime, limit } = opts\n\n let seqQb = this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'asc')\n .where('invalidated', '=', 0)\n if (earliestSeq !== undefined) {\n seqQb = seqQb.where('seq', '>', earliestSeq)\n }\n if (latestSeq !== undefined) {\n seqQb = seqQb.where('seq', '<=', latestSeq)\n }\n if (earliestTime !== undefined) {\n seqQb = seqQb.where('sequencedAt', '>=', earliestTime)\n }\n if (limit !== undefined) {\n seqQb = seqQb.limit(limit)\n }\n\n const rows = await seqQb.execute()\n if (rows.length < 1) {\n return []\n }\n\n return parseRepoSeqRows(rows)\n }\n\n private async pollDb(): Promise<void> {\n if (this.destroyed) return\n // if already polling, do not start another poll\n try {\n const evts = await this.requestSeqRange({\n earliestSeq: this.lastSeen,\n limit: 1000,\n })\n if (evts.length > 0) {\n this.triesWithNoResults = 0\n this.emit('events', evts)\n this.lastSeen = evts.at(-1)?.seq ?? this.lastSeen\n } else {\n await this.exponentialBackoff()\n }\n this.pollPromise = this.pollDb()\n } catch (err) {\n log.error({ err, lastSeen: this.lastSeen }, 'sequencer failed to poll db')\n await this.exponentialBackoff()\n this.pollPromise = this.pollDb()\n }\n }\n\n // when no results, exponential backoff on pulling, with a max of a second wait\n private async exponentialBackoff(): Promise<void> {\n this.triesWithNoResults++\n const waitTime = Math.min(Math.pow(2, this.triesWithNoResults), SECOND)\n await wait(waitTime)\n }\n\n async sequenceEvt(evt: RepoSeqInsert): Promise<number> {\n const [{ seq }] = await this.db.executeWithRetry(\n this.db.db.insertInto('repo_seq').values(evt).returning('seq'),\n )\n this.crawlers.notifyOfUpdate()\n return seq\n }\n\n async sequenceCommit(\n did: string,\n commitData: CommitDataWithOps,\n ): Promise<number> {\n const evt = await formatSeqCommit(did, commitData)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceSyncEvt(did: string, data: SyncEvtData) {\n const evt = await formatSeqSyncEvt(did, data)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceIdentityEvt(did: string, handle?: string): Promise<number> {\n const evt = await formatSeqIdentityEvt(did, handle)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceAccountEvt(\n did: string,\n status: AccountStatus,\n ): Promise<number> {\n const evt = await formatSeqAccountEvt(did, status)\n return await this.sequenceEvt(evt)\n }\n\n async deleteAllForUser(did: string, excludingSeqs: number[] = []) {\n await this.db.executeWithRetry(\n this.db.db\n .deleteFrom('repo_seq')\n .where('did', '=', did)\n .if(excludingSeqs.length > 0, (qb) =>\n qb.where('seq', 'not in', excludingSeqs),\n ),\n )\n }\n}\n\nexport const parseRepoSeqRows = (rows: RepoSeqEntry[]): SeqEvt[] => {\n const seqEvts: SeqEvt[] = []\n for (const row of rows) {\n // should never hit this because of WHERE clause\n if (row.seq === null) {\n continue\n }\n const evt = cborDecode(row.event)\n if (row.eventType === 'append') {\n seqEvts.push({\n type: 'commit',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as CommitEvt,\n })\n } else if (row.eventType === 'sync') {\n seqEvts.push({\n type: 'sync',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as SyncEvt,\n })\n } else if (row.eventType === 'identity') {\n seqEvts.push({\n type: 'identity',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as IdentityEvt,\n })\n } else if (row.eventType === 'account') {\n seqEvts.push({\n type: 'account',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as AccountEvt,\n })\n }\n }\n return seqEvts\n}\n\ntype SeqRow = RepoSeqEntry\n\ntype SequencerEvents = {\n events: (evts: SeqEvt[]) => void\n close: () => void\n}\n\nexport type SequencerEmitter = TypedEmitter<SequencerEvents>\n\nexport default Sequencer\n"]}
|
|
1
|
+
{"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport EventEmitter from 'node:events'\nimport TypedEmitter from 'typed-emitter'\nimport { SECOND, cborDecode, wait } from '@atproto/common'\nimport { AccountStatus } from '../account-manager/helpers/account'\nimport { Crawlers } from '../crawlers'\nimport { seqLogger as log } from '../logger'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport {\n RepoSeqEntry,\n RepoSeqInsert,\n SequencerDb,\n getDb,\n getMigrator,\n} from './db'\nimport {\n AccountEvt,\n CommitEvt,\n IdentityEvt,\n SeqEvt,\n SyncEvt,\n formatSeqAccountEvt,\n formatSeqCommit,\n formatSeqIdentityEvt,\n formatSeqSyncEvt,\n} from './events'\n\nexport * from './events'\n\nexport class Sequencer extends (EventEmitter as new () => SequencerEmitter) {\n db: SequencerDb\n destroyed = false\n pollPromise: Promise<void> | null = null\n triesWithNoResults = 0\n\n constructor(\n public dbLocation: string,\n public crawlers: Crawlers,\n public lastSeen = 0,\n disableWalAutoCheckpoint = false,\n ) {\n super()\n // note: this does not err when surpassed, just prints a warning to stderr\n this.setMaxListeners(100)\n this.db = getDb(dbLocation, disableWalAutoCheckpoint)\n }\n\n async start() {\n await this.db.ensureWal()\n const migrator = getMigrator(this.db)\n await migrator.migrateToLatestOrThrow()\n const curr = await this.curr()\n this.lastSeen = curr ?? 0\n if (this.pollPromise === null) {\n this.pollPromise = this.pollDb()\n }\n }\n\n async destroy() {\n this.destroyed = true\n if (this.pollPromise) {\n await this.pollPromise\n }\n this.emit('close')\n }\n\n async curr(): Promise<number | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'desc')\n .limit(1)\n .executeTakeFirst()\n return got?.seq ?? null\n }\n\n async next(cursor: number): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('seq', '>', cursor)\n .limit(1)\n .orderBy('seq', 'asc')\n .executeTakeFirst()\n return got || null\n }\n\n async earliestAfterTime(time: string): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('sequencedAt', '>=', time)\n .orderBy('sequencedAt', 'asc')\n .limit(1)\n .executeTakeFirst()\n return got || null\n }\n\n async requestSeqRange(opts: {\n earliestSeq?: number\n latestSeq?: number\n earliestTime?: string\n limit?: number\n }): Promise<SeqEvt[]> {\n const { earliestSeq, latestSeq, earliestTime, limit } = opts\n\n let seqQb = this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'asc')\n .where('invalidated', '=', 0)\n if (earliestSeq !== undefined) {\n seqQb = seqQb.where('seq', '>', earliestSeq)\n }\n if (latestSeq !== undefined) {\n seqQb = seqQb.where('seq', '<=', latestSeq)\n }\n if (earliestTime !== undefined) {\n seqQb = seqQb.where('sequencedAt', '>=', earliestTime)\n }\n if (limit !== undefined) {\n seqQb = seqQb.limit(limit)\n }\n\n const rows = await seqQb.execute()\n if (rows.length < 1) {\n return []\n }\n\n return parseRepoSeqRows(rows)\n }\n\n private async pollDb(): Promise<void> {\n if (this.destroyed) return\n // if already polling, do not start another poll\n try {\n const evts = await this.requestSeqRange({\n earliestSeq: this.lastSeen,\n limit: 1000,\n })\n if (evts.length > 0) {\n this.triesWithNoResults = 0\n this.emit('events', evts)\n this.lastSeen = evts.at(-1)?.seq ?? this.lastSeen\n } else {\n await this.exponentialBackoff()\n }\n this.pollPromise = this.pollDb()\n } catch (err) {\n log.error({ err, lastSeen: this.lastSeen }, 'sequencer failed to poll db')\n await this.exponentialBackoff()\n this.pollPromise = this.pollDb()\n }\n }\n\n // when no results, exponential backoff on pulling, with a max of a second wait\n private async exponentialBackoff(): Promise<void> {\n this.triesWithNoResults++\n const waitTime = Math.min(Math.pow(2, this.triesWithNoResults), SECOND)\n await wait(waitTime)\n }\n\n async sequenceEvt(evt: RepoSeqInsert): Promise<number> {\n const [{ seq }] = await this.db.executeWithRetry(\n this.db.db.insertInto('repo_seq').values(evt).returning('seq'),\n )\n this.crawlers.notifyOfUpdate()\n return seq\n }\n\n async sequenceCommit(\n did: string,\n commitData: CommitDataWithOps,\n ): Promise<number> {\n const evt = await formatSeqCommit(did, commitData)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceSyncEvt(did: string, data: SyncEvtData) {\n const evt = await formatSeqSyncEvt(did, data)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceIdentityEvt(did: string, handle?: string): Promise<number> {\n const evt = await formatSeqIdentityEvt(did, handle)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceAccountEvt(\n did: string,\n status: AccountStatus,\n ): Promise<number> {\n const evt = await formatSeqAccountEvt(did, status)\n return await this.sequenceEvt(evt)\n }\n\n async deleteAllForUser(did: string, excludingSeqs: number[] = []) {\n await this.db.executeWithRetry(\n this.db.db\n .deleteFrom('repo_seq')\n .where('did', '=', did)\n .if(excludingSeqs.length > 0, (qb) =>\n qb.where('seq', 'not in', excludingSeqs),\n ),\n )\n }\n}\n\nexport const parseRepoSeqRows = (rows: RepoSeqEntry[]): SeqEvt[] => {\n const seqEvts: SeqEvt[] = []\n for (const row of rows) {\n // should never hit this because of WHERE clause\n if (row.seq === null) {\n continue\n }\n const evt = cborDecode(row.event)\n if (row.eventType === 'append') {\n seqEvts.push({\n type: 'commit',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as CommitEvt,\n })\n } else if (row.eventType === 'sync') {\n seqEvts.push({\n type: 'sync',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as SyncEvt,\n })\n } else if (row.eventType === 'identity') {\n seqEvts.push({\n type: 'identity',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as IdentityEvt,\n })\n } else if (row.eventType === 'account') {\n seqEvts.push({\n type: 'account',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as AccountEvt,\n })\n }\n }\n return seqEvts\n}\n\ntype SeqRow = RepoSeqEntry\n\ntype SequencerEvents = {\n events: (evts: SeqEvt[]) => void\n close: () => void\n}\n\nexport type SequencerEmitter = TypedEmitter<SequencerEvents>\n\nexport default Sequencer\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/pds",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.195",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Reference implementation of atproto Personal Data Server (PDS)",
|
|
6
6
|
"keywords": [
|
|
@@ -51,20 +51,22 @@
|
|
|
51
51
|
"@atproto-labs/simple-store": "0.3.0",
|
|
52
52
|
"@atproto-labs/simple-store-memory": "0.1.4",
|
|
53
53
|
"@atproto-labs/simple-store-redis": "0.0.1",
|
|
54
|
-
"@atproto-labs/xrpc-utils": "0.0.
|
|
55
|
-
"@atproto/
|
|
56
|
-
"@atproto/
|
|
57
|
-
"@atproto/common": "^0.
|
|
54
|
+
"@atproto-labs/xrpc-utils": "0.0.24",
|
|
55
|
+
"@atproto/api": "^0.18.2",
|
|
56
|
+
"@atproto/aws": "^0.2.31",
|
|
57
|
+
"@atproto/common": "^0.5.0",
|
|
58
58
|
"@atproto/crypto": "^0.4.4",
|
|
59
|
-
"@atproto/identity": "^0.4.
|
|
60
|
-
"@atproto/
|
|
61
|
-
"@atproto/
|
|
62
|
-
"@atproto/
|
|
63
|
-
"@atproto/
|
|
64
|
-
"@atproto/
|
|
59
|
+
"@atproto/identity": "^0.4.10",
|
|
60
|
+
"@atproto/lex-cbor": "^0.0.0",
|
|
61
|
+
"@atproto/lex-data": "^0.0.0",
|
|
62
|
+
"@atproto/lexicon": "^0.5.2",
|
|
63
|
+
"@atproto/lexicon-resolver": "^0.2.4",
|
|
64
|
+
"@atproto/oauth-provider": "^0.13.5",
|
|
65
|
+
"@atproto/oauth-scopes": "^0.2.2",
|
|
66
|
+
"@atproto/repo": "^0.8.11",
|
|
65
67
|
"@atproto/syntax": "^0.4.1",
|
|
66
|
-
"@atproto/xrpc": "^0.7.
|
|
67
|
-
"@atproto/xrpc-server": "^0.
|
|
68
|
+
"@atproto/xrpc": "^0.7.6",
|
|
69
|
+
"@atproto/xrpc-server": "^0.10.0"
|
|
68
70
|
},
|
|
69
71
|
"devDependencies": {
|
|
70
72
|
"@atproto/pds-entryway": "npm:@atproto/pds@0.3.0-entryway.3",
|
|
@@ -82,9 +84,9 @@
|
|
|
82
84
|
"ts-node": "^10.8.2",
|
|
83
85
|
"typescript": "^5.6.3",
|
|
84
86
|
"ws": "^8.12.0",
|
|
85
|
-
"@atproto/api": "^0.18.
|
|
86
|
-
"@atproto/bsky": "^0.0.
|
|
87
|
-
"@atproto/lex-cli": "^0.9.
|
|
87
|
+
"@atproto/api": "^0.18.2",
|
|
88
|
+
"@atproto/bsky": "^0.0.198",
|
|
89
|
+
"@atproto/lex-cli": "^0.9.7",
|
|
88
90
|
"@atproto/oauth-client-browser-example": "0.0.8"
|
|
89
91
|
},
|
|
90
92
|
"scripts": {
|
package/src/lexicon/index.ts
CHANGED
|
@@ -17,6 +17,9 @@ import * as AppBskyActorGetSuggestions from './types/app/bsky/actor/getSuggestio
|
|
|
17
17
|
import * as AppBskyActorPutPreferences from './types/app/bsky/actor/putPreferences.js'
|
|
18
18
|
import * as AppBskyActorSearchActors from './types/app/bsky/actor/searchActors.js'
|
|
19
19
|
import * as AppBskyActorSearchActorsTypeahead from './types/app/bsky/actor/searchActorsTypeahead.js'
|
|
20
|
+
import * as AppBskyAgeassuranceBegin from './types/app/bsky/ageassurance/begin.js'
|
|
21
|
+
import * as AppBskyAgeassuranceGetConfig from './types/app/bsky/ageassurance/getConfig.js'
|
|
22
|
+
import * as AppBskyAgeassuranceGetState from './types/app/bsky/ageassurance/getState.js'
|
|
20
23
|
import * as AppBskyBookmarkCreateBookmark from './types/app/bsky/bookmark/createBookmark.js'
|
|
21
24
|
import * as AppBskyBookmarkDeleteBookmark from './types/app/bsky/bookmark/deleteBookmark.js'
|
|
22
25
|
import * as AppBskyBookmarkGetBookmarks from './types/app/bsky/bookmark/getBookmarks.js'
|
|
@@ -392,6 +395,7 @@ export class AppNS {
|
|
|
392
395
|
export class AppBskyNS {
|
|
393
396
|
_server: Server
|
|
394
397
|
actor: AppBskyActorNS
|
|
398
|
+
ageassurance: AppBskyAgeassuranceNS
|
|
395
399
|
bookmark: AppBskyBookmarkNS
|
|
396
400
|
embed: AppBskyEmbedNS
|
|
397
401
|
feed: AppBskyFeedNS
|
|
@@ -405,6 +409,7 @@ export class AppBskyNS {
|
|
|
405
409
|
constructor(server: Server) {
|
|
406
410
|
this._server = server
|
|
407
411
|
this.actor = new AppBskyActorNS(server)
|
|
412
|
+
this.ageassurance = new AppBskyAgeassuranceNS(server)
|
|
408
413
|
this.bookmark = new AppBskyBookmarkNS(server)
|
|
409
414
|
this.embed = new AppBskyEmbedNS(server)
|
|
410
415
|
this.feed = new AppBskyFeedNS(server)
|
|
@@ -509,6 +514,50 @@ export class AppBskyActorNS {
|
|
|
509
514
|
}
|
|
510
515
|
}
|
|
511
516
|
|
|
517
|
+
export class AppBskyAgeassuranceNS {
|
|
518
|
+
_server: Server
|
|
519
|
+
|
|
520
|
+
constructor(server: Server) {
|
|
521
|
+
this._server = server
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
begin<A extends Auth = void>(
|
|
525
|
+
cfg: MethodConfigOrHandler<
|
|
526
|
+
A,
|
|
527
|
+
AppBskyAgeassuranceBegin.QueryParams,
|
|
528
|
+
AppBskyAgeassuranceBegin.HandlerInput,
|
|
529
|
+
AppBskyAgeassuranceBegin.HandlerOutput
|
|
530
|
+
>,
|
|
531
|
+
) {
|
|
532
|
+
const nsid = 'app.bsky.ageassurance.begin' // @ts-ignore
|
|
533
|
+
return this._server.xrpc.method(nsid, cfg)
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
getConfig<A extends Auth = void>(
|
|
537
|
+
cfg: MethodConfigOrHandler<
|
|
538
|
+
A,
|
|
539
|
+
AppBskyAgeassuranceGetConfig.QueryParams,
|
|
540
|
+
AppBskyAgeassuranceGetConfig.HandlerInput,
|
|
541
|
+
AppBskyAgeassuranceGetConfig.HandlerOutput
|
|
542
|
+
>,
|
|
543
|
+
) {
|
|
544
|
+
const nsid = 'app.bsky.ageassurance.getConfig' // @ts-ignore
|
|
545
|
+
return this._server.xrpc.method(nsid, cfg)
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
getState<A extends Auth = void>(
|
|
549
|
+
cfg: MethodConfigOrHandler<
|
|
550
|
+
A,
|
|
551
|
+
AppBskyAgeassuranceGetState.QueryParams,
|
|
552
|
+
AppBskyAgeassuranceGetState.HandlerInput,
|
|
553
|
+
AppBskyAgeassuranceGetState.HandlerOutput
|
|
554
|
+
>,
|
|
555
|
+
) {
|
|
556
|
+
const nsid = 'app.bsky.ageassurance.getState' // @ts-ignore
|
|
557
|
+
return this._server.xrpc.method(nsid, cfg)
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
512
561
|
export class AppBskyBookmarkNS {
|
|
513
562
|
_server: Server
|
|
514
563
|
|