@arbidocs/client 0.5.20 → 0.5.22

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/README.md CHANGED
@@ -309,3 +309,7 @@ The SDK stores the signing private key and session key in IndexedDB, encrypted w
309
309
  - **Browser**: Any modern browser (Chrome, Firefox, Safari, Edge)
310
310
  - **Node.js**: v18+ (needs `fetch`, `FormData`, `Blob` globals). Install `fake-indexeddb` for IndexedDB.
311
311
  - **TypeScript**: 5.0+ (optional — works with plain JS too)
312
+
313
+ ## Releases
314
+
315
+ Release notes for every version are on [GitHub releases](https://github.com/arbicity/ARBI-frontend/releases).
package/dist/index.cjs CHANGED
@@ -1763,6 +1763,45 @@ async function changePassword(params, deps) {
1763
1763
  return { wrappedIdentityKey: request.wrapped_identity_key };
1764
1764
  }
1765
1765
 
1766
+ // src/auth/disconnect-sso.ts
1767
+ var endpointClient = (client) => client;
1768
+ async function requestSsoDisconnectCode(newEmail, deps) {
1769
+ const response = await endpointClient(deps.fetchClient).POST("/v1/user/sso-disconnect-code", {
1770
+ body: { new_email: newEmail.trim().toLowerCase() }
1771
+ });
1772
+ if (response.error) throw new Error(passwordChangeErrorMessage(response.error));
1773
+ }
1774
+ async function disconnectSso(params, deps) {
1775
+ const email = params.newEmail.trim().toLowerCase();
1776
+ const identity = await unlockIdentityWithPassword(
1777
+ params.email,
1778
+ params.password,
1779
+ deps.deploymentDomain
1780
+ );
1781
+ const current = await generateUserKeypairs(params.email, params.password, deps.deploymentDomain);
1782
+ const replacement = await generateUserKeypairs(email, params.password, deps.deploymentDomain);
1783
+ const timestamp = Math.floor(Date.now() / 1e3);
1784
+ const newLoginKey = bytesToBase64(replacement.signingKeyPair.publicKey);
1785
+ const wrappedIdentityKey = wrapIdentityKey(identity, replacement.signingKeyPair.secretKey);
1786
+ const signature = signMessage(
1787
+ `disconnect-sso|${params.userExtId}|${email}|${timestamp}|${newLoginKey}|${wrappedIdentityKey}`,
1788
+ current.signingKeyPair.secretKey
1789
+ );
1790
+ const response = await endpointClient(deps.fetchClient).POST("/v1/user/disconnect-sso", {
1791
+ body: {
1792
+ new_email: email,
1793
+ verification_code: params.code || void 0,
1794
+ timestamp,
1795
+ signature,
1796
+ new_login_key: newLoginKey,
1797
+ wrapped_identity_key: wrappedIdentityKey
1798
+ }
1799
+ });
1800
+ if (response.error) throw new Error(passwordChangeErrorMessage(response.error));
1801
+ await updateWrappedIdentityKey(wrappedIdentityKey);
1802
+ return { email };
1803
+ }
1804
+
1766
1805
  // src/client.ts
1767
1806
  var API_PREFIX = "/v1";
1768
1807
  var RETRYABLE_CODES = /* @__PURE__ */ new Set([
@@ -2229,6 +2268,7 @@ exports.decryptWithChatKey = decryptWithChatKey;
2229
2268
  exports.deriveDirectChatKey = deriveDirectChatKey;
2230
2269
  exports.deriveEncryptionKeypairFromSigning = deriveEncryptionKeypairFromSigning;
2231
2270
  exports.derivePublicKey = derivePublicKey;
2271
+ exports.disconnectSso = disconnectSso;
2232
2272
  exports.encodeCallKey = encodeCallKey;
2233
2273
  exports.encryptCallTitle = encryptCallTitle;
2234
2274
  exports.encryptFile = encryptFile;
@@ -2266,6 +2306,7 @@ exports.parseServerMessage = parseServerMessage;
2266
2306
  exports.passwordChangeErrorMessage = passwordChangeErrorMessage;
2267
2307
  exports.prewarmKeyPairs = prewarmKeyPairs;
2268
2308
  exports.readSessionClaims = readSessionClaims;
2309
+ exports.requestSsoDisconnectCode = requestSsoDisconnectCode;
2269
2310
  exports.saveSession = saveSession;
2270
2311
  exports.sealCallKey = sealCallKey;
2271
2312
  exports.sealCallKeyForPeers = sealCallKeyForPeers;