@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.
Files changed (72) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +2 -2
  3. package/dist/assets/{admin-core.bcfa7ce2.js → admin-core.bbd8d53c.js} +963 -194
  4. package/dist/assets/{admin.bd6c819b.css → admin.7b66e78d.css} +160 -7
  5. package/dist/blocklet-service-rpc.js +4 -4
  6. package/dist/blocklet-service-rpc.js.map +1 -1
  7. package/dist/handler-errors.d.ts +14 -8
  8. package/dist/handler-errors.d.ts.map +1 -1
  9. package/dist/handler-errors.js +15 -8
  10. package/dist/handler-errors.js.map +1 -1
  11. package/dist/handlers/account-merge-handler.d.ts +32 -5
  12. package/dist/handlers/account-merge-handler.d.ts.map +1 -1
  13. package/dist/handlers/account-merge-handler.js +155 -19
  14. package/dist/handlers/account-merge-handler.js.map +1 -1
  15. package/dist/handlers/auth-handler.d.ts.map +1 -1
  16. package/dist/handlers/auth-handler.js +11 -6
  17. package/dist/handlers/auth-handler.js.map +1 -1
  18. package/dist/handlers/did-connect-handler.d.ts +2 -2
  19. package/dist/handlers/did-connect-handler.d.ts.map +1 -1
  20. package/dist/handlers/did-connect-handler.js +9 -14
  21. package/dist/handlers/did-connect-handler.js.map +1 -1
  22. package/dist/handlers/email-login-handler.d.ts.map +1 -1
  23. package/dist/handlers/email-login-handler.js +15 -10
  24. package/dist/handlers/email-login-handler.js.map +1 -1
  25. package/dist/handlers/oauth-handler.d.ts +2 -0
  26. package/dist/handlers/oauth-handler.d.ts.map +1 -1
  27. package/dist/handlers/oauth-handler.js +71 -22
  28. package/dist/handlers/oauth-handler.js.map +1 -1
  29. package/dist/handlers/passkey-handler.d.ts +8 -2
  30. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  31. package/dist/handlers/passkey-handler.js +27 -18
  32. package/dist/handlers/passkey-handler.js.map +1 -1
  33. package/dist/handlers/team-handler.js +2 -2
  34. package/dist/handlers/team-handler.js.map +1 -1
  35. package/dist/http/security-headers.d.ts +38 -0
  36. package/dist/http/security-headers.d.ts.map +1 -0
  37. package/dist/http/security-headers.js +67 -0
  38. package/dist/http/security-headers.js.map +1 -0
  39. package/dist/identity/session-epoch.d.ts +11 -0
  40. package/dist/identity/session-epoch.d.ts.map +1 -1
  41. package/dist/identity/session-epoch.js +12 -0
  42. package/dist/identity/session-epoch.js.map +1 -1
  43. package/dist/pages/admin/i18n.d.ts.map +1 -1
  44. package/dist/pages/admin/i18n.js +271 -47
  45. package/dist/pages/admin/i18n.js.map +1 -1
  46. package/dist/pages/admin/merge-confirm-view.d.ts +75 -18
  47. package/dist/pages/admin/merge-confirm-view.d.ts.map +1 -1
  48. package/dist/pages/admin/merge-confirm-view.js +304 -72
  49. package/dist/pages/admin/merge-confirm-view.js.map +1 -1
  50. package/dist/pages/admin/merge-method-picker.d.ts +34 -3
  51. package/dist/pages/admin/merge-method-picker.d.ts.map +1 -1
  52. package/dist/pages/admin/merge-method-picker.js +188 -14
  53. package/dist/pages/admin/merge-method-picker.js.map +1 -1
  54. package/dist/pages/admin/styles.d.ts.map +1 -1
  55. package/dist/pages/admin/styles.js +160 -7
  56. package/dist/pages/admin/styles.js.map +1 -1
  57. package/dist/pages/admin/tab-profile-accounts.d.ts.map +1 -1
  58. package/dist/pages/admin/tab-profile-accounts.js +490 -114
  59. package/dist/pages/admin/tab-profile-accounts.js.map +1 -1
  60. package/dist/pages/oauth-callback-page.d.ts +14 -0
  61. package/dist/pages/oauth-callback-page.d.ts.map +1 -1
  62. package/dist/pages/oauth-callback-page.js +35 -3
  63. package/dist/pages/oauth-callback-page.js.map +1 -1
  64. package/dist/store/account-merge.d.ts +139 -3
  65. package/dist/store/account-merge.d.ts.map +1 -1
  66. package/dist/store/account-merge.js +381 -11
  67. package/dist/store/account-merge.js.map +1 -1
  68. package/dist/store/d1-store.d.ts +20 -3
  69. package/dist/store/d1-store.d.ts.map +1 -1
  70. package/dist/store/d1-store.js +37 -26
  71. package/dist/store/d1-store.js.map +1 -1
  72. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"tab-profile-accounts.js","sourceRoot":"","sources":["../../../src/pages/admin/tab-profile-accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAIvE,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/D,4DAA4D;AAC5D,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAA2B;QAClC,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE,UAAU;KAClB,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAM;IAC9C,OAAO,UAAU,CAAC;;;0CAGsB,CAAC,CAAC,2BAA2B,CAAC;;;;;CAKvE,CAAC;AACF,CAAC;AAED,mFAAmF;AACnF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;;;;;wBAKjD,gBAAgB,EAAE;0BAChB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;EAC7D,uBAAuB,CAAC,QAAQ,EAAE;EAClC,0BAA0B,CAAC,QAAQ,EAAE;EACrC,2BAA2B,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuhCvC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"tab-profile-accounts.js","sourceRoot":"","sources":["../../../src/pages/admin/tab-profile-accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAIlC,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/D,4DAA4D;AAC5D,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAA2B;QAClC,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE,UAAU;KAClB,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAM;IAC9C,OAAO,UAAU,CAAC;;;0CAGsB,CAAC,CAAC,2BAA2B,CAAC;;;;;CAKvE,CAAC;AACF,CAAC;AAED,mFAAmF;AACnF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;;;;;;wBAMjD,gBAAgB,EAAE;0BAChB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;EAC7D,uBAAuB,CAAC,QAAQ,EAAE;EAClC,0BAA0B,CAAC,QAAQ,EAAE;EACrC,uBAAuB,CAAC,QAAQ,EAAE;EAClC,2BAA2B,CAAC,QAAQ,EAAE;EACtC,wBAAwB,CAAC,QAAQ,EAAE;EACnC,qBAAqB,CAAC,QAAQ,EAAE;EAChC,qBAAqB,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA04CjC,CAAC,EAAE,CAAC"}
@@ -72,10 +72,24 @@ export declare const OAUTH_CALLBACK_COPY: {
72
72
  };
73
73
  };
74
74
  export declare function oauthCallbackCopy(locale?: string): OAuthCallbackCopy;
75
+ /**
76
+ * `window.name` of the popup `LoginPage` / connect-bridge open for OAuth.
77
+ * The callback postMessages and closes only that window. A bookmarklet clip
78
+ * window is also `window.open`'d (name `aside-clip`) and its `window.opener`
79
+ * is the third-party page. Treating every opener as the login host posts the
80
+ * code at the article, then `window.close()` destroys the clip window before
81
+ * the exchange fallback can send the user back to `returnUrl` (aside#80).
82
+ */
83
+ export declare const OAUTH_POPUP_WINDOW_NAME = "oauth-login:popup";
75
84
  export declare function renderOAuthCallbackPage(origin: string, params?: {
76
85
  code?: string | null;
77
86
  state?: string | null;
78
87
  }, locale?: string): string;
88
+ /**
89
+ * Same-origin bridge for a COOP merge prove. Writes the POST /oauth/login JSON
90
+ * shape to localStorage. Must not set a session cookie.
91
+ */
92
+ export declare function renderOAuthMergeProofResultPage(nonce: string, payload: unknown, locale?: string): string;
79
93
  /** Error bridge. `error` is already the sentence (or provider code) to show. */
80
94
  /** returnTo must already be resolved against the server-owned OAuth state and trusted origins. */
81
95
  export declare function renderOAuthCallbackErrorHTML(origin: string, error: string, locale?: string, returnTo?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-callback-page.d.ts","sourceRoot":"","sources":["../../src/pages/oauth-callback-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,KAAK,iBAAiB,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD+B,CAAC;AAEhE,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAEpE;AAqBD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACxD,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAuER;AAED,gFAAgF;AAChF,kGAAkG;AAClG,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CA+BnH"}
1
+ {"version":3,"file":"oauth-callback-page.d.ts","sourceRoot":"","sources":["../../src/pages/oauth-callback-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,KAAK,iBAAiB,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD+B,CAAC;AAEhE,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAEpE;AAeD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAQ3D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACxD,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CA2ER;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAcxG;AAED,gFAAgF;AAChF,kGAAkG;AAClG,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CA+BnH"}
@@ -73,6 +73,15 @@ function escapeHtml(s) {
73
73
  function jsString(value) {
74
74
  return escapeForScript(JSON.stringify(value));
75
75
  }
76
+ /**
77
+ * `window.name` of the popup `LoginPage` / connect-bridge open for OAuth.
78
+ * The callback postMessages and closes only that window. A bookmarklet clip
79
+ * window is also `window.open`'d (name `aside-clip`) and its `window.opener`
80
+ * is the third-party page. Treating every opener as the login host posts the
81
+ * code at the article, then `window.close()` destroys the clip window before
82
+ * the exchange fallback can send the user back to `returnUrl` (aside#80).
83
+ */
84
+ export const OAUTH_POPUP_WINDOW_NAME = "oauth-login:popup";
76
85
  const CALLBACK_STYLES = "body{margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0a0a0b;color:#9394a1;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:14px}" +
77
86
  ".wrap{text-align:center;max-width:420px;padding:24px;overflow-wrap:anywhere}a{color:inherit;display:inline-block;padding:12px;margin-top:12px}" +
78
87
  "@keyframes spin{to{transform:rotate(360deg)}}" +
@@ -93,9 +102,12 @@ export function renderOAuthCallbackPage(origin, params, locale) {
93
102
  var urlParams = new URLSearchParams(location.search);
94
103
  var code = urlParams.get('code') || ${embeddedCode};
95
104
  var state = urlParams.get('state') || ${embeddedState};
105
+ var oauthPopupName = ${jsString(OAUTH_POPUP_WINDOW_NAME)};
96
106
 
97
- if (window.opener && code && state) {
98
- // Primary path: postMessage to opener window
107
+ // postMessage only from the OAuth popup itself. Any other window that
108
+ // landed here (bookmarklet clip window, full-page login) keeps itself
109
+ // open and finishes through the exchange redirect, which honors returnUrl.
110
+ if (code && state && window.name === oauthPopupName && window.opener) {
99
111
  // Use server-known origin as safe default; override with state.returnUrl for federation cross-domain
100
112
  var targetOrigin = ${escapeForScript(JSON.stringify(origin))};
101
113
  try {
@@ -123,7 +135,8 @@ export function renderOAuthCallbackPage(origin, params, locale) {
123
135
  }
124
136
 
125
137
  // Server-side code exchange fallback.
126
- // Used when: opener lost (COOP headers), or WKWebView (window.close no-op).
138
+ // Used when: this window is not the OAuth popup (bookmarklet / full-page),
139
+ // opener lost (COOP headers), or WKWebView (window.close no-op).
127
140
  var _exchanged = false;
128
141
  function doFallbackExchange() {
129
142
  if (_exchanged || !code || !state) return;
@@ -148,6 +161,25 @@ export function renderOAuthCallbackPage(origin, params, locale) {
148
161
  </script>
149
162
  </body></html>`;
150
163
  }
164
+ /**
165
+ * Same-origin bridge for a COOP merge prove. Writes the POST /oauth/login JSON
166
+ * shape to localStorage. Must not set a session cookie.
167
+ */
168
+ export function renderOAuthMergeProofResultPage(nonce, payload, locale) {
169
+ const copy = oauthCallbackCopy(locale);
170
+ const { htmlLang } = resolvePageLocale(locale);
171
+ const key = `connect.mergeOAuthResult.${nonce}`;
172
+ return `<!DOCTYPE html>
173
+ <html lang="${htmlLang}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style>
174
+ ${CALLBACK_STYLES}
175
+ </style></head><body>
176
+ <div class="wrap"><div id="status">${escapeHtml(copy.mayClose)}</div></div>
177
+ <script>
178
+ try { localStorage.setItem(${jsString(key)}, ${jsString(JSON.stringify(payload ?? null))}); } catch (e) {}
179
+ try { window.close(); } catch (e2) {}
180
+ </script>
181
+ </body></html>`;
182
+ }
151
183
  /** Error bridge. `error` is already the sentence (or provider code) to show. */
152
184
  /** returnTo must already be resolved against the server-owned OAuth state and trusted origins. */
153
185
  export function renderOAuthCallbackErrorHTML(origin, error, locale, returnTo = "/") {
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-callback-page.js","sourceRoot":"","sources":["../../src/pages/oauth-callback-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-callback-page.js","sourceRoot":"","sources":["../../src/pages/oauth-callback-page.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ export declare const MERGE_INTENT_TTL_MS: number;
8
8
  export declare const MERGE_START_CACHE_PREFIX = "merge-start:";
9
9
  /** Refuse a single merge batch that would monopolize D1 (#174). */
10
10
  export declare const MERGE_BATCH_MAX_STATEMENTS = 800;
11
- /** Fixed statements in every merge batch: alias insert, flatten, revoke A, revoke B, mark A, bump B. */
12
- export declare const MERGE_BATCH_FIXED_STATEMENTS = 6;
11
+ /** Fixed statements in every merge batch: alias insert, flatten, revoke A, revoke B, mark A, bump B, survivor role, source role. */
12
+ export declare const MERGE_BATCH_FIXED_STATEMENTS = 8;
13
13
  export declare const MERGE_TOO_LARGE_ERROR = "Merge touches too many rows; split the accounts or handle this merge manually";
14
14
  /** Stable host-side warning codes. User copy lives in i18n.ts (#189). */
15
15
  export declare const MERGE_HOST_WARNINGS: readonly ["blocklet-owner-clash", "external-token-rebind"];
@@ -76,6 +76,11 @@ export interface MergeSnapshot {
76
76
  fromPasskeyCount: number;
77
77
  intoPasskeyCount: number;
78
78
  movedPasskeyCount: number;
79
+ /** Raw `cs_users.role` values before the merge. NULL stays NULL. */
80
+ globalRoles: {
81
+ fromRole: string | null;
82
+ intoRole: string | null;
83
+ };
79
84
  }
80
85
  export interface MergeIntentRow {
81
86
  tokenHash: string;
@@ -122,6 +127,7 @@ export interface MergeConfirmPlan {
122
127
  fromRole: string;
123
128
  intoRoleBefore: string;
124
129
  keptRole: string;
130
+ instanceName: string | null;
125
131
  }>;
126
132
  accessKeyCount: number;
127
133
  aliasCreatedCount: number;
@@ -136,6 +142,136 @@ export interface MergeConfirmPlan {
136
142
  export declare function mergeStartCacheKey(tokenHash: string): string;
137
143
  export declare function didSpacePointer(fromDid: string): string;
138
144
  export declare function higherRole(a: string, b: string): string;
145
+ /** NULL or blank global role is guest before compare. The stored string is kept when it is non-blank. */
146
+ export declare function coalesceGlobalRole(role: string | null | undefined): string;
147
+ /** Survivor's global role after merge. Equal levels keep the survivor's coalesced value (`higherRole` returns its first argument). */
148
+ export declare function survivorGlobalRole(survivorRole: string | null | undefined, otherRole: string | null | undefined): string;
149
+ /** Null when the survivor's effective global role does not change. */
150
+ export declare function globalRoleChange(survivorRole: string | null | undefined, otherRole: string | null | undefined): {
151
+ before: string;
152
+ after: string;
153
+ } | null;
154
+ export type MergeKeep = "session" | "proved";
155
+ export type MergeRecommendReason = "global-role" | "instance-role" | "handle" | "wallet-did" | "older";
156
+ export declare function parseMergeKeep(value: unknown): MergeKeep | "missing" | "invalid";
157
+ /** `session` is the intent's into DID (the caller). `proved` swaps that pair for the snapshot and the commit. */
158
+ export declare function directedMergeDids(intent: {
159
+ fromDid: string;
160
+ intoDid: string;
161
+ }, keep: MergeKeep): {
162
+ fromDid: string;
163
+ intoDid: string;
164
+ sessionDid: string;
165
+ provedDid: string;
166
+ };
167
+ /** `wallet` and `did-connect` collapse to `wallet`. Other provider names are kept. #320 should use this. */
168
+ export declare function normalizeMergeMethod(provider: string): string;
169
+ /** First-seen order, after {@link normalizeMergeMethod}. Empty names are dropped. */
170
+ export declare function dedupeMergeMethods(providers: readonly string[]): string[];
171
+ /** Distinct login methods. Providers are ordered by name, then normalized. */
172
+ export declare function listMergeMethods(db: D1Database, userDid: string): Promise<string[]>;
173
+ /**
174
+ * True when a login credential's DID is the user DID and its provider is
175
+ * `wallet` or `did-connect`.
176
+ */
177
+ export declare function isWalletUserDid(db: D1Database, userDid: string): Promise<boolean>;
178
+ /** Active handle on this DID, or null. Does not follow `mergedInto`. */
179
+ export declare function getActiveHandleName(db: D1Database, did: string): Promise<string | null>;
180
+ /** Instance membership roles for this user. Order is not significant. */
181
+ export declare function listMembershipRoles(db: D1Database, userDid: string): Promise<string[]>;
182
+ /**
183
+ * Both rows are unmerged, email-verified, and share `lower(trim(email))`.
184
+ * The candidate list uses the same email match but only requires the other
185
+ * account's `mergedInto IS NULL` (the caller's own mergedInto is not checked).
186
+ */
187
+ export declare function verifiedEmailsMatchForMerge(db: D1Database, didA: string, didB: string): Promise<boolean>;
188
+ /** True iff another unmerged user shares `selfDid`'s verified email. `LIMIT 1`. */
189
+ export declare function hasVerifiedEmailMergeCandidate(db: D1Database, selfDid: string): Promise<boolean>;
190
+ export declare const MERGE_CANDIDATE_LIST_LIMIT = 5;
191
+ export interface VerifiedEmailMergeCandidate {
192
+ /** Server-only. Never copy this onto a pre-proof response. */
193
+ did: string;
194
+ createdAt: string | null;
195
+ lastLoginAt: string | null;
196
+ /** Normalized with {@link dedupeMergeMethods}. Includes hidden providers. */
197
+ methods: string[];
198
+ /** `provider = 'email'` and `id = 'email|' || lower(trim(shared email))`. */
199
+ hasEmailCredential: boolean;
200
+ }
201
+ /**
202
+ * Up to {@link MERGE_CANDIDATE_LIST_LIMIT} other accounts that share `selfDid`'s
203
+ * verified email, newest `lastLoginAt` first. `email` is `lower(trim(self.email))`.
204
+ * Returns null when there is no candidate (and then no email).
205
+ */
206
+ export declare function listVerifiedEmailMergeCandidates(db: D1Database, selfDid: string): Promise<{
207
+ email: string;
208
+ candidates: VerifiedEmailMergeCandidate[];
209
+ } | null>;
210
+ export interface MergeSideAccount {
211
+ did: string;
212
+ methods: string[];
213
+ createdAt: string | null;
214
+ lastLoginAt: string | null;
215
+ globalRole: string;
216
+ fullName: string | null;
217
+ handle: string | null;
218
+ walletDid: boolean;
219
+ }
220
+ export declare function loadMergeSideAccount(db: D1Database, did: string): Promise<MergeSideAccount | null>;
221
+ /**
222
+ * Display name for a membership row: `app:name`, then `app:branding.name`,
223
+ * then the first `cs_instance_hosts.host`. Missing data is null — never the
224
+ * instance DID (dry-run must not leak it).
225
+ */
226
+ export declare function loadMergeInstanceNames(db: D1Database, instanceDids: readonly string[]): Promise<Map<string, string | null>>;
227
+ export interface MergeRecommendSide {
228
+ globalRole: string | null;
229
+ membershipRoles: readonly string[];
230
+ handle: string | null;
231
+ walletDid: boolean;
232
+ createdAt: string | null;
233
+ }
234
+ export interface MergeRecommendInput {
235
+ session: MergeRecommendSide;
236
+ proved: MergeRecommendSide;
237
+ }
238
+ /**
239
+ * First rule that distinguishes the two proved accounts wins.
240
+ * `recommendReasons` contains that one code, or is empty when every rule ties
241
+ * and the recommendation is `session`.
242
+ */
243
+ export declare function recommendMergeKeep(input: MergeRecommendInput): {
244
+ recommendedKeep: MergeKeep;
245
+ recommendReasons: MergeRecommendReason[];
246
+ };
247
+ /** Survivor's existing methods, then moved credential providers, normalized and de-duplicated. */
248
+ export declare function survivorMethodsFor(intoMethods: readonly string[], movedProviders: readonly string[]): string[];
249
+ export interface MergeDirectionPreview extends MergeConfirmPlan {
250
+ keep: MergeKeep;
251
+ recommendedKeep: MergeKeep;
252
+ recommendReasons: MergeRecommendReason[];
253
+ accounts: {
254
+ session: MergeSideAccount;
255
+ proved: MergeSideAccount;
256
+ };
257
+ survivorMethods: string[];
258
+ matchesCandidate: boolean;
259
+ movedMemberships: Array<{
260
+ instanceName: string | null;
261
+ role: string;
262
+ }>;
263
+ globalRoleChange: {
264
+ before: string;
265
+ after: string;
266
+ } | null;
267
+ mergedHandle: string | null;
268
+ }
269
+ export declare function assembleMergeDryRun(db: D1Database, input: {
270
+ keep: MergeKeep;
271
+ sessionDid: string;
272
+ provedDid: string;
273
+ snapshot: MergeSnapshot;
274
+ }): Promise<MergeDirectionPreview | null>;
139
275
  export declare function createMergeStartChallenge(): Promise<{
140
276
  challenge: string;
141
277
  tokenHash: string;
@@ -161,7 +297,7 @@ export declare function toMergePlanView(snapshot: MergeSnapshot): MergePlanView;
161
297
  export declare function willMovePrimaryCredential(snapshot: MergeSnapshot): boolean;
162
298
  /** Same formula `commitMergeBatch` uses to size the D1 batch (#189). */
163
299
  export declare function countMergeStatements(snapshot: MergeSnapshot): number;
164
- export declare function toMergeConfirmPlan(snapshot: MergeSnapshot): MergeConfirmPlan;
300
+ export declare function toMergeConfirmPlan(snapshot: MergeSnapshot, instanceNames?: ReadonlyMap<string, string | null>): MergeConfirmPlan;
165
301
  export declare function commitMergeBatch(db: D1Database, snapshot: MergeSnapshot, now: string): Promise<void>;
166
302
  export declare function hashSnapshot(snapshot: MergeSnapshot): Promise<string>;
167
303
  //# sourceMappingURL=account-merge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-merge.d.ts","sourceRoot":"","sources":["../../src/store/account-merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-merge.d.ts","sourceRoot":"","sources":["../../src/store/account-merge.ts"],"names":[],"mappings":"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"}