@arcblock/did-connect-service 4.1.61 → 4.1.63
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/dist/_generated/asset-bytes.js +1 -1
- package/dist/_generated/asset-manifest.js +2 -2
- package/dist/assets/{admin-core.bcfa7ce2.js → admin-core.bbd8d53c.js} +963 -194
- package/dist/assets/{admin.bd6c819b.css → admin.7b66e78d.css} +160 -7
- package/dist/blocklet-service-rpc.js +4 -4
- package/dist/blocklet-service-rpc.js.map +1 -1
- package/dist/handler-errors.d.ts +14 -8
- package/dist/handler-errors.d.ts.map +1 -1
- package/dist/handler-errors.js +15 -8
- package/dist/handler-errors.js.map +1 -1
- package/dist/handlers/account-merge-handler.d.ts +32 -5
- package/dist/handlers/account-merge-handler.d.ts.map +1 -1
- package/dist/handlers/account-merge-handler.js +155 -19
- package/dist/handlers/account-merge-handler.js.map +1 -1
- package/dist/handlers/auth-handler.d.ts.map +1 -1
- package/dist/handlers/auth-handler.js +11 -6
- package/dist/handlers/auth-handler.js.map +1 -1
- package/dist/handlers/did-connect-handler.d.ts +2 -2
- package/dist/handlers/did-connect-handler.d.ts.map +1 -1
- package/dist/handlers/did-connect-handler.js +9 -14
- package/dist/handlers/did-connect-handler.js.map +1 -1
- package/dist/handlers/email-login-handler.d.ts.map +1 -1
- package/dist/handlers/email-login-handler.js +15 -10
- package/dist/handlers/email-login-handler.js.map +1 -1
- package/dist/handlers/oauth-handler.d.ts +2 -0
- package/dist/handlers/oauth-handler.d.ts.map +1 -1
- package/dist/handlers/oauth-handler.js +71 -22
- package/dist/handlers/oauth-handler.js.map +1 -1
- package/dist/handlers/passkey-handler.d.ts +8 -2
- package/dist/handlers/passkey-handler.d.ts.map +1 -1
- package/dist/handlers/passkey-handler.js +27 -18
- package/dist/handlers/passkey-handler.js.map +1 -1
- package/dist/handlers/team-handler.js +2 -2
- package/dist/handlers/team-handler.js.map +1 -1
- package/dist/http/security-headers.d.ts +38 -0
- package/dist/http/security-headers.d.ts.map +1 -0
- package/dist/http/security-headers.js +67 -0
- package/dist/http/security-headers.js.map +1 -0
- package/dist/identity/session-epoch.d.ts +11 -0
- package/dist/identity/session-epoch.d.ts.map +1 -1
- package/dist/identity/session-epoch.js +12 -0
- package/dist/identity/session-epoch.js.map +1 -1
- package/dist/pages/admin/i18n.d.ts.map +1 -1
- package/dist/pages/admin/i18n.js +271 -47
- package/dist/pages/admin/i18n.js.map +1 -1
- package/dist/pages/admin/merge-confirm-view.d.ts +75 -18
- package/dist/pages/admin/merge-confirm-view.d.ts.map +1 -1
- package/dist/pages/admin/merge-confirm-view.js +304 -72
- package/dist/pages/admin/merge-confirm-view.js.map +1 -1
- package/dist/pages/admin/merge-method-picker.d.ts +34 -3
- package/dist/pages/admin/merge-method-picker.d.ts.map +1 -1
- package/dist/pages/admin/merge-method-picker.js +188 -14
- package/dist/pages/admin/merge-method-picker.js.map +1 -1
- package/dist/pages/admin/styles.d.ts.map +1 -1
- package/dist/pages/admin/styles.js +160 -7
- package/dist/pages/admin/styles.js.map +1 -1
- package/dist/pages/admin/tab-profile-accounts.d.ts.map +1 -1
- package/dist/pages/admin/tab-profile-accounts.js +490 -114
- package/dist/pages/admin/tab-profile-accounts.js.map +1 -1
- package/dist/pages/oauth-callback-page.d.ts +14 -0
- package/dist/pages/oauth-callback-page.d.ts.map +1 -1
- package/dist/pages/oauth-callback-page.js +35 -3
- package/dist/pages/oauth-callback-page.js.map +1 -1
- package/dist/store/account-merge.d.ts +139 -3
- package/dist/store/account-merge.d.ts.map +1 -1
- package/dist/store/account-merge.js +381 -11
- package/dist/store/account-merge.js.map +1 -1
- package/dist/store/d1-store.d.ts +20 -3
- package/dist/store/d1-store.d.ts.map +1 -1
- package/dist/store/d1-store.js +37 -26
- package/dist/store/d1-store.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,8 +11,8 @@ export const MERGE_INTENT_TTL_MS = 10 * 60 * 1000;
|
|
|
11
11
|
export const MERGE_START_CACHE_PREFIX = "merge-start:";
|
|
12
12
|
/** Refuse a single merge batch that would monopolize D1 (#174). */
|
|
13
13
|
export const MERGE_BATCH_MAX_STATEMENTS = 800;
|
|
14
|
-
/** Fixed statements in every merge batch: alias insert, flatten, revoke A, revoke B, mark A, bump B. */
|
|
15
|
-
export const MERGE_BATCH_FIXED_STATEMENTS =
|
|
14
|
+
/** Fixed statements in every merge batch: alias insert, flatten, revoke A, revoke B, mark A, bump B, survivor role, source role. */
|
|
15
|
+
export const MERGE_BATCH_FIXED_STATEMENTS = 8;
|
|
16
16
|
export const MERGE_TOO_LARGE_ERROR = "Merge touches too many rows; split the accounts or handle this merge manually";
|
|
17
17
|
/** Stable host-side warning codes. User copy lives in i18n.ts (#189). */
|
|
18
18
|
export const MERGE_HOST_WARNINGS = ["blocklet-owner-clash", "external-token-rebind"];
|
|
@@ -30,6 +30,369 @@ export function didSpacePointer(fromDid) {
|
|
|
30
30
|
export function higherRole(a, b) {
|
|
31
31
|
return roleLevel(a) >= roleLevel(b) ? a : b;
|
|
32
32
|
}
|
|
33
|
+
/** NULL or blank global role is guest before compare. The stored string is kept when it is non-blank. */
|
|
34
|
+
export function coalesceGlobalRole(role) {
|
|
35
|
+
if (typeof role === "string" && role.trim() !== "")
|
|
36
|
+
return role;
|
|
37
|
+
return "guest";
|
|
38
|
+
}
|
|
39
|
+
/** Survivor's global role after merge. Equal levels keep the survivor's coalesced value (`higherRole` returns its first argument). */
|
|
40
|
+
export function survivorGlobalRole(survivorRole, otherRole) {
|
|
41
|
+
return higherRole(coalesceGlobalRole(survivorRole), coalesceGlobalRole(otherRole));
|
|
42
|
+
}
|
|
43
|
+
/** Null when the survivor's effective global role does not change. */
|
|
44
|
+
export function globalRoleChange(survivorRole, otherRole) {
|
|
45
|
+
const before = coalesceGlobalRole(survivorRole);
|
|
46
|
+
const after = survivorGlobalRole(survivorRole, otherRole);
|
|
47
|
+
if (before === after)
|
|
48
|
+
return null;
|
|
49
|
+
return { before, after };
|
|
50
|
+
}
|
|
51
|
+
export function parseMergeKeep(value) {
|
|
52
|
+
if (value === undefined)
|
|
53
|
+
return "missing";
|
|
54
|
+
if (value === "session" || value === "proved")
|
|
55
|
+
return value;
|
|
56
|
+
return "invalid";
|
|
57
|
+
}
|
|
58
|
+
/** `session` is the intent's into DID (the caller). `proved` swaps that pair for the snapshot and the commit. */
|
|
59
|
+
export function directedMergeDids(intent, keep) {
|
|
60
|
+
const sessionDid = intent.intoDid;
|
|
61
|
+
const provedDid = intent.fromDid;
|
|
62
|
+
if (keep === "proved") {
|
|
63
|
+
return { fromDid: sessionDid, intoDid: provedDid, sessionDid, provedDid };
|
|
64
|
+
}
|
|
65
|
+
return { fromDid: provedDid, intoDid: sessionDid, sessionDid, provedDid };
|
|
66
|
+
}
|
|
67
|
+
const WALLET_MERGE_PROVIDERS = new Set(["wallet", "did-connect"]);
|
|
68
|
+
/** `wallet` and `did-connect` collapse to `wallet`. Other provider names are kept. #320 should use this. */
|
|
69
|
+
export function normalizeMergeMethod(provider) {
|
|
70
|
+
const name = provider.trim();
|
|
71
|
+
if (WALLET_MERGE_PROVIDERS.has(name))
|
|
72
|
+
return "wallet";
|
|
73
|
+
return name;
|
|
74
|
+
}
|
|
75
|
+
/** First-seen order, after {@link normalizeMergeMethod}. Empty names are dropped. */
|
|
76
|
+
export function dedupeMergeMethods(providers) {
|
|
77
|
+
const out = [];
|
|
78
|
+
const seen = new Set();
|
|
79
|
+
for (const provider of providers) {
|
|
80
|
+
const method = normalizeMergeMethod(provider);
|
|
81
|
+
if (!method || seen.has(method))
|
|
82
|
+
continue;
|
|
83
|
+
seen.add(method);
|
|
84
|
+
out.push(method);
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/** Distinct login methods. Providers are ordered by name, then normalized. */
|
|
89
|
+
export async function listMergeMethods(db, userDid) {
|
|
90
|
+
const rows = await db
|
|
91
|
+
.prepare("SELECT DISTINCT provider FROM cs_connected_accounts WHERE userDid = ? ORDER BY provider")
|
|
92
|
+
.bind(userDid)
|
|
93
|
+
.all();
|
|
94
|
+
return dedupeMergeMethods((rows.results ?? []).map((row) => row.provider));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* True when a login credential's DID is the user DID and its provider is
|
|
98
|
+
* `wallet` or `did-connect`.
|
|
99
|
+
*/
|
|
100
|
+
export async function isWalletUserDid(db, userDid) {
|
|
101
|
+
if (!userDid)
|
|
102
|
+
return false;
|
|
103
|
+
const row = await db
|
|
104
|
+
.prepare(`SELECT 1 AS ok FROM cs_connected_accounts
|
|
105
|
+
WHERE userDid = ? AND did = ? AND provider IN ('wallet', 'did-connect')
|
|
106
|
+
LIMIT 1`)
|
|
107
|
+
.bind(userDid, userDid)
|
|
108
|
+
.first();
|
|
109
|
+
return Boolean(row);
|
|
110
|
+
}
|
|
111
|
+
/** Active handle on this DID, or null. Does not follow `mergedInto`. */
|
|
112
|
+
export async function getActiveHandleName(db, did) {
|
|
113
|
+
const row = await db
|
|
114
|
+
.prepare("SELECT handle FROM cs_handles WHERE did = ? AND status = 'active' LIMIT 1")
|
|
115
|
+
.bind(did)
|
|
116
|
+
.first();
|
|
117
|
+
return row?.handle ?? null;
|
|
118
|
+
}
|
|
119
|
+
/** Instance membership roles for this user. Order is not significant. */
|
|
120
|
+
export async function listMembershipRoles(db, userDid) {
|
|
121
|
+
const rows = await db
|
|
122
|
+
.prepare("SELECT role FROM cs_memberships WHERE user_did = ?")
|
|
123
|
+
.bind(userDid)
|
|
124
|
+
.all();
|
|
125
|
+
return (rows.results ?? []).map((row) => row.role);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Both rows are unmerged, email-verified, and share `lower(trim(email))`.
|
|
129
|
+
* The candidate list uses the same email match but only requires the other
|
|
130
|
+
* account's `mergedInto IS NULL` (the caller's own mergedInto is not checked).
|
|
131
|
+
*/
|
|
132
|
+
export async function verifiedEmailsMatchForMerge(db, didA, didB) {
|
|
133
|
+
if (!didA || !didB || didA === didB)
|
|
134
|
+
return false;
|
|
135
|
+
const row = await db
|
|
136
|
+
.prepare(`SELECT 1 AS ok
|
|
137
|
+
FROM cs_users a
|
|
138
|
+
JOIN cs_users b ON a.did <> b.did
|
|
139
|
+
WHERE a.did = ?
|
|
140
|
+
AND b.did = ?
|
|
141
|
+
AND a.mergedInto IS NULL
|
|
142
|
+
AND b.mergedInto IS NULL
|
|
143
|
+
AND a.emailVerified = 1
|
|
144
|
+
AND b.emailVerified = 1
|
|
145
|
+
AND a.email IS NOT NULL
|
|
146
|
+
AND b.email IS NOT NULL
|
|
147
|
+
AND trim(a.email) <> ''
|
|
148
|
+
AND trim(b.email) <> ''
|
|
149
|
+
AND lower(trim(a.email)) = lower(trim(b.email))
|
|
150
|
+
LIMIT 1`)
|
|
151
|
+
.bind(didA, didB)
|
|
152
|
+
.first();
|
|
153
|
+
return Boolean(row);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Shared email match for the boolean probe and the candidate list.
|
|
157
|
+
* `me` is the session user. `cand.mergedInto` must be null; `me.mergedInto` is not filtered.
|
|
158
|
+
*/
|
|
159
|
+
const VERIFIED_EMAIL_MERGE_CANDIDATE_SQL = `
|
|
160
|
+
SELECT cand.did AS did,
|
|
161
|
+
cand.createdAt AS createdAt,
|
|
162
|
+
cand.lastLoginAt AS lastLoginAt,
|
|
163
|
+
lower(trim(me.email)) AS sharedEmail
|
|
164
|
+
FROM cs_users me
|
|
165
|
+
JOIN cs_users cand
|
|
166
|
+
ON cand.did <> me.did
|
|
167
|
+
AND cand.mergedInto IS NULL
|
|
168
|
+
AND cand.emailVerified = 1
|
|
169
|
+
AND cand.email IS NOT NULL
|
|
170
|
+
AND trim(cand.email) <> ''
|
|
171
|
+
AND lower(trim(cand.email)) = lower(trim(me.email))
|
|
172
|
+
WHERE me.did = ?
|
|
173
|
+
AND me.emailVerified = 1
|
|
174
|
+
AND me.email IS NOT NULL
|
|
175
|
+
AND trim(me.email) <> ''
|
|
176
|
+
ORDER BY cand.lastLoginAt DESC, cand.did ASC
|
|
177
|
+
`;
|
|
178
|
+
async function selectVerifiedEmailMergeCandidates(db, selfDid, limit) {
|
|
179
|
+
if (!selfDid || limit <= 0)
|
|
180
|
+
return [];
|
|
181
|
+
const rows = await db
|
|
182
|
+
.prepare(`${VERIFIED_EMAIL_MERGE_CANDIDATE_SQL} LIMIT ?`)
|
|
183
|
+
.bind(selfDid, limit)
|
|
184
|
+
.all();
|
|
185
|
+
return rows.results ?? [];
|
|
186
|
+
}
|
|
187
|
+
/** True iff another unmerged user shares `selfDid`'s verified email. `LIMIT 1`. */
|
|
188
|
+
export async function hasVerifiedEmailMergeCandidate(db, selfDid) {
|
|
189
|
+
const rows = await selectVerifiedEmailMergeCandidates(db, selfDid, 1);
|
|
190
|
+
return rows.length > 0;
|
|
191
|
+
}
|
|
192
|
+
export const MERGE_CANDIDATE_LIST_LIMIT = 5;
|
|
193
|
+
/**
|
|
194
|
+
* Up to {@link MERGE_CANDIDATE_LIST_LIMIT} other accounts that share `selfDid`'s
|
|
195
|
+
* verified email, newest `lastLoginAt` first. `email` is `lower(trim(self.email))`.
|
|
196
|
+
* Returns null when there is no candidate (and then no email).
|
|
197
|
+
*/
|
|
198
|
+
export async function listVerifiedEmailMergeCandidates(db, selfDid) {
|
|
199
|
+
const rows = await selectVerifiedEmailMergeCandidates(db, selfDid, MERGE_CANDIDATE_LIST_LIMIT);
|
|
200
|
+
const email = rows[0]?.sharedEmail;
|
|
201
|
+
if (!email || rows.length === 0)
|
|
202
|
+
return null;
|
|
203
|
+
const emailId = `email|${email}`;
|
|
204
|
+
const candidates = await Promise.all(rows.map(async (row) => {
|
|
205
|
+
const [methods, cred] = await Promise.all([
|
|
206
|
+
listMergeMethods(db, row.did),
|
|
207
|
+
db
|
|
208
|
+
.prepare(`SELECT 1 AS ok FROM cs_connected_accounts
|
|
209
|
+
WHERE userDid = ? AND provider = 'email' AND id = ?
|
|
210
|
+
LIMIT 1`)
|
|
211
|
+
.bind(row.did, emailId)
|
|
212
|
+
.first(),
|
|
213
|
+
]);
|
|
214
|
+
return {
|
|
215
|
+
did: row.did,
|
|
216
|
+
createdAt: row.createdAt ?? null,
|
|
217
|
+
lastLoginAt: row.lastLoginAt ?? null,
|
|
218
|
+
methods,
|
|
219
|
+
hasEmailCredential: Boolean(cred),
|
|
220
|
+
};
|
|
221
|
+
}));
|
|
222
|
+
return { email, candidates };
|
|
223
|
+
}
|
|
224
|
+
export async function loadMergeSideAccount(db, did) {
|
|
225
|
+
const user = await db
|
|
226
|
+
.prepare("SELECT did, fullName, role, createdAt, lastLoginAt FROM cs_users WHERE did = ?")
|
|
227
|
+
.bind(did)
|
|
228
|
+
.first();
|
|
229
|
+
if (!user)
|
|
230
|
+
return null;
|
|
231
|
+
const [methods, handle, walletDid] = await Promise.all([
|
|
232
|
+
listMergeMethods(db, did),
|
|
233
|
+
getActiveHandleName(db, did),
|
|
234
|
+
isWalletUserDid(db, did),
|
|
235
|
+
]);
|
|
236
|
+
return {
|
|
237
|
+
did: user.did,
|
|
238
|
+
methods,
|
|
239
|
+
createdAt: user.createdAt ?? null,
|
|
240
|
+
lastLoginAt: user.lastLoginAt ?? null,
|
|
241
|
+
globalRole: coalesceGlobalRole(user.role),
|
|
242
|
+
fullName: user.fullName ?? null,
|
|
243
|
+
handle,
|
|
244
|
+
walletDid,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Display name for a membership row: `app:name`, then `app:branding.name`,
|
|
249
|
+
* then the first `cs_instance_hosts.host`. Missing data is null — never the
|
|
250
|
+
* instance DID (dry-run must not leak it).
|
|
251
|
+
*/
|
|
252
|
+
export async function loadMergeInstanceNames(db, instanceDids) {
|
|
253
|
+
const ids = [...new Set(instanceDids.filter((id) => typeof id === "string" && id.length > 0))];
|
|
254
|
+
const names = new Map();
|
|
255
|
+
for (const id of ids)
|
|
256
|
+
names.set(id, null);
|
|
257
|
+
if (ids.length === 0)
|
|
258
|
+
return names;
|
|
259
|
+
const placeholders = ids.map(() => "?").join(", ");
|
|
260
|
+
const settings = await db
|
|
261
|
+
.prepare(`SELECT instance_did, key, value FROM cs_settings
|
|
262
|
+
WHERE instance_did IN (${placeholders}) AND key IN ('app:name', 'app:branding')`)
|
|
263
|
+
.bind(...ids)
|
|
264
|
+
.all();
|
|
265
|
+
const appName = new Map();
|
|
266
|
+
const brandingName = new Map();
|
|
267
|
+
for (const row of settings.results ?? []) {
|
|
268
|
+
if (row.key === "app:name" && row.value?.trim()) {
|
|
269
|
+
appName.set(row.instance_did, row.value.trim());
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
if (row.key !== "app:branding" || !row.value)
|
|
273
|
+
continue;
|
|
274
|
+
try {
|
|
275
|
+
const parsed = JSON.parse(row.value);
|
|
276
|
+
if (typeof parsed.name === "string" && parsed.name.trim()) {
|
|
277
|
+
brandingName.set(row.instance_did, parsed.name.trim());
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// Invalid branding JSON falls through to the host.
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const hosts = await db
|
|
285
|
+
.prepare(`SELECT instance_did, host FROM cs_instance_hosts
|
|
286
|
+
WHERE instance_did IN (${placeholders})
|
|
287
|
+
ORDER BY host`)
|
|
288
|
+
.bind(...ids)
|
|
289
|
+
.all();
|
|
290
|
+
const hostName = new Map();
|
|
291
|
+
for (const row of hosts.results ?? []) {
|
|
292
|
+
if (!hostName.has(row.instance_did) && row.host)
|
|
293
|
+
hostName.set(row.instance_did, row.host);
|
|
294
|
+
}
|
|
295
|
+
for (const id of ids) {
|
|
296
|
+
names.set(id, appName.get(id) ?? brandingName.get(id) ?? hostName.get(id) ?? null);
|
|
297
|
+
}
|
|
298
|
+
return names;
|
|
299
|
+
}
|
|
300
|
+
function maxMembershipLevel(roles) {
|
|
301
|
+
let max = 0;
|
|
302
|
+
for (const role of roles)
|
|
303
|
+
max = Math.max(max, roleLevel(role));
|
|
304
|
+
return max;
|
|
305
|
+
}
|
|
306
|
+
function hasActiveHandle(handle) {
|
|
307
|
+
return typeof handle === "string" && handle.length > 0;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* First rule that distinguishes the two proved accounts wins.
|
|
311
|
+
* `recommendReasons` contains that one code, or is empty when every rule ties
|
|
312
|
+
* and the recommendation is `session`.
|
|
313
|
+
*/
|
|
314
|
+
export function recommendMergeKeep(input) {
|
|
315
|
+
const sessionLevel = roleLevel(coalesceGlobalRole(input.session.globalRole));
|
|
316
|
+
const provedLevel = roleLevel(coalesceGlobalRole(input.proved.globalRole));
|
|
317
|
+
if (sessionLevel !== provedLevel) {
|
|
318
|
+
return {
|
|
319
|
+
recommendedKeep: sessionLevel > provedLevel ? "session" : "proved",
|
|
320
|
+
recommendReasons: ["global-role"],
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
const sessionInstance = maxMembershipLevel(input.session.membershipRoles);
|
|
324
|
+
const provedInstance = maxMembershipLevel(input.proved.membershipRoles);
|
|
325
|
+
if (sessionInstance !== provedInstance) {
|
|
326
|
+
return {
|
|
327
|
+
recommendedKeep: sessionInstance > provedInstance ? "session" : "proved",
|
|
328
|
+
recommendReasons: ["instance-role"],
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
const sessionHandle = hasActiveHandle(input.session.handle);
|
|
332
|
+
const provedHandle = hasActiveHandle(input.proved.handle);
|
|
333
|
+
if (sessionHandle !== provedHandle) {
|
|
334
|
+
return {
|
|
335
|
+
recommendedKeep: sessionHandle ? "session" : "proved",
|
|
336
|
+
recommendReasons: ["handle"],
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
if (input.session.walletDid !== input.proved.walletDid) {
|
|
340
|
+
return {
|
|
341
|
+
recommendedKeep: input.session.walletDid ? "session" : "proved",
|
|
342
|
+
recommendReasons: ["wallet-did"],
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
const sessionCreated = input.session.createdAt ? Date.parse(input.session.createdAt) : Number.NaN;
|
|
346
|
+
const provedCreated = input.proved.createdAt ? Date.parse(input.proved.createdAt) : Number.NaN;
|
|
347
|
+
if (Number.isFinite(sessionCreated) && Number.isFinite(provedCreated) && sessionCreated !== provedCreated) {
|
|
348
|
+
return {
|
|
349
|
+
recommendedKeep: sessionCreated < provedCreated ? "session" : "proved",
|
|
350
|
+
recommendReasons: ["older"],
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
return { recommendedKeep: "session", recommendReasons: [] };
|
|
354
|
+
}
|
|
355
|
+
/** Survivor's existing methods, then moved credential providers, normalized and de-duplicated. */
|
|
356
|
+
export function survivorMethodsFor(intoMethods, movedProviders) {
|
|
357
|
+
return dedupeMergeMethods([...intoMethods, ...movedProviders]);
|
|
358
|
+
}
|
|
359
|
+
export async function assembleMergeDryRun(db, input) {
|
|
360
|
+
const [session, proved, sessionRoles, provedRoles, matchesCandidate] = await Promise.all([
|
|
361
|
+
loadMergeSideAccount(db, input.sessionDid),
|
|
362
|
+
loadMergeSideAccount(db, input.provedDid),
|
|
363
|
+
listMembershipRoles(db, input.sessionDid),
|
|
364
|
+
listMembershipRoles(db, input.provedDid),
|
|
365
|
+
verifiedEmailsMatchForMerge(db, input.sessionDid, input.provedDid),
|
|
366
|
+
]);
|
|
367
|
+
if (!session || !proved)
|
|
368
|
+
return null;
|
|
369
|
+
const recommendation = recommendMergeKeep({
|
|
370
|
+
session: { ...session, membershipRoles: sessionRoles },
|
|
371
|
+
proved: { ...proved, membershipRoles: provedRoles },
|
|
372
|
+
});
|
|
373
|
+
const instanceNames = await loadMergeInstanceNames(db, [
|
|
374
|
+
...input.snapshot.memberships.moved.map((row) => row.instanceDid),
|
|
375
|
+
...input.snapshot.memberships.merged.map((row) => row.instanceDid),
|
|
376
|
+
]);
|
|
377
|
+
const fromAccount = input.keep === "proved" ? session : proved;
|
|
378
|
+
const intoAccount = input.keep === "proved" ? proved : session;
|
|
379
|
+
const plan = toMergeConfirmPlan(input.snapshot, instanceNames);
|
|
380
|
+
return {
|
|
381
|
+
...plan,
|
|
382
|
+
keep: input.keep,
|
|
383
|
+
recommendedKeep: recommendation.recommendedKeep,
|
|
384
|
+
recommendReasons: recommendation.recommendReasons,
|
|
385
|
+
accounts: { session, proved },
|
|
386
|
+
survivorMethods: survivorMethodsFor(intoAccount.methods, input.snapshot.credentials.map((row) => row.provider)),
|
|
387
|
+
matchesCandidate,
|
|
388
|
+
movedMemberships: input.snapshot.memberships.moved.map((row) => ({
|
|
389
|
+
instanceName: instanceNames.get(row.instanceDid) ?? null,
|
|
390
|
+
role: row.role,
|
|
391
|
+
})),
|
|
392
|
+
globalRoleChange: globalRoleChange(input.snapshot.globalRoles.intoRole, input.snapshot.globalRoles.fromRole),
|
|
393
|
+
mergedHandle: fromAccount.handle,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
33
396
|
export async function createMergeStartChallenge() {
|
|
34
397
|
const challenge = randomToken();
|
|
35
398
|
const tokenHash = await hashRefreshToken(challenge);
|
|
@@ -66,16 +429,14 @@ export function intentIsUsable(intent, now = Date.now()) {
|
|
|
66
429
|
return "ok";
|
|
67
430
|
}
|
|
68
431
|
export async function consumeMergeIntent(db, tokenHash, usedAt) {
|
|
69
|
-
|
|
432
|
+
// Two callers can share one ISO millisecond. Success is this UPDATE changing a row,
|
|
433
|
+
// not `usedAt` equaling the stored timestamp after the fact.
|
|
434
|
+
const result = await db
|
|
70
435
|
.prepare(`UPDATE cs_merge_intents SET usedAt = ?
|
|
71
436
|
WHERE tokenHash = ? AND usedAt IS NULL AND expiresAt > ?`)
|
|
72
437
|
.bind(usedAt, tokenHash, usedAt)
|
|
73
438
|
.run();
|
|
74
|
-
|
|
75
|
-
.prepare("SELECT usedAt FROM cs_merge_intents WHERE tokenHash = ?")
|
|
76
|
-
.bind(tokenHash)
|
|
77
|
-
.first();
|
|
78
|
-
return row?.usedAt === usedAt;
|
|
439
|
+
return result.meta.changes > 0;
|
|
79
440
|
}
|
|
80
441
|
async function listConnected(db, userDid) {
|
|
81
442
|
const rows = await db
|
|
@@ -114,11 +475,11 @@ export async function buildMergeSnapshot(db, fromDid, intoDid) {
|
|
|
114
475
|
listAccessKeysByCreator(db, fromDid),
|
|
115
476
|
listAliasesPointingAt(db, fromDid),
|
|
116
477
|
db
|
|
117
|
-
.prepare("SELECT primaryCredentialDid, passkeyCount FROM cs_users WHERE did = ?")
|
|
478
|
+
.prepare("SELECT primaryCredentialDid, passkeyCount, role FROM cs_users WHERE did = ?")
|
|
118
479
|
.bind(fromDid)
|
|
119
480
|
.first(),
|
|
120
481
|
db
|
|
121
|
-
.prepare("SELECT passkeyCount FROM cs_users WHERE did = ?")
|
|
482
|
+
.prepare("SELECT passkeyCount, role FROM cs_users WHERE did = ?")
|
|
122
483
|
.bind(intoDid)
|
|
123
484
|
.first(),
|
|
124
485
|
]);
|
|
@@ -191,6 +552,10 @@ export async function buildMergeSnapshot(db, fromDid, intoDid) {
|
|
|
191
552
|
fromPasskeyCount: Number(fromUser?.passkeyCount ?? 0),
|
|
192
553
|
intoPasskeyCount: Number(intoUser?.passkeyCount ?? 0),
|
|
193
554
|
movedPasskeyCount,
|
|
555
|
+
globalRoles: {
|
|
556
|
+
fromRole: fromUser?.role ?? null,
|
|
557
|
+
intoRole: intoUser?.role ?? null,
|
|
558
|
+
},
|
|
194
559
|
};
|
|
195
560
|
}
|
|
196
561
|
export function toMergePlanView(snapshot) {
|
|
@@ -222,7 +587,7 @@ export function countMergeStatements(snapshot) {
|
|
|
222
587
|
snapshot.accessKeys.length +
|
|
223
588
|
MERGE_BATCH_FIXED_STATEMENTS);
|
|
224
589
|
}
|
|
225
|
-
export function toMergeConfirmPlan(snapshot) {
|
|
590
|
+
export function toMergeConfirmPlan(snapshot, instanceNames) {
|
|
226
591
|
return {
|
|
227
592
|
fromDid: snapshot.fromDid,
|
|
228
593
|
intoDid: snapshot.intoDid,
|
|
@@ -239,6 +604,7 @@ export function toMergeConfirmPlan(snapshot) {
|
|
|
239
604
|
fromRole: row.fromRole,
|
|
240
605
|
intoRoleBefore: row.intoRoleBefore,
|
|
241
606
|
keptRole: row.keptRole,
|
|
607
|
+
instanceName: instanceNames?.get(row.instanceDid) ?? null,
|
|
242
608
|
})),
|
|
243
609
|
accessKeyCount: snapshot.accessKeys.length,
|
|
244
610
|
aliasCreatedCount: snapshot.aliasesCreated.length,
|
|
@@ -304,6 +670,10 @@ export async function commitMergeBatch(db, snapshot, now) {
|
|
|
304
670
|
WHERE did = ?`)
|
|
305
671
|
.bind(intoDid, now, JSON.stringify(snapshot), fromPasskey, now, fromDid));
|
|
306
672
|
stmts.push(db.prepare("UPDATE cs_users SET passkeyCount = ?, updatedAt = ? WHERE did = ?").bind(intoPasskey, now, intoDid));
|
|
673
|
+
stmts.push(db
|
|
674
|
+
.prepare("UPDATE cs_users SET role = ?, updatedAt = ? WHERE did = ?")
|
|
675
|
+
.bind(survivorGlobalRole(snapshot.globalRoles.intoRole, snapshot.globalRoles.fromRole), now, intoDid));
|
|
676
|
+
stmts.push(db.prepare("UPDATE cs_users SET role = ?, updatedAt = ? WHERE did = ?").bind("guest", now, fromDid));
|
|
307
677
|
const expected = countMergeStatements(snapshot);
|
|
308
678
|
if (stmts.length !== expected) {
|
|
309
679
|
throw new Error(`Merge statement count mismatch: expected ${expected}, built ${stmts.length}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-merge.js","sourceRoot":"","sources":["../../src/store/account-merge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,uBAAuB,GAAG,mEAAmE,CAAC;AAEpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACvD,mEAAmE;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,wGAAwG;AACxG,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAChC,+EAA+E,CAAC;AAElF,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,sBAAsB,EAAE,uBAAuB,CAAU,CAAC;AAoI9F,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,GAAG,wBAAwB,GAAG,SAAS,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,kBAAkB,OAAO,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC7C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAK7C,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAc,EACd,KAAiF;IAEjF,MAAM,EAAE;SACL,OAAO,CACN;iCAC2B,CAC5B;SACA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;SACpE,GAAG,EAAE,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAc,EACd,SAAiB;IAEjB,OAAO,CACL,CAAC,MAAM,EAAE;SACN,OAAO,CAAC,iGAAiG,CAAC;SAC1G,IAAI,CAAC,SAAS,CAAC;SACf,KAAK,EAAkB,CAAC,IAAI,IAAI,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACrE,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAc,EAAE,SAAiB,EAAE,MAAc;IACxF,MAAM,EAAE;SACL,OAAO,CACN;gEAC0D,CAC3D;SACA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/B,GAAG,EAAE,CAAC;IACT,MAAM,GAAG,GAAG,MAAM,EAAE;SACjB,OAAO,CAAC,yDAAyD,CAAC;SAClE,IAAI,CAAC,SAAS,CAAC;SACf,KAAK,EAA6B,CAAC;IACtC,OAAO,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAAc,EAAE,OAAe;IAC1D,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,OAAO,CAAC,gFAAgF,CAAC;SACzF,IAAI,CAAC,OAAO,CAAC;SACb,GAAG,EAAgB,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,EAAc,EAAE,OAAe;IACnE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,OAAO,CACN,gHAAgH,CACjH;SACA,IAAI,CAAC,OAAO,CAAC;SACb,GAAG,EAAiB,CAAC;IACxB,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,EAAc,EAAE,SAAiB;IACtE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,OAAO,CAAC,uEAAuE,CAAC;SAChF,IAAI,CAAC,SAAS,CAAC;SACf,GAAG,EAAkB,CAAC;IACzB,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EAAc,EAAE,YAAoB;IACvE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,OAAO,CAAC,qEAAqE,CAAC;SAC9E,IAAI,CAAC,YAAY,CAAC;SAClB,GAAG,EAAyC,CAAC;IAChD,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAc,EAAE,OAAe,EAAE,OAAe;IACvF,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,GACnH,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC;QAC1B,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC;QACnC,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC;QACnC,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC;QACpC,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC;QAClC,EAAE;aACC,OAAO,CAAC,uEAAuE,CAAC;aAChF,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,EAAiE;QACzE,EAAE;aACC,OAAO,CAAC,iDAAiD,CAAC;aAC1D,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,EAA4B;KACrC,CAAC,CAAC;IAEL,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACpF,CAAC;IAEF,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,gBAAgB,CAAC,IAAI,CAAC;gBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,OAAO,GAAyB;YACpC,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,QAAQ,EAAE,GAAG,CAAC,IAAI;YAClB,cAAc,EAAE,QAAQ,CAAC,IAAI;YAC7B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC7C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAoB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEJ,MAAM,cAAc,GAAwB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxG,MAAM,gBAAgB,GAA0B,eAAe;SAC5D,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC;SACpC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,gBAAgB,EAAE,GAAG,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO;KACxB,CAAC,CAAC,CAAC;IAEN,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAErF,OAAO;QACL,OAAO;QACP,OAAO;QACP,WAAW;QACX,gBAAgB;QAChB,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC9B,UAAU;QACV,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE;QAC9D,YAAY,EAAE,CAAC,GAAG,mBAAmB,CAAC;QACtC,wBAAwB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;QAChE,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC;QACrD,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC;QACrD,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAuB;IAC/D,OAAO,OAAO,CACZ,QAAQ,CAAC,wBAAwB;QAC/B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,wBAAwB,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,OAAO,CACL,QAAQ,CAAC,WAAW,CAAC,MAAM;QAC3B,QAAQ,CAAC,gBAAgB,CAAC,MAAM;QAChC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;QACjC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;QACtC,QAAQ,CAAC,UAAU,CAAC,MAAM;QAC1B,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAuB;IACxD,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM;QAC5C,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClF,oBAAoB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;QACtD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;QACvD,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;QACzD,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3D,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;QAC1C,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM;QACjD,mBAAmB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;QACrD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,gBAAgB,EAAE,CAAC,GAAG,mBAAmB,CAAC;QAC1C,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,0BAA0B;KACtE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAc,EACd,QAAuB,EACvB,GAAW;IAEX,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACtC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CACrH,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CACR,EAAE;aACC,OAAO,CAAC,8EAA8E,CAAC;aACvF,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CACtB,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CACR,EAAE;aACC,OAAO,CAAC,gGAAgG,CAAC;aACzG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CACR,EAAE;aACC,OAAO,CAAC,4FAA4F,CAAC;aACrG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CACrD,CAAC;QACF,KAAK,CAAC,IAAI,CACR,EAAE;aACC,OAAO,CAAC,oEAAoE,CAAC;aAC7E,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CACR,EAAE;aACC,OAAO,CAAC,8EAA8E,CAAC;aACvF,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE;SACC,OAAO,CACN;;;;oCAI4B,CAC7B;SACA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAC/B,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvE,KAAK,CAAC,IAAI,CACR,EAAE;SACC,OAAO,CAAC,kGAAkG,CAAC;SAC3G,IAAI,CAAC,OAAO,CAAC,CACjB,CAAC;IACF,KAAK,CAAC,IAAI,CACR,EAAE;SACC,OAAO,CAAC,kGAAkG,CAAC;SAC3G,IAAI,CAAC,OAAO,CAAC,CACjB,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IAC3E,KAAK,CAAC,IAAI,CACR,EAAE;SACC,OAAO,CACN;uBACe,CAChB;SACA,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAC3E,CAAC;IACF,KAAK,CAAC,IAAI,CACR,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAChH,CAAC;IAEF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,qBAAqB,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAuB;IACxD,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"account-merge.js","sourceRoot":"","sources":["../../src/store/account-merge.ts"],"names":[],"mappings":"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"}
|
package/dist/store/d1-store.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { BindHostResult, PublicMemberDTO } from "../blocklet-service-rpc-types.js";
|
|
8
8
|
import type { AccessKeyInfo, AccessPolicyInfo, AuditLogInfo, CreateAccessKeyInput, CreateAccessPolicyInput, CreateAuditLogInput, CreateInvitationInput, CreateSecurityRuleInput, InvitationInfo, MemberInfo, SecurityRuleInfo, StoredAccessKey, StoredConnectedAccount, StoredInvitation, StoredUser, UpdateAccessKeyInput, UpdateAccessPolicyInput, UpdateSecurityRuleInput } from "../types.js";
|
|
9
|
-
import { type MergeIntentRow, type MergeSnapshot } from "./account-merge.js";
|
|
9
|
+
import { type MergeDirectionPreview, type MergeIntentRow, type MergeKeep, type MergeSnapshot } from "./account-merge.js";
|
|
10
10
|
/** Allowed `cs_did_aliases.reason` values. Unknown reasons are rejected on write. */
|
|
11
11
|
export declare const DID_ALIAS_REASONS: readonly ["merged", "chain-migrated"];
|
|
12
12
|
export type DidAliasReason = (typeof DID_ALIAS_REASONS)[number];
|
|
@@ -174,6 +174,14 @@ export declare class D1Store {
|
|
|
174
174
|
* may return self). Users are global; no instanceDid filter. `SELECT 1 LIMIT 1`.
|
|
175
175
|
*/
|
|
176
176
|
hasVerifiedEmailMergeCandidate(selfDid: string): Promise<boolean>;
|
|
177
|
+
/**
|
|
178
|
+
* Pre-proof candidate rows for #320. `did` stays server-side.
|
|
179
|
+
* Same email predicate as {@link hasVerifiedEmailMergeCandidate}.
|
|
180
|
+
*/
|
|
181
|
+
listVerifiedEmailMergeCandidates(selfDid: string): Promise<{
|
|
182
|
+
email: string;
|
|
183
|
+
candidates: import("./account-merge.js").VerifiedEmailMergeCandidate[];
|
|
184
|
+
} | null>;
|
|
177
185
|
updateLastLogin(did: string, ip?: string, domain?: string): Promise<void>;
|
|
178
186
|
incrementPasskeyCount(did: string): Promise<void>;
|
|
179
187
|
getUserCount(): Promise<number>;
|
|
@@ -295,7 +303,9 @@ export declare class D1Store {
|
|
|
295
303
|
updateUserSourceProvider(did: string, sourceProvider: string, actor: string): Promise<void>;
|
|
296
304
|
getConnectedAccountById(id: string, provider: string): Promise<StoredConnectedAccount | null>;
|
|
297
305
|
getConnectedAccountByDid(did: string): Promise<StoredConnectedAccount | null>;
|
|
298
|
-
updateCounter(did: string, counter: number, domain?: string
|
|
306
|
+
updateCounter(did: string, counter: number, domain?: string, opts?: {
|
|
307
|
+
stampLogin?: boolean;
|
|
308
|
+
}): Promise<void>;
|
|
299
309
|
/**
|
|
300
310
|
* Mark a credential as just used without changing its WebAuthn counter.
|
|
301
311
|
* Passkey re-registration is a successful auth that does not go through
|
|
@@ -680,7 +690,14 @@ export declare class D1Store {
|
|
|
680
690
|
}>;
|
|
681
691
|
getMergeIntent(tokenHash: string): Promise<MergeIntentRow | null>;
|
|
682
692
|
planAccountMerge(fromDid: string, intoDid: string): Promise<MergeSnapshot>;
|
|
683
|
-
|
|
693
|
+
/** Dry-run fields for #321. #320 can call the same `account-merge.ts` helpers. */
|
|
694
|
+
assembleMergeDryRun(input: {
|
|
695
|
+
keep: MergeKeep;
|
|
696
|
+
sessionDid: string;
|
|
697
|
+
provedDid: string;
|
|
698
|
+
snapshot: MergeSnapshot;
|
|
699
|
+
}): Promise<MergeDirectionPreview | null>;
|
|
700
|
+
commitAccountMerge(tokenHash: string, actorDid: string, keep?: MergeKeep): Promise<{
|
|
684
701
|
ok: true;
|
|
685
702
|
snapshot: MergeSnapshot;
|
|
686
703
|
} | {
|