@atproto/pds 0.4.117 → 0.4.119

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.
Files changed (137) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/account-manager/account-manager.d.ts +5 -2
  3. package/dist/account-manager/account-manager.d.ts.map +1 -1
  4. package/dist/account-manager/account-manager.js.map +1 -1
  5. package/dist/actor-store/blob/transactor.d.ts +2 -1
  6. package/dist/actor-store/blob/transactor.d.ts.map +1 -1
  7. package/dist/actor-store/blob/transactor.js +19 -5
  8. package/dist/actor-store/blob/transactor.js.map +1 -1
  9. package/dist/api/com/atproto/repo/uploadBlob.d.ts.map +1 -1
  10. package/dist/api/com/atproto/repo/uploadBlob.js +1 -0
  11. package/dist/api/com/atproto/repo/uploadBlob.js.map +1 -1
  12. package/dist/config/env.d.ts +1 -0
  13. package/dist/config/env.d.ts.map +1 -1
  14. package/dist/config/env.js +1 -0
  15. package/dist/config/env.js.map +1 -1
  16. package/dist/config/secrets.d.ts +1 -0
  17. package/dist/config/secrets.d.ts.map +1 -1
  18. package/dist/config/secrets.js +1 -0
  19. package/dist/config/secrets.js.map +1 -1
  20. package/dist/context.d.ts +3 -0
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +19 -0
  23. package/dist/context.js.map +1 -1
  24. package/dist/lexicon/index.d.ts +10 -0
  25. package/dist/lexicon/index.d.ts.map +1 -1
  26. package/dist/lexicon/index.js +20 -0
  27. package/dist/lexicon/index.js.map +1 -1
  28. package/dist/lexicon/lexicons.d.ts +516 -0
  29. package/dist/lexicon/lexicons.d.ts.map +1 -1
  30. package/dist/lexicon/lexicons.js +277 -0
  31. package/dist/lexicon/lexicons.js.map +1 -1
  32. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts +27 -0
  33. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts.map +1 -1
  34. package/dist/lexicon/types/app/bsky/unspecced/defs.js +18 -0
  35. package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
  36. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.d.ts +36 -0
  37. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -0
  38. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js +7 -0
  39. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -0
  40. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.d.ts +37 -0
  41. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.d.ts.map +1 -0
  42. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js +7 -0
  43. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -0
  44. package/dist/lexicon/types/app/bsky/unspecced/getTrends.d.ts +36 -0
  45. package/dist/lexicon/types/app/bsky/unspecced/getTrends.d.ts.map +1 -0
  46. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js +7 -0
  47. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -0
  48. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.d.ts +38 -0
  49. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.d.ts.map +1 -0
  50. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js +7 -0
  51. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -0
  52. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.d.ts +31 -0
  53. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.d.ts.map +1 -0
  54. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js +7 -0
  55. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -0
  56. package/dist/repo/prepare.d.ts.map +1 -1
  57. package/dist/repo/prepare.js +1 -0
  58. package/dist/repo/prepare.js.map +1 -1
  59. package/dist/repo/types.d.ts +1 -0
  60. package/dist/repo/types.d.ts.map +1 -1
  61. package/dist/repo/types.js.map +1 -1
  62. package/dist/scripts/index.d.ts +8 -1
  63. package/dist/scripts/index.d.ts.map +1 -1
  64. package/dist/scripts/index.js +11 -0
  65. package/dist/scripts/index.js.map +1 -1
  66. package/dist/scripts/publish-identity.d.ts +8 -0
  67. package/dist/scripts/publish-identity.d.ts.map +1 -0
  68. package/dist/scripts/publish-identity.js +46 -0
  69. package/dist/scripts/publish-identity.js.map +1 -0
  70. package/dist/scripts/rebuild-repo.d.ts +10 -2
  71. package/dist/scripts/rebuild-repo.d.ts.map +1 -1
  72. package/dist/scripts/rebuild-repo.js +21 -12
  73. package/dist/scripts/rebuild-repo.js.map +1 -1
  74. package/dist/scripts/rotate-keys.d.ts +18 -0
  75. package/dist/scripts/rotate-keys.d.ts.map +1 -0
  76. package/dist/scripts/rotate-keys.js +115 -0
  77. package/dist/scripts/rotate-keys.js.map +1 -0
  78. package/dist/scripts/sequencer-recovery/index.d.ts +3 -0
  79. package/dist/scripts/sequencer-recovery/index.d.ts.map +1 -0
  80. package/dist/scripts/sequencer-recovery/index.js +17 -0
  81. package/dist/scripts/sequencer-recovery/index.js.map +1 -0
  82. package/dist/scripts/sequencer-recovery/recoverer.d.ts +27 -0
  83. package/dist/scripts/sequencer-recovery/recoverer.d.ts.map +1 -0
  84. package/dist/scripts/sequencer-recovery/recoverer.js +235 -0
  85. package/dist/scripts/sequencer-recovery/recoverer.js.map +1 -0
  86. package/dist/scripts/sequencer-recovery/recovery-db.d.ts +18 -0
  87. package/dist/scripts/sequencer-recovery/recovery-db.d.ts.map +1 -0
  88. package/dist/scripts/sequencer-recovery/recovery-db.js +45 -0
  89. package/dist/scripts/sequencer-recovery/recovery-db.js.map +1 -0
  90. package/dist/scripts/sequencer-recovery/repair-repos.d.ts +3 -0
  91. package/dist/scripts/sequencer-recovery/repair-repos.d.ts.map +1 -0
  92. package/dist/scripts/sequencer-recovery/repair-repos.js +45 -0
  93. package/dist/scripts/sequencer-recovery/repair-repos.js.map +1 -0
  94. package/dist/scripts/sequencer-recovery/user-queues.d.ts +12 -0
  95. package/dist/scripts/sequencer-recovery/user-queues.d.ts.map +1 -0
  96. package/dist/scripts/sequencer-recovery/user-queues.js +54 -0
  97. package/dist/scripts/sequencer-recovery/user-queues.js.map +1 -0
  98. package/dist/scripts/util.d.ts +2 -0
  99. package/dist/scripts/util.d.ts.map +1 -0
  100. package/dist/scripts/util.js +12 -0
  101. package/dist/scripts/util.js.map +1 -0
  102. package/dist/sequencer/sequencer.d.ts +2 -0
  103. package/dist/sequencer/sequencer.d.ts.map +1 -1
  104. package/dist/sequencer/sequencer.js +52 -42
  105. package/dist/sequencer/sequencer.js.map +1 -1
  106. package/package.json +11 -11
  107. package/src/account-manager/account-manager.ts +6 -2
  108. package/src/actor-store/blob/transactor.ts +25 -7
  109. package/src/api/com/atproto/repo/uploadBlob.ts +1 -0
  110. package/src/config/env.ts +2 -0
  111. package/src/config/secrets.ts +2 -0
  112. package/src/context.ts +23 -0
  113. package/src/lexicon/index.ts +62 -0
  114. package/src/lexicon/lexicons.ts +285 -0
  115. package/src/lexicon/types/app/bsky/unspecced/defs.ts +45 -0
  116. package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts +54 -0
  117. package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts +55 -0
  118. package/src/lexicon/types/app/bsky/unspecced/getTrends.ts +54 -0
  119. package/src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts +56 -0
  120. package/src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts +48 -0
  121. package/src/repo/prepare.ts +1 -0
  122. package/src/repo/types.ts +1 -0
  123. package/src/scripts/README.md +40 -0
  124. package/src/scripts/index.ts +15 -0
  125. package/src/scripts/publish-identity.ts +54 -0
  126. package/src/scripts/rebuild-repo.ts +39 -12
  127. package/src/scripts/rotate-keys.ts +141 -0
  128. package/src/scripts/sequencer-recovery/index.ts +23 -0
  129. package/src/scripts/sequencer-recovery/recoverer.ts +289 -0
  130. package/src/scripts/sequencer-recovery/recovery-db.ts +64 -0
  131. package/src/scripts/sequencer-recovery/repair-repos.ts +48 -0
  132. package/src/scripts/sequencer-recovery/user-queues.ts +41 -0
  133. package/src/scripts/util.ts +7 -0
  134. package/src/sequencer/sequencer.ts +43 -40
  135. package/tests/recovery.test.ts +178 -0
  136. package/tsconfig.build.tsbuildinfo +1 -1
  137. package/tsconfig.tests.tsbuildinfo +1 -1
@@ -0,0 +1,178 @@
1
+ import fs from 'node:fs/promises'
2
+ import * as ui8 from 'uint8arrays'
3
+ import AtpAgent from '@atproto/api'
4
+ import { renameIfExists, rmIfExists } from '@atproto/common'
5
+ import { SeedClient, TestNetworkNoAppView, basicSeed } from '@atproto/dev-env'
6
+ import { verifyRepoCar } from '@atproto/repo'
7
+ import { AppContext, scripts } from '../dist'
8
+
9
+ describe('recovery', () => {
10
+ let network: TestNetworkNoAppView
11
+ let ctx: AppContext
12
+ let sc: SeedClient
13
+ let agent: AtpAgent
14
+ let alice: string
15
+ let bob: string
16
+ let elli: string
17
+
18
+ beforeAll(async () => {
19
+ network = await TestNetworkNoAppView.create({
20
+ dbPostgresSchema: 'recovery',
21
+ })
22
+ ctx = network.pds.ctx
23
+ sc = network.getSeedClient()
24
+ agent = network.pds.getClient()
25
+ await basicSeed(sc)
26
+ alice = sc.dids.alice
27
+ bob = sc.dids.bob
28
+ await network.processAll()
29
+ })
30
+
31
+ afterAll(async () => {
32
+ await network.close()
33
+ })
34
+
35
+ const getStats = (did: string) => {
36
+ return ctx.actorStore.read(did, async (store) => {
37
+ const recordCount = await store.record.recordCount()
38
+ const root = await store.repo.storage.getRootDetailed()
39
+ return {
40
+ recordCount,
41
+ rev: root.rev,
42
+ commit: root.cid,
43
+ }
44
+ })
45
+ }
46
+
47
+ const getRev = (did: string) => {
48
+ return ctx.actorStore.read(did, async (store) => {
49
+ const root = await store.repo.storage.getRootDetailed()
50
+ return root.rev
51
+ })
52
+ }
53
+
54
+ const getCar = async (did: string, since?: string) => {
55
+ const res = await agent.api.com.atproto.sync.getRepo({
56
+ did,
57
+ since,
58
+ })
59
+ return res.data
60
+ }
61
+
62
+ const backup = async (dids: string[]) => {
63
+ for (const did of dids) {
64
+ const { dbLocation, keyLocation } = await ctx.actorStore.getLocation(did)
65
+ await fs.copyFile(dbLocation, `${dbLocation}-backup`)
66
+ await fs.copyFile(keyLocation, `${keyLocation}-backup`)
67
+ }
68
+ }
69
+
70
+ const restore = async (dids: string[]) => {
71
+ for (const did of dids) {
72
+ const { dbLocation, keyLocation } = await ctx.actorStore.getLocation(did)
73
+ await rmIfExists(dbLocation)
74
+ await rmIfExists(keyLocation)
75
+ await renameIfExists(`${dbLocation}-backup`, dbLocation)
76
+ await renameIfExists(`${keyLocation}-backup`, keyLocation)
77
+ }
78
+ }
79
+
80
+ it('recovers repos based on the sequencer ', async () => {
81
+ // backup alice & bob
82
+ await backup([alice, bob])
83
+
84
+ // grab rev times from intermediate repo states
85
+ // process a bunch of record creates, updates, and delets for alice
86
+ const startRev = await getRev(alice)
87
+ let middleRev = ''
88
+ for (let i = 0; i < 100; i++) {
89
+ if (i === 0) {
90
+ middleRev = await getRev(alice)
91
+ }
92
+ const ref = await sc.post(alice, `post-${i}`)
93
+ if (i % 20 === 0) {
94
+ await sc.updateProfile(alice, { displayName: `name-${i}` })
95
+ }
96
+ if (i % 10 === 0) {
97
+ await sc.deletePost(alice, ref.ref.uri)
98
+ } else {
99
+ await sc.like(alice, ref.ref)
100
+ }
101
+ }
102
+
103
+ // delete bob's account
104
+ const deleteToken = await ctx.accountManager.createEmailToken(
105
+ bob,
106
+ 'delete_account',
107
+ )
108
+ await agent.com.atproto.server.deleteAccount({
109
+ token: deleteToken,
110
+ did: bob,
111
+ password: sc.accounts[bob].password,
112
+ })
113
+
114
+ // create a new account (elli)
115
+ await sc.createAccount('elli', {
116
+ handle: 'elli.test',
117
+ password: 'elli-pass',
118
+ email: 'elli@test.com',
119
+ })
120
+ elli = sc.dids.elli
121
+ for (let i = 0; i < 10; i++) {
122
+ await sc.post(elli, `post-${i}`)
123
+ }
124
+ // get some stats & snapshots from before we do a recovery
125
+ const endRev = await getRev(alice)
126
+ const startCarBefore = await getCar(alice, startRev)
127
+ const middleCarBefore = await getCar(alice, middleRev)
128
+ const endCarBefore = await getCar(alice, endRev)
129
+ const aliceStatsBefore = await getStats(alice)
130
+ const elliCarBefore = await getCar(elli)
131
+ const elliStatsBefore = await getStats(elli)
132
+
133
+ // "restore" all 3 accounts to their backedup state, effectively rolling back the previous mutations
134
+ // deleting alice's mutations, restoring bob's account, and deleting elli's account
135
+ await restore([alice, bob, elli])
136
+
137
+ // run recovery operation
138
+ await scripts['sequencer-recovery'](network.pds.ctx, ['0', '10', 'true'])
139
+
140
+ // ensure alice's CAR is exactly the same as before the loss, including intermediate states based on tracked revs
141
+ const startCarAfter = await getCar(alice, startRev)
142
+ const middleCarAfter = await getCar(alice, middleRev)
143
+ const endCarAfter = await getCar(alice, endRev)
144
+ const aliceStatsAfter = await getStats(alice)
145
+ expect(ui8.equals(startCarAfter, startCarBefore)).toBe(true)
146
+ expect(ui8.equals(middleCarAfter, middleCarBefore)).toBe(true)
147
+ expect(ui8.equals(endCarAfter, endCarBefore)).toBe(true)
148
+ expect(aliceStatsAfter).toMatchObject(aliceStatsBefore)
149
+
150
+ // ensure bob's account is re-deleted
151
+ const attempt = getCar(bob)
152
+ await expect(attempt).rejects.toThrow(/Could not find repo for DID/)
153
+ const bobExists = await ctx.actorStore.exists(bob)
154
+ expect(bobExists).toBe(false)
155
+
156
+ // ensure elli's CAR is exactly the same as before the loss
157
+ // this involves creating a new signing key for her and updating her DID document
158
+ const elliCarAfter = await getCar(elli)
159
+ const elliStatsAfter = await getStats(elli)
160
+ expect(ui8.equals(elliCarAfter, elliCarBefore)).toBe(true)
161
+ expect(elliStatsAfter).toMatchObject(elliStatsBefore)
162
+ // it creates a new keypair for elli
163
+ const elliKey = await ctx.actorStore.keypair(elli)
164
+ expect(elliKey.did()).toBeDefined()
165
+ })
166
+
167
+ it('rotates keys for users', async () => {
168
+ await scripts['rotate-keys'](network.pds.ctx, [elli])
169
+ const elliKey = await ctx.actorStore.keypair(elli)
170
+
171
+ const plcData = await ctx.plcClient.getDocumentData(elli)
172
+ expect(plcData.verificationMethods['atproto']).toEqual(elliKey.did())
173
+
174
+ // it correctly resigned elli's repo
175
+ const elliCar = await getCar(elli)
176
+ await verifyRepoCar(elliCar, elli, elliKey.did())
177
+ })
178
+ })
@@ -1 +1 @@
1
- {"root":["./src/app-view.ts","./src/auth-routes.ts","./src/auth-verifier.ts","./src/background.ts","./src/basic-routes.ts","./src/bsky-app-view.ts","./src/context.ts","./src/crawlers.ts","./src/disk-blobstore.ts","./src/error.ts","./src/index.ts","./src/logger.ts","./src/pipethrough.ts","./src/redis.ts","./src/well-known.ts","./src/account-manager/account-manager.ts","./src/account-manager/oauth-store.ts","./src/account-manager/db/index.ts","./src/account-manager/db/migrations/001-init.ts","./src/account-manager/db/migrations/002-account-deactivation.ts","./src/account-manager/db/migrations/003-privileged-app-passwords.ts","./src/account-manager/db/migrations/004-oauth.ts","./src/account-manager/db/migrations/index.ts","./src/account-manager/db/schema/account.ts","./src/account-manager/db/schema/actor.ts","./src/account-manager/db/schema/app-password.ts","./src/account-manager/db/schema/authorization-request.ts","./src/account-manager/db/schema/device-account.ts","./src/account-manager/db/schema/device.ts","./src/account-manager/db/schema/email-token.ts","./src/account-manager/db/schema/index.ts","./src/account-manager/db/schema/invite-code.ts","./src/account-manager/db/schema/refresh-token.ts","./src/account-manager/db/schema/repo-root.ts","./src/account-manager/db/schema/token.ts","./src/account-manager/db/schema/used-refresh-token.ts","./src/account-manager/helpers/account.ts","./src/account-manager/helpers/auth.ts","./src/account-manager/helpers/authorization-request.ts","./src/account-manager/helpers/device-account.ts","./src/account-manager/helpers/device.ts","./src/account-manager/helpers/email-token.ts","./src/account-manager/helpers/invite.ts","./src/account-manager/helpers/password.ts","./src/account-manager/helpers/repo.ts","./src/account-manager/helpers/scrypt.ts","./src/account-manager/helpers/token.ts","./src/account-manager/helpers/used-refresh-token.ts","./src/actor-store/actor-store-reader.ts","./src/actor-store/actor-store-resources.ts","./src/actor-store/actor-store-transactor.ts","./src/actor-store/actor-store-writer.ts","./src/actor-store/actor-store.ts","./src/actor-store/migrate.ts","./src/actor-store/blob/reader.ts","./src/actor-store/blob/transactor.ts","./src/actor-store/db/index.ts","./src/actor-store/db/migrations/001-init.ts","./src/actor-store/db/migrations/index.ts","./src/actor-store/db/schema/account-pref.ts","./src/actor-store/db/schema/backlink.ts","./src/actor-store/db/schema/blob.ts","./src/actor-store/db/schema/index.ts","./src/actor-store/db/schema/record-blob.ts","./src/actor-store/db/schema/record.ts","./src/actor-store/db/schema/repo-block.ts","./src/actor-store/db/schema/repo-root.ts","./src/actor-store/preference/reader.ts","./src/actor-store/preference/transactor.ts","./src/actor-store/preference/util.ts","./src/actor-store/record/reader.ts","./src/actor-store/record/transactor.ts","./src/actor-store/repo/reader.ts","./src/actor-store/repo/sql-repo-reader.ts","./src/actor-store/repo/sql-repo-transactor.ts","./src/actor-store/repo/transactor.ts","./src/api/index.ts","./src/api/proxy.ts","./src/api/app/bsky/index.ts","./src/api/app/bsky/actor/getPreferences.ts","./src/api/app/bsky/actor/getProfile.ts","./src/api/app/bsky/actor/getProfiles.ts","./src/api/app/bsky/actor/index.ts","./src/api/app/bsky/actor/putPreferences.ts","./src/api/app/bsky/feed/getActorLikes.ts","./src/api/app/bsky/feed/getAuthorFeed.ts","./src/api/app/bsky/feed/getFeed.ts","./src/api/app/bsky/feed/getPostThread.ts","./src/api/app/bsky/feed/getTimeline.ts","./src/api/app/bsky/feed/index.ts","./src/api/app/bsky/notification/index.ts","./src/api/app/bsky/notification/registerPush.ts","./src/api/app/bsky/util/resolver.ts","./src/api/com/atproto/index.ts","./src/api/com/atproto/admin/deleteAccount.ts","./src/api/com/atproto/admin/disableAccountInvites.ts","./src/api/com/atproto/admin/disableInviteCodes.ts","./src/api/com/atproto/admin/enableAccountInvites.ts","./src/api/com/atproto/admin/getAccountInfo.ts","./src/api/com/atproto/admin/getAccountInfos.ts","./src/api/com/atproto/admin/getInviteCodes.ts","./src/api/com/atproto/admin/getSubjectStatus.ts","./src/api/com/atproto/admin/index.ts","./src/api/com/atproto/admin/sendEmail.ts","./src/api/com/atproto/admin/updateAccountEmail.ts","./src/api/com/atproto/admin/updateAccountHandle.ts","./src/api/com/atproto/admin/updateAccountPassword.ts","./src/api/com/atproto/admin/updateSubjectStatus.ts","./src/api/com/atproto/admin/util.ts","./src/api/com/atproto/identity/getRecommendedDidCredentials.ts","./src/api/com/atproto/identity/index.ts","./src/api/com/atproto/identity/requestPlcOperationSignature.ts","./src/api/com/atproto/identity/resolveHandle.ts","./src/api/com/atproto/identity/signPlcOperation.ts","./src/api/com/atproto/identity/submitPlcOperation.ts","./src/api/com/atproto/identity/updateHandle.ts","./src/api/com/atproto/moderation/createReport.ts","./src/api/com/atproto/moderation/index.ts","./src/api/com/atproto/repo/applyWrites.ts","./src/api/com/atproto/repo/createRecord.ts","./src/api/com/atproto/repo/deleteRecord.ts","./src/api/com/atproto/repo/describeRepo.ts","./src/api/com/atproto/repo/getRecord.ts","./src/api/com/atproto/repo/importRepo.ts","./src/api/com/atproto/repo/index.ts","./src/api/com/atproto/repo/listMissingBlobs.ts","./src/api/com/atproto/repo/listRecords.ts","./src/api/com/atproto/repo/putRecord.ts","./src/api/com/atproto/repo/uploadBlob.ts","./src/api/com/atproto/server/activateAccount.ts","./src/api/com/atproto/server/checkAccountStatus.ts","./src/api/com/atproto/server/confirmEmail.ts","./src/api/com/atproto/server/createAccount.ts","./src/api/com/atproto/server/createAppPassword.ts","./src/api/com/atproto/server/createInviteCode.ts","./src/api/com/atproto/server/createInviteCodes.ts","./src/api/com/atproto/server/createSession.ts","./src/api/com/atproto/server/deactivateAccount.ts","./src/api/com/atproto/server/deleteAccount.ts","./src/api/com/atproto/server/deleteSession.ts","./src/api/com/atproto/server/describeServer.ts","./src/api/com/atproto/server/getAccountInviteCodes.ts","./src/api/com/atproto/server/getServiceAuth.ts","./src/api/com/atproto/server/getSession.ts","./src/api/com/atproto/server/index.ts","./src/api/com/atproto/server/listAppPasswords.ts","./src/api/com/atproto/server/refreshSession.ts","./src/api/com/atproto/server/requestAccountDelete.ts","./src/api/com/atproto/server/requestEmailConfirmation.ts","./src/api/com/atproto/server/requestEmailUpdate.ts","./src/api/com/atproto/server/requestPasswordReset.ts","./src/api/com/atproto/server/reserveSigningKey.ts","./src/api/com/atproto/server/resetPassword.ts","./src/api/com/atproto/server/revokeAppPassword.ts","./src/api/com/atproto/server/updateEmail.ts","./src/api/com/atproto/server/util.ts","./src/api/com/atproto/sync/getBlob.ts","./src/api/com/atproto/sync/getBlocks.ts","./src/api/com/atproto/sync/getLatestCommit.ts","./src/api/com/atproto/sync/getRecord.ts","./src/api/com/atproto/sync/getRepo.ts","./src/api/com/atproto/sync/getRepoStatus.ts","./src/api/com/atproto/sync/index.ts","./src/api/com/atproto/sync/listBlobs.ts","./src/api/com/atproto/sync/listRepos.ts","./src/api/com/atproto/sync/subscribeRepos.ts","./src/api/com/atproto/sync/util.ts","./src/api/com/atproto/sync/deprecated/getCheckout.ts","./src/api/com/atproto/sync/deprecated/getHead.ts","./src/api/com/atproto/temp/checkSignupQueue.ts","./src/api/com/atproto/temp/index.ts","./src/config/config.ts","./src/config/env.ts","./src/config/index.ts","./src/config/secrets.ts","./src/db/cast.ts","./src/db/db.ts","./src/db/index.ts","./src/db/migrator.ts","./src/db/pagination.ts","./src/db/util.ts","./src/db/tables/moderation.ts","./src/did-cache/index.ts","./src/did-cache/db/index.ts","./src/did-cache/db/migrations.ts","./src/did-cache/db/schema.ts","./src/handle/explicit-slurs.ts","./src/handle/index.ts","./src/handle/reserved.ts","./src/image/image-url-builder.ts","./src/image/image-url.ts","./src/image/index.ts","./src/lexicon/index.ts","./src/lexicon/lexicons.ts","./src/lexicon/util.ts","./src/lexicon/types/app/bsky/actor/defs.ts","./src/lexicon/types/app/bsky/actor/getPreferences.ts","./src/lexicon/types/app/bsky/actor/getProfile.ts","./src/lexicon/types/app/bsky/actor/getProfiles.ts","./src/lexicon/types/app/bsky/actor/getSuggestions.ts","./src/lexicon/types/app/bsky/actor/profile.ts","./src/lexicon/types/app/bsky/actor/putPreferences.ts","./src/lexicon/types/app/bsky/actor/searchActors.ts","./src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts","./src/lexicon/types/app/bsky/embed/defs.ts","./src/lexicon/types/app/bsky/embed/external.ts","./src/lexicon/types/app/bsky/embed/images.ts","./src/lexicon/types/app/bsky/embed/record.ts","./src/lexicon/types/app/bsky/embed/recordWithMedia.ts","./src/lexicon/types/app/bsky/embed/video.ts","./src/lexicon/types/app/bsky/feed/defs.ts","./src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/generator.ts","./src/lexicon/types/app/bsky/feed/getActorFeeds.ts","./src/lexicon/types/app/bsky/feed/getActorLikes.ts","./src/lexicon/types/app/bsky/feed/getAuthorFeed.ts","./src/lexicon/types/app/bsky/feed/getFeed.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerators.ts","./src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts","./src/lexicon/types/app/bsky/feed/getLikes.ts","./src/lexicon/types/app/bsky/feed/getListFeed.ts","./src/lexicon/types/app/bsky/feed/getPostThread.ts","./src/lexicon/types/app/bsky/feed/getPosts.ts","./src/lexicon/types/app/bsky/feed/getQuotes.ts","./src/lexicon/types/app/bsky/feed/getRepostedBy.ts","./src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/feed/getTimeline.ts","./src/lexicon/types/app/bsky/feed/like.ts","./src/lexicon/types/app/bsky/feed/post.ts","./src/lexicon/types/app/bsky/feed/postgate.ts","./src/lexicon/types/app/bsky/feed/repost.ts","./src/lexicon/types/app/bsky/feed/searchPosts.ts","./src/lexicon/types/app/bsky/feed/sendInteractions.ts","./src/lexicon/types/app/bsky/feed/threadgate.ts","./src/lexicon/types/app/bsky/graph/block.ts","./src/lexicon/types/app/bsky/graph/defs.ts","./src/lexicon/types/app/bsky/graph/follow.ts","./src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getBlocks.ts","./src/lexicon/types/app/bsky/graph/getFollowers.ts","./src/lexicon/types/app/bsky/graph/getFollows.ts","./src/lexicon/types/app/bsky/graph/getKnownFollowers.ts","./src/lexicon/types/app/bsky/graph/getList.ts","./src/lexicon/types/app/bsky/graph/getListBlocks.ts","./src/lexicon/types/app/bsky/graph/getListMutes.ts","./src/lexicon/types/app/bsky/graph/getLists.ts","./src/lexicon/types/app/bsky/graph/getMutes.ts","./src/lexicon/types/app/bsky/graph/getRelationships.ts","./src/lexicon/types/app/bsky/graph/getStarterPack.ts","./src/lexicon/types/app/bsky/graph/getStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts","./src/lexicon/types/app/bsky/graph/list.ts","./src/lexicon/types/app/bsky/graph/listblock.ts","./src/lexicon/types/app/bsky/graph/listitem.ts","./src/lexicon/types/app/bsky/graph/muteActor.ts","./src/lexicon/types/app/bsky/graph/muteActorList.ts","./src/lexicon/types/app/bsky/graph/muteThread.ts","./src/lexicon/types/app/bsky/graph/searchStarterPacks.ts","./src/lexicon/types/app/bsky/graph/starterpack.ts","./src/lexicon/types/app/bsky/graph/unmuteActor.ts","./src/lexicon/types/app/bsky/graph/unmuteActorList.ts","./src/lexicon/types/app/bsky/graph/unmuteThread.ts","./src/lexicon/types/app/bsky/labeler/defs.ts","./src/lexicon/types/app/bsky/labeler/getServices.ts","./src/lexicon/types/app/bsky/labeler/service.ts","./src/lexicon/types/app/bsky/notification/getUnreadCount.ts","./src/lexicon/types/app/bsky/notification/listNotifications.ts","./src/lexicon/types/app/bsky/notification/putPreferences.ts","./src/lexicon/types/app/bsky/notification/registerPush.ts","./src/lexicon/types/app/bsky/notification/updateSeen.ts","./src/lexicon/types/app/bsky/richtext/facet.ts","./src/lexicon/types/app/bsky/unspecced/defs.ts","./src/lexicon/types/app/bsky/unspecced/getConfig.ts","./src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts","./src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts","./src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/video/defs.ts","./src/lexicon/types/app/bsky/video/getJobStatus.ts","./src/lexicon/types/app/bsky/video/getUploadLimits.ts","./src/lexicon/types/app/bsky/video/uploadVideo.ts","./src/lexicon/types/chat/bsky/actor/declaration.ts","./src/lexicon/types/chat/bsky/actor/defs.ts","./src/lexicon/types/chat/bsky/actor/deleteAccount.ts","./src/lexicon/types/chat/bsky/actor/exportAccountData.ts","./src/lexicon/types/chat/bsky/convo/acceptConvo.ts","./src/lexicon/types/chat/bsky/convo/addReaction.ts","./src/lexicon/types/chat/bsky/convo/defs.ts","./src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts","./src/lexicon/types/chat/bsky/convo/getConvo.ts","./src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts","./src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts","./src/lexicon/types/chat/bsky/convo/getLog.ts","./src/lexicon/types/chat/bsky/convo/getMessages.ts","./src/lexicon/types/chat/bsky/convo/leaveConvo.ts","./src/lexicon/types/chat/bsky/convo/listConvos.ts","./src/lexicon/types/chat/bsky/convo/muteConvo.ts","./src/lexicon/types/chat/bsky/convo/removeReaction.ts","./src/lexicon/types/chat/bsky/convo/sendMessage.ts","./src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts","./src/lexicon/types/chat/bsky/convo/unmuteConvo.ts","./src/lexicon/types/chat/bsky/convo/updateAllRead.ts","./src/lexicon/types/chat/bsky/convo/updateRead.ts","./src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts","./src/lexicon/types/chat/bsky/moderation/getMessageContext.ts","./src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts","./src/lexicon/types/com/atproto/admin/defs.ts","./src/lexicon/types/com/atproto/admin/deleteAccount.ts","./src/lexicon/types/com/atproto/admin/disableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/disableInviteCodes.ts","./src/lexicon/types/com/atproto/admin/enableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/getAccountInfo.ts","./src/lexicon/types/com/atproto/admin/getAccountInfos.ts","./src/lexicon/types/com/atproto/admin/getInviteCodes.ts","./src/lexicon/types/com/atproto/admin/getSubjectStatus.ts","./src/lexicon/types/com/atproto/admin/searchAccounts.ts","./src/lexicon/types/com/atproto/admin/sendEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountHandle.ts","./src/lexicon/types/com/atproto/admin/updateAccountPassword.ts","./src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts","./src/lexicon/types/com/atproto/identity/defs.ts","./src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts","./src/lexicon/types/com/atproto/identity/refreshIdentity.ts","./src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts","./src/lexicon/types/com/atproto/identity/resolveDid.ts","./src/lexicon/types/com/atproto/identity/resolveHandle.ts","./src/lexicon/types/com/atproto/identity/resolveIdentity.ts","./src/lexicon/types/com/atproto/identity/signPlcOperation.ts","./src/lexicon/types/com/atproto/identity/submitPlcOperation.ts","./src/lexicon/types/com/atproto/identity/updateHandle.ts","./src/lexicon/types/com/atproto/label/defs.ts","./src/lexicon/types/com/atproto/label/queryLabels.ts","./src/lexicon/types/com/atproto/label/subscribeLabels.ts","./src/lexicon/types/com/atproto/lexicon/schema.ts","./src/lexicon/types/com/atproto/moderation/createReport.ts","./src/lexicon/types/com/atproto/moderation/defs.ts","./src/lexicon/types/com/atproto/repo/applyWrites.ts","./src/lexicon/types/com/atproto/repo/createRecord.ts","./src/lexicon/types/com/atproto/repo/defs.ts","./src/lexicon/types/com/atproto/repo/deleteRecord.ts","./src/lexicon/types/com/atproto/repo/describeRepo.ts","./src/lexicon/types/com/atproto/repo/getRecord.ts","./src/lexicon/types/com/atproto/repo/importRepo.ts","./src/lexicon/types/com/atproto/repo/listMissingBlobs.ts","./src/lexicon/types/com/atproto/repo/listRecords.ts","./src/lexicon/types/com/atproto/repo/putRecord.ts","./src/lexicon/types/com/atproto/repo/strongRef.ts","./src/lexicon/types/com/atproto/repo/uploadBlob.ts","./src/lexicon/types/com/atproto/server/activateAccount.ts","./src/lexicon/types/com/atproto/server/checkAccountStatus.ts","./src/lexicon/types/com/atproto/server/confirmEmail.ts","./src/lexicon/types/com/atproto/server/createAccount.ts","./src/lexicon/types/com/atproto/server/createAppPassword.ts","./src/lexicon/types/com/atproto/server/createInviteCode.ts","./src/lexicon/types/com/atproto/server/createInviteCodes.ts","./src/lexicon/types/com/atproto/server/createSession.ts","./src/lexicon/types/com/atproto/server/deactivateAccount.ts","./src/lexicon/types/com/atproto/server/defs.ts","./src/lexicon/types/com/atproto/server/deleteAccount.ts","./src/lexicon/types/com/atproto/server/deleteSession.ts","./src/lexicon/types/com/atproto/server/describeServer.ts","./src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts","./src/lexicon/types/com/atproto/server/getServiceAuth.ts","./src/lexicon/types/com/atproto/server/getSession.ts","./src/lexicon/types/com/atproto/server/listAppPasswords.ts","./src/lexicon/types/com/atproto/server/refreshSession.ts","./src/lexicon/types/com/atproto/server/requestAccountDelete.ts","./src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts","./src/lexicon/types/com/atproto/server/requestEmailUpdate.ts","./src/lexicon/types/com/atproto/server/requestPasswordReset.ts","./src/lexicon/types/com/atproto/server/reserveSigningKey.ts","./src/lexicon/types/com/atproto/server/resetPassword.ts","./src/lexicon/types/com/atproto/server/revokeAppPassword.ts","./src/lexicon/types/com/atproto/server/updateEmail.ts","./src/lexicon/types/com/atproto/sync/getBlob.ts","./src/lexicon/types/com/atproto/sync/getBlocks.ts","./src/lexicon/types/com/atproto/sync/getCheckout.ts","./src/lexicon/types/com/atproto/sync/getHead.ts","./src/lexicon/types/com/atproto/sync/getLatestCommit.ts","./src/lexicon/types/com/atproto/sync/getRecord.ts","./src/lexicon/types/com/atproto/sync/getRepo.ts","./src/lexicon/types/com/atproto/sync/getRepoStatus.ts","./src/lexicon/types/com/atproto/sync/listBlobs.ts","./src/lexicon/types/com/atproto/sync/listRepos.ts","./src/lexicon/types/com/atproto/sync/listReposByCollection.ts","./src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts","./src/lexicon/types/com/atproto/sync/requestCrawl.ts","./src/lexicon/types/com/atproto/sync/subscribeRepos.ts","./src/lexicon/types/com/atproto/temp/addReservedHandle.ts","./src/lexicon/types/com/atproto/temp/checkSignupQueue.ts","./src/lexicon/types/com/atproto/temp/fetchLabels.ts","./src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts","./src/lexicon/types/tools/ozone/communication/createTemplate.ts","./src/lexicon/types/tools/ozone/communication/defs.ts","./src/lexicon/types/tools/ozone/communication/deleteTemplate.ts","./src/lexicon/types/tools/ozone/communication/listTemplates.ts","./src/lexicon/types/tools/ozone/communication/updateTemplate.ts","./src/lexicon/types/tools/ozone/moderation/defs.ts","./src/lexicon/types/tools/ozone/moderation/emitEvent.ts","./src/lexicon/types/tools/ozone/moderation/getEvent.ts","./src/lexicon/types/tools/ozone/moderation/getRecord.ts","./src/lexicon/types/tools/ozone/moderation/getRecords.ts","./src/lexicon/types/tools/ozone/moderation/getRepo.ts","./src/lexicon/types/tools/ozone/moderation/getReporterStats.ts","./src/lexicon/types/tools/ozone/moderation/getRepos.ts","./src/lexicon/types/tools/ozone/moderation/getSubjects.ts","./src/lexicon/types/tools/ozone/moderation/queryEvents.ts","./src/lexicon/types/tools/ozone/moderation/queryStatuses.ts","./src/lexicon/types/tools/ozone/moderation/searchRepos.ts","./src/lexicon/types/tools/ozone/server/getConfig.ts","./src/lexicon/types/tools/ozone/set/addValues.ts","./src/lexicon/types/tools/ozone/set/defs.ts","./src/lexicon/types/tools/ozone/set/deleteSet.ts","./src/lexicon/types/tools/ozone/set/deleteValues.ts","./src/lexicon/types/tools/ozone/set/getValues.ts","./src/lexicon/types/tools/ozone/set/querySets.ts","./src/lexicon/types/tools/ozone/set/upsertSet.ts","./src/lexicon/types/tools/ozone/setting/defs.ts","./src/lexicon/types/tools/ozone/setting/listOptions.ts","./src/lexicon/types/tools/ozone/setting/removeOptions.ts","./src/lexicon/types/tools/ozone/setting/upsertOption.ts","./src/lexicon/types/tools/ozone/signature/defs.ts","./src/lexicon/types/tools/ozone/signature/findCorrelation.ts","./src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts","./src/lexicon/types/tools/ozone/signature/searchAccounts.ts","./src/lexicon/types/tools/ozone/team/addMember.ts","./src/lexicon/types/tools/ozone/team/defs.ts","./src/lexicon/types/tools/ozone/team/deleteMember.ts","./src/lexicon/types/tools/ozone/team/listMembers.ts","./src/lexicon/types/tools/ozone/team/updateMember.ts","./src/mailer/index.ts","./src/mailer/moderation.ts","./src/mailer/templates.ts","./src/mailer/templates/confirm-email.d.ts","./src/mailer/templates/delete-account.d.ts","./src/mailer/templates/plc-operation.d.ts","./src/mailer/templates/reset-password.d.ts","./src/mailer/templates/update-email.d.ts","./src/read-after-write/index.ts","./src/read-after-write/types.ts","./src/read-after-write/util.ts","./src/read-after-write/viewer.ts","./src/repo/index.ts","./src/repo/prepare.ts","./src/repo/types.ts","./src/scripts/index.ts","./src/scripts/rebuild-repo.ts","./src/sequencer/events.ts","./src/sequencer/index.ts","./src/sequencer/outbox.ts","./src/sequencer/sequencer.ts","./src/sequencer/db/index.ts","./src/sequencer/db/schema.ts","./src/sequencer/db/migrations/001-init.ts","./src/sequencer/db/migrations/index.ts","./src/util/compression.ts","./src/util/debug.ts","./src/util/params.ts"],"version":"5.6.3"}
1
+ {"root":["./src/app-view.ts","./src/auth-routes.ts","./src/auth-verifier.ts","./src/background.ts","./src/basic-routes.ts","./src/bsky-app-view.ts","./src/context.ts","./src/crawlers.ts","./src/disk-blobstore.ts","./src/error.ts","./src/index.ts","./src/logger.ts","./src/pipethrough.ts","./src/redis.ts","./src/well-known.ts","./src/account-manager/account-manager.ts","./src/account-manager/oauth-store.ts","./src/account-manager/db/index.ts","./src/account-manager/db/migrations/001-init.ts","./src/account-manager/db/migrations/002-account-deactivation.ts","./src/account-manager/db/migrations/003-privileged-app-passwords.ts","./src/account-manager/db/migrations/004-oauth.ts","./src/account-manager/db/migrations/index.ts","./src/account-manager/db/schema/account.ts","./src/account-manager/db/schema/actor.ts","./src/account-manager/db/schema/app-password.ts","./src/account-manager/db/schema/authorization-request.ts","./src/account-manager/db/schema/device-account.ts","./src/account-manager/db/schema/device.ts","./src/account-manager/db/schema/email-token.ts","./src/account-manager/db/schema/index.ts","./src/account-manager/db/schema/invite-code.ts","./src/account-manager/db/schema/refresh-token.ts","./src/account-manager/db/schema/repo-root.ts","./src/account-manager/db/schema/token.ts","./src/account-manager/db/schema/used-refresh-token.ts","./src/account-manager/helpers/account.ts","./src/account-manager/helpers/auth.ts","./src/account-manager/helpers/authorization-request.ts","./src/account-manager/helpers/device-account.ts","./src/account-manager/helpers/device.ts","./src/account-manager/helpers/email-token.ts","./src/account-manager/helpers/invite.ts","./src/account-manager/helpers/password.ts","./src/account-manager/helpers/repo.ts","./src/account-manager/helpers/scrypt.ts","./src/account-manager/helpers/token.ts","./src/account-manager/helpers/used-refresh-token.ts","./src/actor-store/actor-store-reader.ts","./src/actor-store/actor-store-resources.ts","./src/actor-store/actor-store-transactor.ts","./src/actor-store/actor-store-writer.ts","./src/actor-store/actor-store.ts","./src/actor-store/migrate.ts","./src/actor-store/blob/reader.ts","./src/actor-store/blob/transactor.ts","./src/actor-store/db/index.ts","./src/actor-store/db/migrations/001-init.ts","./src/actor-store/db/migrations/index.ts","./src/actor-store/db/schema/account-pref.ts","./src/actor-store/db/schema/backlink.ts","./src/actor-store/db/schema/blob.ts","./src/actor-store/db/schema/index.ts","./src/actor-store/db/schema/record-blob.ts","./src/actor-store/db/schema/record.ts","./src/actor-store/db/schema/repo-block.ts","./src/actor-store/db/schema/repo-root.ts","./src/actor-store/preference/reader.ts","./src/actor-store/preference/transactor.ts","./src/actor-store/preference/util.ts","./src/actor-store/record/reader.ts","./src/actor-store/record/transactor.ts","./src/actor-store/repo/reader.ts","./src/actor-store/repo/sql-repo-reader.ts","./src/actor-store/repo/sql-repo-transactor.ts","./src/actor-store/repo/transactor.ts","./src/api/index.ts","./src/api/proxy.ts","./src/api/app/bsky/index.ts","./src/api/app/bsky/actor/getPreferences.ts","./src/api/app/bsky/actor/getProfile.ts","./src/api/app/bsky/actor/getProfiles.ts","./src/api/app/bsky/actor/index.ts","./src/api/app/bsky/actor/putPreferences.ts","./src/api/app/bsky/feed/getActorLikes.ts","./src/api/app/bsky/feed/getAuthorFeed.ts","./src/api/app/bsky/feed/getFeed.ts","./src/api/app/bsky/feed/getPostThread.ts","./src/api/app/bsky/feed/getTimeline.ts","./src/api/app/bsky/feed/index.ts","./src/api/app/bsky/notification/index.ts","./src/api/app/bsky/notification/registerPush.ts","./src/api/app/bsky/util/resolver.ts","./src/api/com/atproto/index.ts","./src/api/com/atproto/admin/deleteAccount.ts","./src/api/com/atproto/admin/disableAccountInvites.ts","./src/api/com/atproto/admin/disableInviteCodes.ts","./src/api/com/atproto/admin/enableAccountInvites.ts","./src/api/com/atproto/admin/getAccountInfo.ts","./src/api/com/atproto/admin/getAccountInfos.ts","./src/api/com/atproto/admin/getInviteCodes.ts","./src/api/com/atproto/admin/getSubjectStatus.ts","./src/api/com/atproto/admin/index.ts","./src/api/com/atproto/admin/sendEmail.ts","./src/api/com/atproto/admin/updateAccountEmail.ts","./src/api/com/atproto/admin/updateAccountHandle.ts","./src/api/com/atproto/admin/updateAccountPassword.ts","./src/api/com/atproto/admin/updateSubjectStatus.ts","./src/api/com/atproto/admin/util.ts","./src/api/com/atproto/identity/getRecommendedDidCredentials.ts","./src/api/com/atproto/identity/index.ts","./src/api/com/atproto/identity/requestPlcOperationSignature.ts","./src/api/com/atproto/identity/resolveHandle.ts","./src/api/com/atproto/identity/signPlcOperation.ts","./src/api/com/atproto/identity/submitPlcOperation.ts","./src/api/com/atproto/identity/updateHandle.ts","./src/api/com/atproto/moderation/createReport.ts","./src/api/com/atproto/moderation/index.ts","./src/api/com/atproto/repo/applyWrites.ts","./src/api/com/atproto/repo/createRecord.ts","./src/api/com/atproto/repo/deleteRecord.ts","./src/api/com/atproto/repo/describeRepo.ts","./src/api/com/atproto/repo/getRecord.ts","./src/api/com/atproto/repo/importRepo.ts","./src/api/com/atproto/repo/index.ts","./src/api/com/atproto/repo/listMissingBlobs.ts","./src/api/com/atproto/repo/listRecords.ts","./src/api/com/atproto/repo/putRecord.ts","./src/api/com/atproto/repo/uploadBlob.ts","./src/api/com/atproto/server/activateAccount.ts","./src/api/com/atproto/server/checkAccountStatus.ts","./src/api/com/atproto/server/confirmEmail.ts","./src/api/com/atproto/server/createAccount.ts","./src/api/com/atproto/server/createAppPassword.ts","./src/api/com/atproto/server/createInviteCode.ts","./src/api/com/atproto/server/createInviteCodes.ts","./src/api/com/atproto/server/createSession.ts","./src/api/com/atproto/server/deactivateAccount.ts","./src/api/com/atproto/server/deleteAccount.ts","./src/api/com/atproto/server/deleteSession.ts","./src/api/com/atproto/server/describeServer.ts","./src/api/com/atproto/server/getAccountInviteCodes.ts","./src/api/com/atproto/server/getServiceAuth.ts","./src/api/com/atproto/server/getSession.ts","./src/api/com/atproto/server/index.ts","./src/api/com/atproto/server/listAppPasswords.ts","./src/api/com/atproto/server/refreshSession.ts","./src/api/com/atproto/server/requestAccountDelete.ts","./src/api/com/atproto/server/requestEmailConfirmation.ts","./src/api/com/atproto/server/requestEmailUpdate.ts","./src/api/com/atproto/server/requestPasswordReset.ts","./src/api/com/atproto/server/reserveSigningKey.ts","./src/api/com/atproto/server/resetPassword.ts","./src/api/com/atproto/server/revokeAppPassword.ts","./src/api/com/atproto/server/updateEmail.ts","./src/api/com/atproto/server/util.ts","./src/api/com/atproto/sync/getBlob.ts","./src/api/com/atproto/sync/getBlocks.ts","./src/api/com/atproto/sync/getLatestCommit.ts","./src/api/com/atproto/sync/getRecord.ts","./src/api/com/atproto/sync/getRepo.ts","./src/api/com/atproto/sync/getRepoStatus.ts","./src/api/com/atproto/sync/index.ts","./src/api/com/atproto/sync/listBlobs.ts","./src/api/com/atproto/sync/listRepos.ts","./src/api/com/atproto/sync/subscribeRepos.ts","./src/api/com/atproto/sync/util.ts","./src/api/com/atproto/sync/deprecated/getCheckout.ts","./src/api/com/atproto/sync/deprecated/getHead.ts","./src/api/com/atproto/temp/checkSignupQueue.ts","./src/api/com/atproto/temp/index.ts","./src/config/config.ts","./src/config/env.ts","./src/config/index.ts","./src/config/secrets.ts","./src/db/cast.ts","./src/db/db.ts","./src/db/index.ts","./src/db/migrator.ts","./src/db/pagination.ts","./src/db/util.ts","./src/db/tables/moderation.ts","./src/did-cache/index.ts","./src/did-cache/db/index.ts","./src/did-cache/db/migrations.ts","./src/did-cache/db/schema.ts","./src/handle/explicit-slurs.ts","./src/handle/index.ts","./src/handle/reserved.ts","./src/image/image-url-builder.ts","./src/image/image-url.ts","./src/image/index.ts","./src/lexicon/index.ts","./src/lexicon/lexicons.ts","./src/lexicon/util.ts","./src/lexicon/types/app/bsky/actor/defs.ts","./src/lexicon/types/app/bsky/actor/getPreferences.ts","./src/lexicon/types/app/bsky/actor/getProfile.ts","./src/lexicon/types/app/bsky/actor/getProfiles.ts","./src/lexicon/types/app/bsky/actor/getSuggestions.ts","./src/lexicon/types/app/bsky/actor/profile.ts","./src/lexicon/types/app/bsky/actor/putPreferences.ts","./src/lexicon/types/app/bsky/actor/searchActors.ts","./src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts","./src/lexicon/types/app/bsky/embed/defs.ts","./src/lexicon/types/app/bsky/embed/external.ts","./src/lexicon/types/app/bsky/embed/images.ts","./src/lexicon/types/app/bsky/embed/record.ts","./src/lexicon/types/app/bsky/embed/recordWithMedia.ts","./src/lexicon/types/app/bsky/embed/video.ts","./src/lexicon/types/app/bsky/feed/defs.ts","./src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/generator.ts","./src/lexicon/types/app/bsky/feed/getActorFeeds.ts","./src/lexicon/types/app/bsky/feed/getActorLikes.ts","./src/lexicon/types/app/bsky/feed/getAuthorFeed.ts","./src/lexicon/types/app/bsky/feed/getFeed.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerators.ts","./src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts","./src/lexicon/types/app/bsky/feed/getLikes.ts","./src/lexicon/types/app/bsky/feed/getListFeed.ts","./src/lexicon/types/app/bsky/feed/getPostThread.ts","./src/lexicon/types/app/bsky/feed/getPosts.ts","./src/lexicon/types/app/bsky/feed/getQuotes.ts","./src/lexicon/types/app/bsky/feed/getRepostedBy.ts","./src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/feed/getTimeline.ts","./src/lexicon/types/app/bsky/feed/like.ts","./src/lexicon/types/app/bsky/feed/post.ts","./src/lexicon/types/app/bsky/feed/postgate.ts","./src/lexicon/types/app/bsky/feed/repost.ts","./src/lexicon/types/app/bsky/feed/searchPosts.ts","./src/lexicon/types/app/bsky/feed/sendInteractions.ts","./src/lexicon/types/app/bsky/feed/threadgate.ts","./src/lexicon/types/app/bsky/graph/block.ts","./src/lexicon/types/app/bsky/graph/defs.ts","./src/lexicon/types/app/bsky/graph/follow.ts","./src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getBlocks.ts","./src/lexicon/types/app/bsky/graph/getFollowers.ts","./src/lexicon/types/app/bsky/graph/getFollows.ts","./src/lexicon/types/app/bsky/graph/getKnownFollowers.ts","./src/lexicon/types/app/bsky/graph/getList.ts","./src/lexicon/types/app/bsky/graph/getListBlocks.ts","./src/lexicon/types/app/bsky/graph/getListMutes.ts","./src/lexicon/types/app/bsky/graph/getLists.ts","./src/lexicon/types/app/bsky/graph/getMutes.ts","./src/lexicon/types/app/bsky/graph/getRelationships.ts","./src/lexicon/types/app/bsky/graph/getStarterPack.ts","./src/lexicon/types/app/bsky/graph/getStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts","./src/lexicon/types/app/bsky/graph/list.ts","./src/lexicon/types/app/bsky/graph/listblock.ts","./src/lexicon/types/app/bsky/graph/listitem.ts","./src/lexicon/types/app/bsky/graph/muteActor.ts","./src/lexicon/types/app/bsky/graph/muteActorList.ts","./src/lexicon/types/app/bsky/graph/muteThread.ts","./src/lexicon/types/app/bsky/graph/searchStarterPacks.ts","./src/lexicon/types/app/bsky/graph/starterpack.ts","./src/lexicon/types/app/bsky/graph/unmuteActor.ts","./src/lexicon/types/app/bsky/graph/unmuteActorList.ts","./src/lexicon/types/app/bsky/graph/unmuteThread.ts","./src/lexicon/types/app/bsky/labeler/defs.ts","./src/lexicon/types/app/bsky/labeler/getServices.ts","./src/lexicon/types/app/bsky/labeler/service.ts","./src/lexicon/types/app/bsky/notification/getUnreadCount.ts","./src/lexicon/types/app/bsky/notification/listNotifications.ts","./src/lexicon/types/app/bsky/notification/putPreferences.ts","./src/lexicon/types/app/bsky/notification/registerPush.ts","./src/lexicon/types/app/bsky/notification/updateSeen.ts","./src/lexicon/types/app/bsky/richtext/facet.ts","./src/lexicon/types/app/bsky/unspecced/defs.ts","./src/lexicon/types/app/bsky/unspecced/getConfig.ts","./src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts","./src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts","./src/lexicon/types/app/bsky/unspecced/getTrends.ts","./src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/video/defs.ts","./src/lexicon/types/app/bsky/video/getJobStatus.ts","./src/lexicon/types/app/bsky/video/getUploadLimits.ts","./src/lexicon/types/app/bsky/video/uploadVideo.ts","./src/lexicon/types/chat/bsky/actor/declaration.ts","./src/lexicon/types/chat/bsky/actor/defs.ts","./src/lexicon/types/chat/bsky/actor/deleteAccount.ts","./src/lexicon/types/chat/bsky/actor/exportAccountData.ts","./src/lexicon/types/chat/bsky/convo/acceptConvo.ts","./src/lexicon/types/chat/bsky/convo/addReaction.ts","./src/lexicon/types/chat/bsky/convo/defs.ts","./src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts","./src/lexicon/types/chat/bsky/convo/getConvo.ts","./src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts","./src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts","./src/lexicon/types/chat/bsky/convo/getLog.ts","./src/lexicon/types/chat/bsky/convo/getMessages.ts","./src/lexicon/types/chat/bsky/convo/leaveConvo.ts","./src/lexicon/types/chat/bsky/convo/listConvos.ts","./src/lexicon/types/chat/bsky/convo/muteConvo.ts","./src/lexicon/types/chat/bsky/convo/removeReaction.ts","./src/lexicon/types/chat/bsky/convo/sendMessage.ts","./src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts","./src/lexicon/types/chat/bsky/convo/unmuteConvo.ts","./src/lexicon/types/chat/bsky/convo/updateAllRead.ts","./src/lexicon/types/chat/bsky/convo/updateRead.ts","./src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts","./src/lexicon/types/chat/bsky/moderation/getMessageContext.ts","./src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts","./src/lexicon/types/com/atproto/admin/defs.ts","./src/lexicon/types/com/atproto/admin/deleteAccount.ts","./src/lexicon/types/com/atproto/admin/disableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/disableInviteCodes.ts","./src/lexicon/types/com/atproto/admin/enableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/getAccountInfo.ts","./src/lexicon/types/com/atproto/admin/getAccountInfos.ts","./src/lexicon/types/com/atproto/admin/getInviteCodes.ts","./src/lexicon/types/com/atproto/admin/getSubjectStatus.ts","./src/lexicon/types/com/atproto/admin/searchAccounts.ts","./src/lexicon/types/com/atproto/admin/sendEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountHandle.ts","./src/lexicon/types/com/atproto/admin/updateAccountPassword.ts","./src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts","./src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts","./src/lexicon/types/com/atproto/identity/defs.ts","./src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts","./src/lexicon/types/com/atproto/identity/refreshIdentity.ts","./src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts","./src/lexicon/types/com/atproto/identity/resolveDid.ts","./src/lexicon/types/com/atproto/identity/resolveHandle.ts","./src/lexicon/types/com/atproto/identity/resolveIdentity.ts","./src/lexicon/types/com/atproto/identity/signPlcOperation.ts","./src/lexicon/types/com/atproto/identity/submitPlcOperation.ts","./src/lexicon/types/com/atproto/identity/updateHandle.ts","./src/lexicon/types/com/atproto/label/defs.ts","./src/lexicon/types/com/atproto/label/queryLabels.ts","./src/lexicon/types/com/atproto/label/subscribeLabels.ts","./src/lexicon/types/com/atproto/lexicon/schema.ts","./src/lexicon/types/com/atproto/moderation/createReport.ts","./src/lexicon/types/com/atproto/moderation/defs.ts","./src/lexicon/types/com/atproto/repo/applyWrites.ts","./src/lexicon/types/com/atproto/repo/createRecord.ts","./src/lexicon/types/com/atproto/repo/defs.ts","./src/lexicon/types/com/atproto/repo/deleteRecord.ts","./src/lexicon/types/com/atproto/repo/describeRepo.ts","./src/lexicon/types/com/atproto/repo/getRecord.ts","./src/lexicon/types/com/atproto/repo/importRepo.ts","./src/lexicon/types/com/atproto/repo/listMissingBlobs.ts","./src/lexicon/types/com/atproto/repo/listRecords.ts","./src/lexicon/types/com/atproto/repo/putRecord.ts","./src/lexicon/types/com/atproto/repo/strongRef.ts","./src/lexicon/types/com/atproto/repo/uploadBlob.ts","./src/lexicon/types/com/atproto/server/activateAccount.ts","./src/lexicon/types/com/atproto/server/checkAccountStatus.ts","./src/lexicon/types/com/atproto/server/confirmEmail.ts","./src/lexicon/types/com/atproto/server/createAccount.ts","./src/lexicon/types/com/atproto/server/createAppPassword.ts","./src/lexicon/types/com/atproto/server/createInviteCode.ts","./src/lexicon/types/com/atproto/server/createInviteCodes.ts","./src/lexicon/types/com/atproto/server/createSession.ts","./src/lexicon/types/com/atproto/server/deactivateAccount.ts","./src/lexicon/types/com/atproto/server/defs.ts","./src/lexicon/types/com/atproto/server/deleteAccount.ts","./src/lexicon/types/com/atproto/server/deleteSession.ts","./src/lexicon/types/com/atproto/server/describeServer.ts","./src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts","./src/lexicon/types/com/atproto/server/getServiceAuth.ts","./src/lexicon/types/com/atproto/server/getSession.ts","./src/lexicon/types/com/atproto/server/listAppPasswords.ts","./src/lexicon/types/com/atproto/server/refreshSession.ts","./src/lexicon/types/com/atproto/server/requestAccountDelete.ts","./src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts","./src/lexicon/types/com/atproto/server/requestEmailUpdate.ts","./src/lexicon/types/com/atproto/server/requestPasswordReset.ts","./src/lexicon/types/com/atproto/server/reserveSigningKey.ts","./src/lexicon/types/com/atproto/server/resetPassword.ts","./src/lexicon/types/com/atproto/server/revokeAppPassword.ts","./src/lexicon/types/com/atproto/server/updateEmail.ts","./src/lexicon/types/com/atproto/sync/getBlob.ts","./src/lexicon/types/com/atproto/sync/getBlocks.ts","./src/lexicon/types/com/atproto/sync/getCheckout.ts","./src/lexicon/types/com/atproto/sync/getHead.ts","./src/lexicon/types/com/atproto/sync/getLatestCommit.ts","./src/lexicon/types/com/atproto/sync/getRecord.ts","./src/lexicon/types/com/atproto/sync/getRepo.ts","./src/lexicon/types/com/atproto/sync/getRepoStatus.ts","./src/lexicon/types/com/atproto/sync/listBlobs.ts","./src/lexicon/types/com/atproto/sync/listRepos.ts","./src/lexicon/types/com/atproto/sync/listReposByCollection.ts","./src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts","./src/lexicon/types/com/atproto/sync/requestCrawl.ts","./src/lexicon/types/com/atproto/sync/subscribeRepos.ts","./src/lexicon/types/com/atproto/temp/addReservedHandle.ts","./src/lexicon/types/com/atproto/temp/checkSignupQueue.ts","./src/lexicon/types/com/atproto/temp/fetchLabels.ts","./src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts","./src/lexicon/types/tools/ozone/communication/createTemplate.ts","./src/lexicon/types/tools/ozone/communication/defs.ts","./src/lexicon/types/tools/ozone/communication/deleteTemplate.ts","./src/lexicon/types/tools/ozone/communication/listTemplates.ts","./src/lexicon/types/tools/ozone/communication/updateTemplate.ts","./src/lexicon/types/tools/ozone/moderation/defs.ts","./src/lexicon/types/tools/ozone/moderation/emitEvent.ts","./src/lexicon/types/tools/ozone/moderation/getEvent.ts","./src/lexicon/types/tools/ozone/moderation/getRecord.ts","./src/lexicon/types/tools/ozone/moderation/getRecords.ts","./src/lexicon/types/tools/ozone/moderation/getRepo.ts","./src/lexicon/types/tools/ozone/moderation/getReporterStats.ts","./src/lexicon/types/tools/ozone/moderation/getRepos.ts","./src/lexicon/types/tools/ozone/moderation/getSubjects.ts","./src/lexicon/types/tools/ozone/moderation/queryEvents.ts","./src/lexicon/types/tools/ozone/moderation/queryStatuses.ts","./src/lexicon/types/tools/ozone/moderation/searchRepos.ts","./src/lexicon/types/tools/ozone/server/getConfig.ts","./src/lexicon/types/tools/ozone/set/addValues.ts","./src/lexicon/types/tools/ozone/set/defs.ts","./src/lexicon/types/tools/ozone/set/deleteSet.ts","./src/lexicon/types/tools/ozone/set/deleteValues.ts","./src/lexicon/types/tools/ozone/set/getValues.ts","./src/lexicon/types/tools/ozone/set/querySets.ts","./src/lexicon/types/tools/ozone/set/upsertSet.ts","./src/lexicon/types/tools/ozone/setting/defs.ts","./src/lexicon/types/tools/ozone/setting/listOptions.ts","./src/lexicon/types/tools/ozone/setting/removeOptions.ts","./src/lexicon/types/tools/ozone/setting/upsertOption.ts","./src/lexicon/types/tools/ozone/signature/defs.ts","./src/lexicon/types/tools/ozone/signature/findCorrelation.ts","./src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts","./src/lexicon/types/tools/ozone/signature/searchAccounts.ts","./src/lexicon/types/tools/ozone/team/addMember.ts","./src/lexicon/types/tools/ozone/team/defs.ts","./src/lexicon/types/tools/ozone/team/deleteMember.ts","./src/lexicon/types/tools/ozone/team/listMembers.ts","./src/lexicon/types/tools/ozone/team/updateMember.ts","./src/mailer/index.ts","./src/mailer/moderation.ts","./src/mailer/templates.ts","./src/mailer/templates/confirm-email.d.ts","./src/mailer/templates/delete-account.d.ts","./src/mailer/templates/plc-operation.d.ts","./src/mailer/templates/reset-password.d.ts","./src/mailer/templates/update-email.d.ts","./src/read-after-write/index.ts","./src/read-after-write/types.ts","./src/read-after-write/util.ts","./src/read-after-write/viewer.ts","./src/repo/index.ts","./src/repo/prepare.ts","./src/repo/types.ts","./src/scripts/index.ts","./src/scripts/publish-identity.ts","./src/scripts/rebuild-repo.ts","./src/scripts/rotate-keys.ts","./src/scripts/util.ts","./src/scripts/sequencer-recovery/index.ts","./src/scripts/sequencer-recovery/recoverer.ts","./src/scripts/sequencer-recovery/recovery-db.ts","./src/scripts/sequencer-recovery/repair-repos.ts","./src/scripts/sequencer-recovery/user-queues.ts","./src/sequencer/events.ts","./src/sequencer/index.ts","./src/sequencer/outbox.ts","./src/sequencer/sequencer.ts","./src/sequencer/db/index.ts","./src/sequencer/db/schema.ts","./src/sequencer/db/migrations/001-init.ts","./src/sequencer/db/migrations/index.ts","./src/util/compression.ts","./src/util/debug.ts","./src/util/params.ts"],"version":"5.6.3"}
@@ -1 +1 @@
1
- {"root":["./tests/_util.ts","./tests/account-deactivation.test.ts","./tests/account-deletion.test.ts","./tests/account-migration.test.ts","./tests/account.test.ts","./tests/app-passwords.test.ts","./tests/auth.test.ts","./tests/blob-deletes.test.ts","./tests/create-post.test.ts","./tests/crud.test.ts","./tests/db.test.ts","./tests/email-confirmation.test.ts","./tests/entryway.test.ts","./tests/file-uploads.test.ts","./tests/handle-validation.test.ts","./tests/handles.test.ts","./tests/invite-codes.test.ts","./tests/invites-admin.test.ts","./tests/moderation.test.ts","./tests/moderator-auth.test.ts","./tests/oauth.test.ts","./tests/plc-operations.test.ts","./tests/preferences.test.ts","./tests/races.test.ts","./tests/rate-limits.test.ts","./tests/sequencer.test.ts","./tests/server.test.ts","./tests/takedown-appeal.test.ts","./tests/proxied/admin.test.ts","./tests/proxied/feedgen.test.ts","./tests/proxied/notif.test.ts","./tests/proxied/procedures.test.ts","./tests/proxied/proxy-catchall.test.ts","./tests/proxied/proxy-header.test.ts","./tests/proxied/read-after-write.test.ts","./tests/proxied/views.test.ts","./tests/seeds/basic.ts","./tests/seeds/follows.ts","./tests/seeds/likes.ts","./tests/seeds/reposts.ts","./tests/seeds/thread.ts","./tests/seeds/users-bulk.ts","./tests/seeds/users.ts","./tests/sync/invertible-ops.test.ts","./tests/sync/list.test.ts","./tests/sync/subscribe-repos.test.ts","./tests/sync/sync.test.ts"],"version":"5.6.3"}
1
+ {"root":["./tests/_util.ts","./tests/account-deactivation.test.ts","./tests/account-deletion.test.ts","./tests/account-migration.test.ts","./tests/account.test.ts","./tests/app-passwords.test.ts","./tests/auth.test.ts","./tests/blob-deletes.test.ts","./tests/create-post.test.ts","./tests/crud.test.ts","./tests/db.test.ts","./tests/email-confirmation.test.ts","./tests/entryway.test.ts","./tests/file-uploads.test.ts","./tests/handle-validation.test.ts","./tests/handles.test.ts","./tests/invite-codes.test.ts","./tests/invites-admin.test.ts","./tests/moderation.test.ts","./tests/moderator-auth.test.ts","./tests/oauth.test.ts","./tests/plc-operations.test.ts","./tests/preferences.test.ts","./tests/races.test.ts","./tests/rate-limits.test.ts","./tests/recovery.test.ts","./tests/sequencer.test.ts","./tests/server.test.ts","./tests/takedown-appeal.test.ts","./tests/proxied/admin.test.ts","./tests/proxied/feedgen.test.ts","./tests/proxied/notif.test.ts","./tests/proxied/procedures.test.ts","./tests/proxied/proxy-catchall.test.ts","./tests/proxied/proxy-header.test.ts","./tests/proxied/read-after-write.test.ts","./tests/proxied/views.test.ts","./tests/seeds/basic.ts","./tests/seeds/follows.ts","./tests/seeds/likes.ts","./tests/seeds/reposts.ts","./tests/seeds/thread.ts","./tests/seeds/users-bulk.ts","./tests/seeds/users.ts","./tests/sync/invertible-ops.test.ts","./tests/sync/list.test.ts","./tests/sync/subscribe-repos.test.ts","./tests/sync/sync.test.ts"],"version":"5.6.3"}