@mezo-org/passport 0.4.0-dev.65 → 0.4.0-dev.66

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 (73) hide show
  1. package/dist/src/api/auth.d.ts +7 -3
  2. package/dist/src/api/auth.d.ts.map +1 -1
  3. package/dist/src/api/auth.js.map +1 -1
  4. package/dist/src/hooks/constants.d.ts +1 -0
  5. package/dist/src/hooks/constants.d.ts.map +1 -1
  6. package/dist/src/hooks/constants.js +1 -0
  7. package/dist/src/hooks/constants.js.map +1 -1
  8. package/dist/src/hooks/index.d.ts +1 -0
  9. package/dist/src/hooks/index.d.ts.map +1 -1
  10. package/dist/src/hooks/index.js +1 -0
  11. package/dist/src/hooks/index.js.map +1 -1
  12. package/dist/src/hooks/useAuthenticateWithWallet.d.ts.map +1 -1
  13. package/dist/src/hooks/useAuthenticateWithWallet.js +2 -1
  14. package/dist/src/hooks/useAuthenticateWithWallet.js.map +1 -1
  15. package/dist/src/hooks/useBorrowData.d.ts.map +1 -1
  16. package/dist/src/hooks/useBorrowData.js +3 -1
  17. package/dist/src/hooks/useBorrowData.js.map +1 -1
  18. package/dist/src/hooks/useCreateAccount.d.ts.map +1 -1
  19. package/dist/src/hooks/useCreateAccount.js +22 -1
  20. package/dist/src/hooks/useCreateAccount.js.map +1 -1
  21. package/dist/src/hooks/useGetAccountByMezoId.d.ts +4 -2
  22. package/dist/src/hooks/useGetAccountByMezoId.d.ts.map +1 -1
  23. package/dist/src/hooks/useGetAccountByMezoId.js +7 -4
  24. package/dist/src/hooks/useGetAccountByMezoId.js.map +1 -1
  25. package/dist/src/hooks/useIsUsernameValid.d.ts +7 -0
  26. package/dist/src/hooks/useIsUsernameValid.d.ts.map +1 -0
  27. package/dist/src/hooks/useIsUsernameValid.js +41 -0
  28. package/dist/src/hooks/useIsUsernameValid.js.map +1 -0
  29. package/dist/src/hooks/useLinkAccount.d.ts +19 -13
  30. package/dist/src/hooks/useLinkAccount.d.ts.map +1 -1
  31. package/dist/src/hooks/useLinkAccount.js +20 -1
  32. package/dist/src/hooks/useLinkAccount.js.map +1 -1
  33. package/dist/src/hooks/useWalletAccount.d.ts.map +1 -1
  34. package/dist/src/hooks/useWalletAccount.js.map +1 -1
  35. package/dist/src/utils/numbers.d.ts +7 -0
  36. package/dist/src/utils/numbers.d.ts.map +1 -1
  37. package/dist/src/utils/numbers.js +7 -0
  38. package/dist/src/utils/numbers.js.map +1 -1
  39. package/dist/src/utils/numbers.test.js +21 -1
  40. package/dist/src/utils/numbers.test.js.map +1 -1
  41. package/dist/src/utils/siww.d.ts +1 -0
  42. package/dist/src/utils/siww.d.ts.map +1 -1
  43. package/dist/src/utils/siww.js +50 -12
  44. package/dist/src/utils/siww.js.map +1 -1
  45. package/dist/src/utils/validation.d.ts +2 -0
  46. package/dist/src/utils/validation.d.ts.map +1 -0
  47. package/dist/src/utils/validation.js +37 -0
  48. package/dist/src/utils/validation.js.map +1 -0
  49. package/dist/src/utils/wagmi.d.ts +3 -0
  50. package/dist/src/utils/wagmi.d.ts.map +1 -0
  51. package/dist/src/utils/wagmi.js +7 -0
  52. package/dist/src/utils/wagmi.js.map +1 -0
  53. package/dist/src/wallet/index.d.ts +1 -1
  54. package/dist/src/wallet/index.d.ts.map +1 -1
  55. package/dist/src/wallet/index.js +1 -1
  56. package/dist/src/wallet/index.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/api/auth.ts +5 -3
  59. package/src/hooks/constants.ts +1 -0
  60. package/src/hooks/index.ts +1 -0
  61. package/src/hooks/useAuthenticateWithWallet.ts +10 -1
  62. package/src/hooks/useBorrowData.ts +7 -1
  63. package/src/hooks/useCreateAccount.ts +28 -2
  64. package/src/hooks/useGetAccountByMezoId.ts +14 -5
  65. package/src/hooks/useIsUsernameValid.ts +52 -0
  66. package/src/hooks/useLinkAccount.ts +36 -4
  67. package/src/hooks/useWalletAccount.ts +1 -5
  68. package/src/utils/numbers.test.ts +27 -0
  69. package/src/utils/numbers.ts +9 -0
  70. package/src/utils/siww.ts +71 -16
  71. package/src/utils/validation.ts +42 -0
  72. package/src/utils/wagmi.ts +12 -0
  73. package/src/wallet/index.ts +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"numbers.test.js","sourceRoot":"","sources":["../../../src/utils/numbers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numbers.test.js","sourceRoot":"","sources":["../../../src/utils/numbers.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  type NetworkFamily = "evm" | "bitcoin";
2
2
  export declare function createSignInWithWalletMessage(address: string, nonce: string, networkFamily: NetworkFamily, chainId?: number): string;
3
+ export declare function verifyDomainInSignInWithWalletMessage(message: string, signature: string, nonce: string): Promise<void>;
3
4
  export {};
4
5
  //# sourceMappingURL=siww.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"siww.d.ts","sourceRoot":"","sources":["../../../src/utils/siww.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;AAEtC,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,MAAM,UAmBjB"}
1
+ {"version":3,"file":"siww.d.ts","sourceRoot":"","sources":["../../../src/utils/siww.ts"],"names":[],"mappings":"AAQA,KAAK,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;AAEtC,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,MAAM,UAwBjB;AASD,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,iBAmCd"}
@@ -1,19 +1,57 @@
1
- import { SignInWithWalletMessage } from "@mezo-org/sign-in-with-wallet";
1
+ import { SignInWithWalletErrorType, SignInWithWalletMessage, } from "@mezo-org/sign-in-with-wallet";
2
2
  import { ONE_DAY_MS } from "./time";
3
3
  const SESSION_EXPIRATION_DURATION_MS = 14 * ONE_DAY_MS;
4
4
  export function createSignInWithWalletMessage(address, nonce, networkFamily, chainId) {
5
5
  const { host: domain, origin: uri } = window.location;
6
- const message = new SignInWithWalletMessage({
7
- domain,
8
- address, // if "bitcoin" this should be btc address, not underlaying eth address
9
- uri,
6
+ let siwwMessage;
7
+ try {
8
+ siwwMessage = new SignInWithWalletMessage({
9
+ domain,
10
+ address, // if "bitcoin" this should be btc address, not underlaying eth address
11
+ uri,
12
+ nonce,
13
+ issuedAt: new Date().toISOString(),
14
+ expirationTime: new Date(Date.now() + SESSION_EXPIRATION_DURATION_MS).toISOString(),
15
+ version: "1",
16
+ chainId: networkFamily === "evm" ? chainId : undefined,
17
+ networkFamily,
18
+ });
19
+ }
20
+ catch (error) {
21
+ throw new Error(`Failed to create sign in with wallet message: ${error}`);
22
+ }
23
+ return siwwMessage.prepareMessage();
24
+ }
25
+ class SIWWDomainError extends Error {
26
+ constructor(message) {
27
+ super(`Error when verifying domain in SIWW message: ${message}`);
28
+ this.name = "SIWWDomainError";
29
+ }
30
+ }
31
+ export async function verifyDomainInSignInWithWalletMessage(message, signature, nonce) {
32
+ const { host: domain } = window.location;
33
+ let siwwMessage;
34
+ try {
35
+ siwwMessage = new SignInWithWalletMessage(message);
36
+ }
37
+ catch (error) {
38
+ throw new SIWWDomainError("Failed to parse SIWW message");
39
+ }
40
+ if (!siwwMessage.expirationTime) {
41
+ throw new SIWWDomainError("SIWW messages must have an expiration time set");
42
+ }
43
+ const result = await siwwMessage.verify({
44
+ signature,
45
+ // Nonce has to match the session ID carried in the request.
10
46
  nonce,
11
- issuedAt: new Date().toISOString(),
12
- expirationTime: new Date(Date.now() + SESSION_EXPIRATION_DURATION_MS).toISOString(),
13
- version: "1",
14
- chainId: networkFamily === "evm" ? chainId : undefined,
15
- networkFamily,
16
- });
17
- return message.prepareMessage();
47
+ domain,
48
+ // Time is used as a reference to verify the expiration time set in the
49
+ // message.
50
+ time: new Date().toISOString(),
51
+ }, { suppressExceptions: true });
52
+ if (result.error &&
53
+ result.error.type === SignInWithWalletErrorType.DOMAIN_MISMATCH) {
54
+ throw new SIWWDomainError("Domain does not match provided domain for verification.");
55
+ }
18
56
  }
19
57
  //# sourceMappingURL=siww.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"siww.js","sourceRoot":"","sources":["../../../src/utils/siww.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,8BAA8B,GAAG,EAAE,GAAG,UAAU,CAAA;AAItD,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,KAAa,EACb,aAA4B,EAC5B,OAAgB;IAEhB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;IAErD,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC;QAC1C,MAAM;QACN,OAAO,EAAE,uEAAuE;QAChF,GAAG;QACH,KAAK;QACL,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,cAAc,EAAE,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,EAAE,GAAG,8BAA8B,CAC5C,CAAC,WAAW,EAAE;QACf,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACtD,aAAa;KACd,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,cAAc,EAAE,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"siww.js","sourceRoot":"","sources":["../../../src/utils/siww.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,8BAA8B,GAAG,EAAE,GAAG,UAAU,CAAA;AAItD,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,KAAa,EACb,aAA4B,EAC5B,OAAgB;IAEhB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;IAErD,IAAI,WAAW,CAAA;IACf,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,uBAAuB,CAAC;YACxC,MAAM;YACN,OAAO,EAAE,uEAAuE;YAChF,GAAG;YACH,KAAK;YACL,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAClC,cAAc,EAAE,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,EAAE,GAAG,8BAA8B,CAC5C,CAAC,WAAW,EAAE;YACf,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACtD,aAAa;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,WAAW,CAAC,cAAc,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,eAAgB,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,gDAAgD,OAAO,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAe,EACf,SAAiB,EACjB,KAAa;IAEb,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;IACxC,IAAI,WAAoC,CAAA;IACxC,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CAAC,gDAAgD,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CACrC;QACE,SAAS;QACT,4DAA4D;QAC5D,KAAK;QACL,MAAM;QACN,uEAAuE;QACvE,WAAW;QACX,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC/B,EACD,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC7B,CAAA;IAED,IACE,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,yBAAyB,CAAC,eAAe,EAC/D,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,yDAAyD,CAC1D,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function validateUsername(username: string): string[];
2
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAmCA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAM3D"}
@@ -0,0 +1,37 @@
1
+ // NOTE: This was copied from mezo-portal and is based on the validation from
2
+ // workers/passport-auth/src/utils/mezo-id.ts.
3
+ // Most of these are restrictions for an DNS hostname label (i.e., the part
4
+ // before/after `.` in a full hostname) as outlined in RFC1034
5
+ // (https://www.rfc-editor.org/rfc/rfc1034).
6
+ //
7
+ // A few addenda are made to ensure that nothing can sneak through that could
8
+ // look like an Ethereum or Bitcoin address.
9
+ const DISALLOWED_USERNAME_PATTERNS = [
10
+ // RFC1034.
11
+ { pattern: /^$/, error: "Must not be empty." },
12
+ { pattern: /^.{16,}$/, error: "Must have 15 characters or fewer." },
13
+ {
14
+ pattern: /^[^A-Za-z]/,
15
+ error: "Must start with a one of the letters A-Z or a-z.",
16
+ },
17
+ {
18
+ pattern: /[^A-Za-z0-9-]/,
19
+ error: "Must only use letters or numbers (A-Z, a-z, or 0-9), or hyphen (-).",
20
+ },
21
+ { pattern: /-$/, error: "Must not end in a hyphen (-)." },
22
+ // On-chain shenanigan avoidance.
23
+ { pattern: /0x/i, error: "Must not contain 0x." },
24
+ {
25
+ pattern: /^(?:bc1|tb1|[a-z]pub|[a-z]priv)/i,
26
+ error: "Must not start with a Bitcoin magic string.",
27
+ },
28
+ {
29
+ pattern: /^m[0-9]+$/i,
30
+ error: 'No "m" + "numeric string" prefixes.',
31
+ },
32
+ ];
33
+ export function validateUsername(username) {
34
+ const errors = DISALLOWED_USERNAME_PATTERNS.flatMap(({ pattern, error }) => pattern.test(username) ? [error] : []);
35
+ return errors;
36
+ }
37
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8CAA8C;AAE9C,2EAA2E;AAC3E,8DAA8D;AAC9D,4CAA4C;AAC5C,EAAE;AACF,6EAA6E;AAC7E,4CAA4C;AAC5C,MAAM,4BAA4B,GAAyC;IACzE,WAAW;IACX,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAC9C,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,mCAAmC,EAAE;IACnE;QACE,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,kDAAkD;KAC1D;IACD;QACE,OAAO,EAAE,eAAe;QACxB,KAAK,EACH,qEAAqE;KACxE;IACD,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,+BAA+B,EAAE;IACzD,iCAAiC;IACjC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACjD;QACE,OAAO,EAAE,kCAAkC;QAC3C,KAAK,EAAE,6CAA6C;KACrD;IACD;QACE,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,qCAAqC;KAC7C;CACF,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,MAAM,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CACzE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CACtC,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Connector } from "wagmi";
2
+ export declare function getBitcoinPublicKeyFromConnector(connector: Connector): Promise<string | undefined>;
3
+ //# sourceMappingURL=wagmi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wagmi.d.ts","sourceRoot":"","sources":["../../../src/utils/wagmi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,wBAAsB,gCAAgC,CAAC,SAAS,EAAE,SAAS,+BAQ1E"}
@@ -0,0 +1,7 @@
1
+ export async function getBitcoinPublicKeyFromConnector(connector) {
2
+ if (connector.type !== "orangekit")
3
+ return undefined;
4
+ const provider = connector.getBitcoinProvider();
5
+ return provider.getPublicKey();
6
+ }
7
+ //# sourceMappingURL=wagmi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wagmi.js","sourceRoot":"","sources":["../../../src/utils/wagmi.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,SAAoB;IACzE,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAA;IAEpD,MAAM,QAAQ,GACZ,SACD,CAAC,kBAAkB,EAAE,CAAA;IAEtB,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAA;AAChC,CAAC"}
@@ -1,2 +1,2 @@
1
- export { getOKXWallet, getUnisatWallet, getXverseWallet, BitcoinWalletConnectionError, WalletNetworkDoesNotMatchProviderChainError, isUnsupportedBitcoinAddressError, isWalletNetworkDoesNotMatchProviderChainError, } from "@mezo-org/orangekit";
1
+ export { BitcoinWalletConnectionError, getOKXWallet, getUnisatWallet, getXverseWallet, isUnsupportedBitcoinAddressError, isWalletNetworkDoesNotMatchProviderChainError, OrangeKitConnector, WalletNetworkDoesNotMatchProviderChainError, } from "@mezo-org/orangekit";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,2CAA2C,EAC3C,gCAAgC,EAChC,6CAA6C,GAC9C,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gCAAgC,EAChC,6CAA6C,EAC7C,kBAAkB,EAClB,2CAA2C,GAC5C,MAAM,qBAAqB,CAAA"}
@@ -1,2 +1,2 @@
1
- export { getOKXWallet, getUnisatWallet, getXverseWallet, BitcoinWalletConnectionError, WalletNetworkDoesNotMatchProviderChainError, isUnsupportedBitcoinAddressError, isWalletNetworkDoesNotMatchProviderChainError, } from "@mezo-org/orangekit";
1
+ export { BitcoinWalletConnectionError, getOKXWallet, getUnisatWallet, getXverseWallet, isUnsupportedBitcoinAddressError, isWalletNetworkDoesNotMatchProviderChainError, WalletNetworkDoesNotMatchProviderChainError, } from "@mezo-org/orangekit";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,2CAA2C,EAC3C,gCAAgC,EAChC,6CAA6C,GAC9C,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gCAAgC,EAChC,6CAA6C,EAE7C,2CAA2C,GAC5C,MAAM,qBAAqB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezo-org/passport",
3
- "version": "0.4.0-dev.65",
3
+ "version": "0.4.0-dev.66",
4
4
  "main": "dist/src/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "scripts": {
@@ -40,7 +40,7 @@
40
40
  "@mezo-org/mezo-clay": "0.1.0-dev.27",
41
41
  "@mezo-org/mezod-contracts": "^1.0.0",
42
42
  "@mezo-org/musd-contracts": "^1.0.1",
43
- "@mezo-org/orangekit": "1.0.0-beta.40-dev.18",
43
+ "@mezo-org/orangekit": "1.0.0-beta.40-dev.19",
44
44
  "@mezo-org/sign-in-with-wallet": "1.0.0-beta.8",
45
45
  "qrcode.react": "^4.2.0",
46
46
  "styletron-engine-monolithic": "^1.0.0",
package/src/api/auth.ts CHANGED
@@ -38,7 +38,7 @@ export type AuthenticationProviderRedirectResponse = {
38
38
  redirectTo: string
39
39
  }
40
40
 
41
- type SignatureData = {
41
+ export type SignatureData = {
42
42
  message: string
43
43
  signature: string
44
44
  }
@@ -62,12 +62,14 @@ export type GetAccountByMezoIdOrAddressResponse = {
62
62
  linkedAccounts?: Extract<LinkedAccount, { type: "wallet" }>[]
63
63
  }
64
64
 
65
- export type LinkAccountRequest = CreateSessionRequest
65
+ export type LinkAccountRequest = CreateAccountRequest | { type: "discord" }
66
66
  export type LinkAccountResponse =
67
67
  | Account
68
68
  | AuthenticationProviderRedirectResponse
69
69
 
70
- export type CreateAccountRequest = { type: "wallet" } & SignatureData
70
+ export type CreateAccountRequest = { type: "wallet" } & SignatureData & {
71
+ bitcoinPublicKey?: string
72
+ }
71
73
  export type CreateAccountResponse = Account
72
74
 
73
75
  export type UpdateMezoIdResponse = Account
@@ -3,4 +3,5 @@ export const QUERY_KEYS = {
3
3
  SESSION: "session",
4
4
  CURRENT: "current",
5
5
  ASSETS_USD_CONVERSION: "assetsUsdConversion",
6
+ USERNAME_VALIDATION: "usernameValidation",
6
7
  }
@@ -11,6 +11,7 @@ export * from "./useGetAccountByAddress"
11
11
  export * from "./useGetAccountByMezoId"
12
12
  export * from "./useGetCurrentAccount"
13
13
  export * from "./useGetSession"
14
+ export * from "./useIsUsernameValid"
14
15
  export * from "./useLinkAccount"
15
16
  export * from "./useRefreshPassport"
16
17
  export * from "./useSignInWithDiscord"
@@ -3,7 +3,10 @@ import { MutationOptions, useMutation } from "@tanstack/react-query"
3
3
  import { useCreateAccount } from "./useCreateAccount"
4
4
  import { useCreateSession } from "./useCreateSession"
5
5
  import { useEnsureNoSessionAndFetchNonce } from "./useEnsureNoSessionAndFetchNonce"
6
- import { createSignInWithWalletMessage } from "../utils/siww"
6
+ import {
7
+ createSignInWithWalletMessage,
8
+ verifyDomainInSignInWithWalletMessage,
9
+ } from "../utils/siww"
7
10
  import { useGetAccountByAddress } from "./useGetAccountByAddress"
8
11
  import type { Session } from "../api"
9
12
  import useWalletAccount from "./useWalletAccount"
@@ -49,6 +52,12 @@ function useAuthenticateWithWallet(
49
52
  connector,
50
53
  })
51
54
 
55
+ await verifyDomainInSignInWithWalletMessage(
56
+ messageResult,
57
+ signatureResult,
58
+ nonce,
59
+ )
60
+
52
61
  if (shouldCreateAccount) {
53
62
  const getAccountByAddressResult = await getAccountByAddress()
54
63
 
@@ -8,6 +8,7 @@ import {
8
8
  } from "../lib/contracts"
9
9
  import { usePassportContext } from "./usePassportContext"
10
10
  import { CHAIN_ID } from "../constants"
11
+ import { bigIntMax } from "../utils/numbers"
11
12
 
12
13
  // Wagmi handles typesafety with ABI const assertions. TypeScript doesn't
13
14
  // support importing JSON as const yet so types cannot be inferred from the
@@ -129,10 +130,15 @@ export function useBorrowData(queryOptions = {}) {
129
130
  const [collateral, principal, interest] = data[0].result!
130
131
  const gasCompensation = data[1].result!
131
132
 
133
+ const troveDebt = bigIntMax(
134
+ principal + interest - gasCompensation,
135
+ 0n, // Ensure that debt is not negative
136
+ )
137
+
132
138
  return {
133
139
  collateral,
134
140
  // Principal includes gas compensation value which is not
135
- troveDebt: principal + interest - gasCompensation,
141
+ troveDebt,
136
142
  }
137
143
  },
138
144
  ...queryOptions,
@@ -7,6 +7,8 @@ import {
7
7
  import { useAuthApiClient } from "./useAuthApiClient"
8
8
  import { QUERY_KEYS } from "./constants"
9
9
  import type { CreateAccountRequest, CreateAccountResponse } from "../api"
10
+ import useWalletAccount from "./useWalletAccount"
11
+ import { getBitcoinPublicKeyFromConnector } from "../utils/wagmi"
10
12
 
11
13
  export function useCreateAccount(
12
14
  mutationOptions: Omit<
@@ -16,12 +18,36 @@ export function useCreateAccount(
16
18
  ) {
17
19
  const queryClient = useQueryClient()
18
20
  const authApiClient = useAuthApiClient()
21
+ const { connector } = useWalletAccount()
19
22
 
20
23
  const { onSuccess: customOnSuccess, ...restMutationOptions } = mutationOptions
21
24
 
22
25
  const { mutate, mutateAsync, ...rest } = useMutation({
23
- mutationFn: (createAccountRequest: CreateAccountRequest) =>
24
- authApiClient.createAccount(createAccountRequest),
26
+ mutationFn: async (
27
+ createAccountMutationFnParameters: CreateAccountRequest,
28
+ ) => {
29
+ if (createAccountMutationFnParameters.type === "wallet") {
30
+ if (!connector) {
31
+ throw new Error("Connector not defined.")
32
+ }
33
+
34
+ const bitcoinPublicKey =
35
+ await getBitcoinPublicKeyFromConnector(connector)
36
+
37
+ // Creating bitcoin mezo account
38
+ if (bitcoinPublicKey) {
39
+ return authApiClient.createAccount({
40
+ ...createAccountMutationFnParameters,
41
+ bitcoinPublicKey,
42
+ })
43
+ }
44
+ }
45
+
46
+ // Creating evm mezo account
47
+ return authApiClient.createAccount({
48
+ ...createAccountMutationFnParameters,
49
+ })
50
+ },
25
51
  onSuccess: (data, variables, context) => {
26
52
  queryClient.resetQueries({
27
53
  queryKey: [QUERY_KEYS.ACCOUNT],
@@ -2,7 +2,18 @@ import { useQuery, skipToken, UseBaseQueryOptions } from "@tanstack/react-query"
2
2
  import { useAuthApiClient } from "./useAuthApiClient"
3
3
  import { QUERY_KEYS } from "./constants"
4
4
  import { ONE_MINUTE_MS } from "../utils/time"
5
- import type { GetAccountByMezoIdOrAddressResponse } from "../api"
5
+ import type { AuthApiClient, GetAccountByMezoIdOrAddressResponse } from "../api"
6
+
7
+ export const getAccountByMezoIdQueryKeys = (mezoId?: string) => [
8
+ QUERY_KEYS.ACCOUNT,
9
+ mezoId,
10
+ ]
11
+
12
+ export const getAccountByMezoIdQueryFunction = (
13
+ authApiClient: AuthApiClient,
14
+ mezoId?: string,
15
+ ) =>
16
+ mezoId ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId) : skipToken
6
17
 
7
18
  export function useGetAccountByMezoId(
8
19
  mezoId?: string,
@@ -14,10 +25,8 @@ export function useGetAccountByMezoId(
14
25
  const authApiClient = useAuthApiClient()
15
26
 
16
27
  return useQuery({
17
- queryKey: [QUERY_KEYS.ACCOUNT, mezoId],
18
- queryFn: mezoId
19
- ? () => authApiClient.getAccountByMezoIdOrAddress(mezoId)
20
- : skipToken,
28
+ queryKey: getAccountByMezoIdQueryKeys(mezoId),
29
+ queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
21
30
  staleTime: ONE_MINUTE_MS,
22
31
  retry: 1,
23
32
  ...queryOptions,
@@ -0,0 +1,52 @@
1
+ import { useCallback } from "react"
2
+ import { useQueryClient } from "@tanstack/react-query"
3
+ import { validateUsername } from "../utils/validation"
4
+ import {
5
+ getAccountByMezoIdQueryFunction,
6
+ getAccountByMezoIdQueryKeys,
7
+ } from "./useGetAccountByMezoId"
8
+ import { useAuthApiClient } from "./useAuthApiClient"
9
+ import { ONE_MINUTE_MS } from "../utils/time"
10
+
11
+ export function useIsUsernameValid() {
12
+ const queryClient = useQueryClient()
13
+ const authApiClient = useAuthApiClient()
14
+
15
+ const isUsernameValid = useCallback(
16
+ async (username: string) => {
17
+ const mezoId = `${username}.mezo`
18
+
19
+ let foundUser
20
+ try {
21
+ foundUser = await queryClient.fetchQuery({
22
+ queryKey: getAccountByMezoIdQueryKeys(mezoId),
23
+ queryFn: getAccountByMezoIdQueryFunction(authApiClient, mezoId),
24
+ staleTime: ONE_MINUTE_MS,
25
+ })
26
+ // eslint-disable-next-line no-empty
27
+ } catch (error) {}
28
+
29
+ if (foundUser)
30
+ return {
31
+ isValid: false,
32
+ errors: ["Mezo id already exists."],
33
+ }
34
+
35
+ const errors = validateUsername(username)
36
+ if (errors.length > 0) {
37
+ return {
38
+ isValid: false,
39
+ errors,
40
+ }
41
+ }
42
+
43
+ return {
44
+ isValid: true,
45
+ errors: [],
46
+ }
47
+ },
48
+ [authApiClient, queryClient],
49
+ )
50
+
51
+ return { isUsernameValid }
52
+ }
@@ -5,23 +5,55 @@ import {
5
5
  DefaultError,
6
6
  } from "@tanstack/react-query"
7
7
  import { useAuthApiClient } from "./useAuthApiClient"
8
- import type { LinkAccountRequest, LinkAccountResponse } from "../api"
8
+ import type { LinkAccountResponse, SignatureData } from "../api"
9
9
  import { QUERY_KEYS } from "./constants"
10
+ import useWalletAccount from "./useWalletAccount"
11
+ import { getBitcoinPublicKeyFromConnector } from "../utils/wagmi"
12
+
13
+ type LinkAccountMutationFnParameters =
14
+ | ({ type: "wallet" } & SignatureData)
15
+ | { type: "discord" }
10
16
 
11
17
  export function useLinkAccount(
12
18
  mutationOptions: Omit<
13
- MutationOptions<LinkAccountResponse, DefaultError, LinkAccountRequest>,
19
+ MutationOptions<
20
+ LinkAccountResponse,
21
+ DefaultError,
22
+ LinkAccountMutationFnParameters
23
+ >,
14
24
  "mutationFn" | "mutationKey"
15
25
  > = {},
16
26
  ) {
17
27
  const queryClient = useQueryClient()
18
28
  const authApiClient = useAuthApiClient()
29
+ const { connector } = useWalletAccount()
19
30
 
20
31
  const { onSuccess: customOnSuccess, ...restMutationOptions } = mutationOptions
21
32
 
22
33
  const { mutate, mutateAsync, ...rest } = useMutation({
23
- mutationFn: (linkAccountRequest: LinkAccountRequest) =>
24
- authApiClient.linkAccount(linkAccountRequest),
34
+ mutationFn: async (
35
+ linkAccountMutationFnParameters: LinkAccountMutationFnParameters,
36
+ ) => {
37
+ if (linkAccountMutationFnParameters.type === "wallet") {
38
+ if (!connector) {
39
+ throw new Error("Connector not defined.")
40
+ }
41
+
42
+ const bitcoinPublicKey =
43
+ await getBitcoinPublicKeyFromConnector(connector)
44
+
45
+ // Linking bitcoin account
46
+ if (bitcoinPublicKey) {
47
+ return authApiClient.linkAccount({
48
+ ...linkAccountMutationFnParameters,
49
+ bitcoinPublicKey,
50
+ })
51
+ }
52
+ }
53
+
54
+ // Linking any other account like wallet evm address account or discord
55
+ return authApiClient.linkAccount(linkAccountMutationFnParameters)
56
+ },
25
57
  onSuccess: (data, variables, context) => {
26
58
  queryClient.resetQueries({ queryKey: [QUERY_KEYS.ACCOUNT] })
27
59
  if (customOnSuccess) customOnSuccess(data, variables, context)
@@ -1,4 +1,4 @@
1
- import { OrangeKitBitcoinProvider } from "@mezo-org/orangekit"
1
+ import { OrangeKitConnector } from "@mezo-org/orangekit"
2
2
  import { useQuery } from "@tanstack/react-query"
3
3
  import { useMemo } from "react"
4
4
  import { Address } from "viem"
@@ -13,10 +13,6 @@ type UseWalletAccountReturn = {
13
13
  chainId?: number
14
14
  }
15
15
 
16
- type OrangeKitConnector = {
17
- getBitcoinProvider: () => OrangeKitBitcoinProvider
18
- }
19
-
20
16
  export default function useWalletAccount(): UseWalletAccountReturn {
21
17
  const { address: evmAddress, connector, chainId } = useAccount()
22
18
 
@@ -4,6 +4,7 @@ import {
4
4
  roundUpNumber,
5
5
  formatNumberToLocaleString,
6
6
  fromFixedPointToString,
7
+ bigIntMax,
7
8
  } from "./numbers"
8
9
 
9
10
  describe("formatNumberToCompactString", () => {
@@ -218,3 +219,29 @@ describe("fromFixedPointToString", () => {
218
219
  })
219
220
  })
220
221
  })
222
+
223
+ describe("bigIntMax", () => {
224
+ it("returns the maximum of positive bigint values", () => {
225
+ expect(bigIntMax(1n, 2n, 3n)).toBe(3n)
226
+ })
227
+
228
+ it("returns the maximum of negative bigint values", () => {
229
+ expect(bigIntMax(-10n, -5n, -20n)).toBe(-5n)
230
+ })
231
+
232
+ it("returns the only element if array has one bigint", () => {
233
+ expect(bigIntMax(42n)).toBe(42n)
234
+ })
235
+
236
+ it("works with a mix of positive and negative bigints", () => {
237
+ expect(bigIntMax(-100n, 0n, 50n, -10n)).toBe(50n)
238
+ })
239
+
240
+ it("throws an error if called with no arguments", () => {
241
+ expect(() => bigIntMax()).toThrow()
242
+ })
243
+
244
+ it("returns the correct value when all values are equal", () => {
245
+ expect(bigIntMax(5n, 5n, 5n)).toBe(5n)
246
+ })
247
+ })
@@ -186,3 +186,12 @@ export const fromFloatToBigInt = (
186
186
  decimals,
187
187
  )
188
188
  }
189
+
190
+ /**
191
+ * Utility function to find the maximum value from an array of bigint values.
192
+ * @param values Array of bigint values to find the maximum from.
193
+ * @returns The maximum value from the provided bigint values.
194
+ * @dev Works exactly like `Math.max` but for bigint values.
195
+ */
196
+ export const bigIntMax = (...values: bigint[]) =>
197
+ values.reduce((max, value) => (value > max ? value : max))