@atproto/pds 0.4.123 → 0.4.125

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 (194) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/account-manager/account-manager.js +17 -7
  3. package/dist/account-manager/account-manager.js.map +1 -1
  4. package/dist/account-manager/db/index.d.ts.map +1 -1
  5. package/dist/account-manager/db/migrations/005-oauth-account-management.d.ts +20 -0
  6. package/dist/account-manager/db/migrations/005-oauth-account-management.d.ts.map +1 -0
  7. package/dist/account-manager/db/migrations/005-oauth-account-management.js +72 -0
  8. package/dist/account-manager/db/migrations/005-oauth-account-management.js.map +1 -0
  9. package/dist/account-manager/db/migrations/index.d.ts +2 -0
  10. package/dist/account-manager/db/migrations/index.d.ts.map +1 -1
  11. package/dist/account-manager/db/migrations/index.js +19 -7
  12. package/dist/account-manager/db/migrations/index.js.map +1 -1
  13. package/dist/account-manager/db/schema/account-device.d.ts +13 -0
  14. package/dist/account-manager/db/schema/account-device.d.ts.map +1 -0
  15. package/dist/account-manager/db/schema/{device-account.js → account-device.js} +2 -2
  16. package/dist/account-manager/db/schema/account-device.js.map +1 -0
  17. package/dist/account-manager/db/schema/authorization-request.d.ts +4 -4
  18. package/dist/account-manager/db/schema/authorization-request.d.ts.map +1 -1
  19. package/dist/account-manager/db/schema/authorization-request.js.map +1 -1
  20. package/dist/account-manager/db/schema/authorized-client.d.ts +16 -0
  21. package/dist/account-manager/db/schema/authorized-client.d.ts.map +1 -0
  22. package/dist/account-manager/db/schema/authorized-client.js +5 -0
  23. package/dist/account-manager/db/schema/authorized-client.js.map +1 -0
  24. package/dist/account-manager/db/schema/index.d.ts +4 -3
  25. package/dist/account-manager/db/schema/index.d.ts.map +1 -1
  26. package/dist/account-manager/db/schema/token.d.ts +5 -5
  27. package/dist/account-manager/db/schema/token.d.ts.map +1 -1
  28. package/dist/account-manager/db/schema/token.js.map +1 -1
  29. package/dist/account-manager/helpers/account-device.d.ts +204 -0
  30. package/dist/account-manager/helpers/account-device.d.ts.map +1 -0
  31. package/dist/account-manager/helpers/account-device.js +54 -0
  32. package/dist/account-manager/helpers/account-device.js.map +1 -0
  33. package/dist/account-manager/helpers/account.d.ts +2 -1
  34. package/dist/account-manager/helpers/account.d.ts.map +1 -1
  35. package/dist/account-manager/helpers/auth.d.ts.map +1 -1
  36. package/dist/account-manager/helpers/auth.js +17 -7
  37. package/dist/account-manager/helpers/auth.js.map +1 -1
  38. package/dist/account-manager/helpers/authorization-request.d.ts.map +1 -1
  39. package/dist/account-manager/helpers/authorization-request.js +4 -4
  40. package/dist/account-manager/helpers/authorization-request.js.map +1 -1
  41. package/dist/account-manager/helpers/authorized-client.d.ts +6 -0
  42. package/dist/account-manager/helpers/authorized-client.d.ts.map +1 -0
  43. package/dist/account-manager/helpers/authorized-client.js +47 -0
  44. package/dist/account-manager/helpers/authorized-client.js.map +1 -0
  45. package/dist/account-manager/helpers/device.d.ts +1 -1
  46. package/dist/account-manager/helpers/device.d.ts.map +1 -1
  47. package/dist/account-manager/helpers/device.js.map +1 -1
  48. package/dist/account-manager/helpers/email-token.d.ts.map +1 -1
  49. package/dist/account-manager/helpers/invite.d.ts.map +1 -1
  50. package/dist/account-manager/helpers/password.d.ts.map +1 -1
  51. package/dist/account-manager/helpers/password.js +17 -7
  52. package/dist/account-manager/helpers/password.js.map +1 -1
  53. package/dist/account-manager/helpers/repo.d.ts.map +1 -1
  54. package/dist/account-manager/helpers/scrypt.d.ts.map +1 -1
  55. package/dist/account-manager/helpers/scrypt.js +17 -7
  56. package/dist/account-manager/helpers/scrypt.js.map +1 -1
  57. package/dist/account-manager/helpers/token.d.ts +566 -59
  58. package/dist/account-manager/helpers/token.d.ts.map +1 -1
  59. package/dist/account-manager/helpers/token.js +17 -32
  60. package/dist/account-manager/helpers/token.js.map +1 -1
  61. package/dist/account-manager/helpers/used-refresh-token.d.ts.map +1 -1
  62. package/dist/account-manager/oauth-store.d.ts +17 -7
  63. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  64. package/dist/account-manager/oauth-store.js +138 -86
  65. package/dist/account-manager/oauth-store.js.map +1 -1
  66. package/dist/actor-store/actor-store.js +17 -7
  67. package/dist/actor-store/actor-store.js.map +1 -1
  68. package/dist/actor-store/blob/transactor.js +17 -7
  69. package/dist/actor-store/blob/transactor.js.map +1 -1
  70. package/dist/actor-store/db/index.d.ts.map +1 -1
  71. package/dist/actor-store/db/migrations/index.js +17 -7
  72. package/dist/actor-store/db/migrations/index.js.map +1 -1
  73. package/dist/actor-store/migrate.d.ts.map +1 -1
  74. package/dist/actor-store/preference/reader.d.ts.map +1 -1
  75. package/dist/actor-store/preference/util.d.ts.map +1 -1
  76. package/dist/actor-store/record/reader.d.ts.map +1 -1
  77. package/dist/actor-store/record/reader.js +17 -7
  78. package/dist/actor-store/record/reader.js.map +1 -1
  79. package/dist/actor-store/repo/sql-repo-reader.d.ts +1 -1
  80. package/dist/api/app/bsky/util/resolver.d.ts.map +1 -1
  81. package/dist/api/com/atproto/identity/signPlcOperation.js +17 -7
  82. package/dist/api/com/atproto/identity/signPlcOperation.js.map +1 -1
  83. package/dist/api/com/atproto/identity/submitPlcOperation.js +17 -7
  84. package/dist/api/com/atproto/identity/submitPlcOperation.js.map +1 -1
  85. package/dist/api/com/atproto/repo/describeRepo.js +17 -7
  86. package/dist/api/com/atproto/repo/describeRepo.js.map +1 -1
  87. package/dist/api/com/atproto/repo/importRepo.d.ts.map +1 -1
  88. package/dist/api/com/atproto/server/createAccount.js +17 -7
  89. package/dist/api/com/atproto/server/createAccount.js.map +1 -1
  90. package/dist/api/com/atproto/server/util.d.ts.map +1 -1
  91. package/dist/api/com/atproto/server/util.js +17 -7
  92. package/dist/api/com/atproto/server/util.js.map +1 -1
  93. package/dist/api/com/atproto/sync/getRecord.js +17 -7
  94. package/dist/api/com/atproto/sync/getRecord.js.map +1 -1
  95. package/dist/api/com/atproto/sync/getRepo.d.ts.map +1 -1
  96. package/dist/api/com/atproto/sync/util.d.ts.map +1 -1
  97. package/dist/api/proxy.d.ts.map +1 -1
  98. package/dist/auth-routes.d.ts.map +1 -1
  99. package/dist/auth-routes.js +2 -3
  100. package/dist/auth-routes.js.map +1 -1
  101. package/dist/auth-verifier.d.ts.map +1 -1
  102. package/dist/auth-verifier.js +19 -13
  103. package/dist/auth-verifier.js.map +1 -1
  104. package/dist/basic-routes.d.ts.map +1 -1
  105. package/dist/config/config.d.ts.map +1 -1
  106. package/dist/config/config.js +1 -1
  107. package/dist/config/config.js.map +1 -1
  108. package/dist/config/env.d.ts +1 -1
  109. package/dist/config/env.d.ts.map +1 -1
  110. package/dist/config/env.js +1 -1
  111. package/dist/config/env.js.map +1 -1
  112. package/dist/config/secrets.d.ts.map +1 -1
  113. package/dist/context.js +18 -8
  114. package/dist/context.js.map +1 -1
  115. package/dist/db/cast.d.ts +17 -13
  116. package/dist/db/cast.d.ts.map +1 -1
  117. package/dist/db/cast.js +13 -52
  118. package/dist/db/cast.js.map +1 -1
  119. package/dist/db/pagination.d.ts.map +1 -1
  120. package/dist/db/util.d.ts.map +1 -1
  121. package/dist/did-cache/db/index.d.ts.map +1 -1
  122. package/dist/disk-blobstore.d.ts.map +1 -1
  123. package/dist/handle/explicit-slurs.d.ts.map +1 -1
  124. package/dist/handle/index.d.ts.map +1 -1
  125. package/dist/index.js +17 -7
  126. package/dist/index.js.map +1 -1
  127. package/dist/lexicon/lexicons.d.ts +72 -0
  128. package/dist/lexicon/lexicons.d.ts.map +1 -1
  129. package/dist/lexicon/lexicons.js +37 -0
  130. package/dist/lexicon/lexicons.js.map +1 -1
  131. package/dist/lexicon/types/app/bsky/graph/verification.d.ts +19 -0
  132. package/dist/lexicon/types/app/bsky/graph/verification.d.ts.map +1 -0
  133. package/dist/lexicon/types/app/bsky/graph/verification.js +16 -0
  134. package/dist/lexicon/types/app/bsky/graph/verification.js.map +1 -0
  135. package/dist/lexicon/util.d.ts.map +1 -1
  136. package/dist/mailer/index.js +17 -7
  137. package/dist/mailer/index.js.map +1 -1
  138. package/dist/pipethrough.d.ts.map +1 -1
  139. package/dist/read-after-write/util.d.ts.map +1 -1
  140. package/dist/redis.d.ts.map +1 -1
  141. package/dist/repo/prepare.d.ts.map +1 -1
  142. package/dist/repo/prepare.js +17 -7
  143. package/dist/repo/prepare.js.map +1 -1
  144. package/dist/scripts/publish-identity.d.ts.map +1 -1
  145. package/dist/scripts/rebuild-repo.d.ts.map +1 -1
  146. package/dist/scripts/rotate-keys.d.ts.map +1 -1
  147. package/dist/scripts/sequencer-recovery/index.d.ts.map +1 -1
  148. package/dist/scripts/sequencer-recovery/recoverer.d.ts.map +1 -1
  149. package/dist/scripts/sequencer-recovery/recovery-db.d.ts.map +1 -1
  150. package/dist/scripts/sequencer-recovery/repair-repos.d.ts.map +1 -1
  151. package/dist/scripts/util.d.ts.map +1 -1
  152. package/dist/sequencer/db/index.d.ts.map +1 -1
  153. package/dist/sequencer/db/migrations/index.js +17 -7
  154. package/dist/sequencer/db/migrations/index.js.map +1 -1
  155. package/dist/sequencer/events.d.ts +6 -6
  156. package/dist/sequencer/events.d.ts.map +1 -1
  157. package/dist/sequencer/sequencer.d.ts.map +1 -1
  158. package/dist/util/debug.d.ts.map +1 -1
  159. package/dist/util/params.d.ts.map +1 -1
  160. package/dist/well-known.d.ts.map +1 -1
  161. package/package.json +6 -6
  162. package/src/account-manager/db/migrations/005-oauth-account-management.ts +112 -0
  163. package/src/account-manager/db/migrations/index.ts +2 -0
  164. package/src/account-manager/db/schema/account-device.ts +14 -0
  165. package/src/account-manager/db/schema/authorization-request.ts +5 -3
  166. package/src/account-manager/db/schema/authorized-client.ts +19 -0
  167. package/src/account-manager/db/schema/index.ts +5 -3
  168. package/src/account-manager/db/schema/token.ts +7 -4
  169. package/src/account-manager/helpers/account-device.ts +66 -0
  170. package/src/account-manager/helpers/authorization-request.ts +5 -5
  171. package/src/account-manager/helpers/authorized-client.ts +69 -0
  172. package/src/account-manager/helpers/device.ts +3 -1
  173. package/src/account-manager/helpers/token.ts +19 -57
  174. package/src/account-manager/oauth-store.ts +182 -103
  175. package/src/auth-routes.ts +11 -7
  176. package/src/auth-verifier.ts +2 -7
  177. package/src/config/config.ts +1 -1
  178. package/src/config/env.ts +2 -2
  179. package/src/context.ts +2 -2
  180. package/src/db/cast.ts +43 -50
  181. package/src/lexicon/lexicons.ts +40 -0
  182. package/src/lexicon/types/app/bsky/graph/verification.ts +38 -0
  183. package/tests/db.test.ts +2 -1
  184. package/tsconfig.build.tsbuildinfo +1 -1
  185. package/tsconfig.tests.tsbuildinfo +1 -1
  186. package/dist/account-manager/db/schema/device-account.d.ts +0 -14
  187. package/dist/account-manager/db/schema/device-account.d.ts.map +0 -1
  188. package/dist/account-manager/db/schema/device-account.js.map +0 -1
  189. package/dist/account-manager/helpers/device-account.d.ts +0 -108
  190. package/dist/account-manager/helpers/device-account.d.ts.map +0 -1
  191. package/dist/account-manager/helpers/device-account.js +0 -83
  192. package/dist/account-manager/helpers/device-account.js.map +0 -1
  193. package/src/account-manager/db/schema/device-account.ts +0 -15
  194. package/src/account-manager/helpers/device-account.ts +0 -135
@@ -1,135 +0,0 @@
1
- import { Insertable, Selectable } from 'kysely'
2
- import {
3
- Account,
4
- DeviceAccountInfo,
5
- DeviceId,
6
- OAuthClientId,
7
- } from '@atproto/oauth-provider'
8
- import { fromDateISO, fromJsonArray, toDateISO, toJsonArray } from '../../db'
9
- import { AccountDb } from '../db'
10
- import { DeviceAccount } from '../db/schema/device-account'
11
- import { ActorAccount, selectAccountQB } from './account'
12
-
13
- export type SelectableDeviceAccount = Pick<
14
- Selectable<DeviceAccount>,
15
- 'authenticatedAt' | 'authorizedClients' | 'remember'
16
- >
17
-
18
- const selectAccountInfoQB = (db: AccountDb, deviceId: DeviceId) =>
19
- selectAccountQB(db, { includeDeactivated: true })
20
- // note: query planner should use "device_account_pk" index
21
- .innerJoin('device_account', 'device_account.did', 'actor.did')
22
- .innerJoin('device', 'device.id', 'device_account.deviceId')
23
- .where('device.id', '=', deviceId)
24
- .select([
25
- 'device_account.authenticatedAt',
26
- 'device_account.remember',
27
- 'device_account.authorizedClients',
28
- ])
29
-
30
- export type InsertableField = {
31
- authenticatedAt: Date
32
- authorizedClients: OAuthClientId[]
33
- remember: boolean
34
- }
35
-
36
- function toInsertable<V extends Partial<InsertableField>>(
37
- values: V,
38
- ): Pick<Insertable<DeviceAccount>, keyof V & keyof Insertable<DeviceAccount>>
39
- function toInsertable(
40
- values: Partial<InsertableField>,
41
- ): Partial<Insertable<DeviceAccount>> {
42
- const row: Partial<Insertable<DeviceAccount>> = {}
43
- if (values.authenticatedAt) {
44
- row.authenticatedAt = toDateISO(values.authenticatedAt)
45
- }
46
- if (values.remember !== undefined) {
47
- row.remember = values.remember === true ? 1 : 0
48
- }
49
- if (values.authorizedClients) {
50
- row.authorizedClients = toJsonArray(values.authorizedClients)
51
- }
52
- return row
53
- }
54
-
55
- export function toDeviceAccountInfo(
56
- row: SelectableDeviceAccount,
57
- ): DeviceAccountInfo {
58
- return {
59
- remembered: row.remember === 1,
60
- authenticatedAt: fromDateISO(row.authenticatedAt),
61
- authorizedClients: fromJsonArray<OAuthClientId>(row.authorizedClients),
62
- }
63
- }
64
-
65
- export function toAccount(
66
- row: Selectable<ActorAccount>,
67
- audience: string,
68
- ): Account {
69
- return {
70
- sub: row.did,
71
- aud: audience,
72
- email: row.email || undefined,
73
- email_verified: row.email ? row.emailConfirmedAt != null : undefined,
74
- preferred_username: row.handle || undefined,
75
- }
76
- }
77
-
78
- export const readQB = (db: AccountDb, deviceId: DeviceId, did: string) =>
79
- db.db
80
- .selectFrom('device_account')
81
- .where('did', '=', did)
82
- .where('deviceId', '=', deviceId)
83
- .select(['remember', 'authorizedClients', 'authenticatedAt'])
84
-
85
- export const updateQB = (
86
- db: AccountDb,
87
- deviceId: DeviceId,
88
- did: string,
89
- entry: {
90
- authenticatedAt?: Date
91
- authorizedClients?: OAuthClientId[]
92
- remember?: boolean
93
- },
94
- ) =>
95
- db.db
96
- .updateTable('device_account')
97
- .set(toInsertable(entry))
98
- .where('did', '=', did)
99
- .where('deviceId', '=', deviceId)
100
-
101
- export const createOrUpdateQB = (
102
- db: AccountDb,
103
- deviceId: DeviceId,
104
- did: string,
105
- remember: boolean,
106
- ) => {
107
- const { authorizedClients, ...values } = toInsertable({
108
- remember,
109
- authenticatedAt: new Date(),
110
- authorizedClients: [],
111
- })
112
-
113
- return db.db
114
- .insertInto('device_account')
115
- .values({ did, deviceId, authorizedClients, ...values })
116
- .onConflict((oc) => oc.columns(['deviceId', 'did']).doUpdateSet(values))
117
- .returning(['remember', 'authorizedClients', 'authenticatedAt'])
118
- }
119
-
120
- export const getAccountInfoQB = (
121
- db: AccountDb,
122
- deviceId: DeviceId,
123
- did: string,
124
- ) => {
125
- return selectAccountInfoQB(db, deviceId).where('actor.did', '=', did)
126
- }
127
-
128
- export const listRememberedQB = (db: AccountDb, deviceId: DeviceId) =>
129
- selectAccountInfoQB(db, deviceId).where('device_account.remember', '=', 1)
130
-
131
- export const removeQB = (db: AccountDb, deviceId: DeviceId, did: string) =>
132
- db.db
133
- .deleteFrom('device_account')
134
- .where('deviceId', '=', deviceId)
135
- .where('did', '=', did)