@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.
- package/dist/src/api/auth.d.ts +7 -3
- package/dist/src/api/auth.d.ts.map +1 -1
- package/dist/src/api/auth.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +1 -0
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +1 -0
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAuthenticateWithWallet.d.ts.map +1 -1
- package/dist/src/hooks/useAuthenticateWithWallet.js +2 -1
- package/dist/src/hooks/useAuthenticateWithWallet.js.map +1 -1
- package/dist/src/hooks/useBorrowData.d.ts.map +1 -1
- package/dist/src/hooks/useBorrowData.js +3 -1
- package/dist/src/hooks/useBorrowData.js.map +1 -1
- package/dist/src/hooks/useCreateAccount.d.ts.map +1 -1
- package/dist/src/hooks/useCreateAccount.js +22 -1
- package/dist/src/hooks/useCreateAccount.js.map +1 -1
- package/dist/src/hooks/useGetAccountByMezoId.d.ts +4 -2
- package/dist/src/hooks/useGetAccountByMezoId.d.ts.map +1 -1
- package/dist/src/hooks/useGetAccountByMezoId.js +7 -4
- package/dist/src/hooks/useGetAccountByMezoId.js.map +1 -1
- package/dist/src/hooks/useIsUsernameValid.d.ts +7 -0
- package/dist/src/hooks/useIsUsernameValid.d.ts.map +1 -0
- package/dist/src/hooks/useIsUsernameValid.js +41 -0
- package/dist/src/hooks/useIsUsernameValid.js.map +1 -0
- package/dist/src/hooks/useLinkAccount.d.ts +19 -13
- package/dist/src/hooks/useLinkAccount.d.ts.map +1 -1
- package/dist/src/hooks/useLinkAccount.js +20 -1
- package/dist/src/hooks/useLinkAccount.js.map +1 -1
- package/dist/src/hooks/useWalletAccount.d.ts.map +1 -1
- package/dist/src/hooks/useWalletAccount.js.map +1 -1
- package/dist/src/utils/numbers.d.ts +7 -0
- package/dist/src/utils/numbers.d.ts.map +1 -1
- package/dist/src/utils/numbers.js +7 -0
- package/dist/src/utils/numbers.js.map +1 -1
- package/dist/src/utils/numbers.test.js +21 -1
- package/dist/src/utils/numbers.test.js.map +1 -1
- package/dist/src/utils/siww.d.ts +1 -0
- package/dist/src/utils/siww.d.ts.map +1 -1
- package/dist/src/utils/siww.js +50 -12
- package/dist/src/utils/siww.js.map +1 -1
- package/dist/src/utils/validation.d.ts +2 -0
- package/dist/src/utils/validation.d.ts.map +1 -0
- package/dist/src/utils/validation.js +37 -0
- package/dist/src/utils/validation.js.map +1 -0
- package/dist/src/utils/wagmi.d.ts +3 -0
- package/dist/src/utils/wagmi.d.ts.map +1 -0
- package/dist/src/utils/wagmi.js +7 -0
- package/dist/src/utils/wagmi.js.map +1 -0
- package/dist/src/wallet/index.d.ts +1 -1
- package/dist/src/wallet/index.d.ts.map +1 -1
- package/dist/src/wallet/index.js +1 -1
- package/dist/src/wallet/index.js.map +1 -1
- package/package.json +2 -2
- package/src/api/auth.ts +5 -3
- package/src/hooks/constants.ts +1 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useAuthenticateWithWallet.ts +10 -1
- package/src/hooks/useBorrowData.ts +7 -1
- package/src/hooks/useCreateAccount.ts +28 -2
- package/src/hooks/useGetAccountByMezoId.ts +14 -5
- package/src/hooks/useIsUsernameValid.ts +52 -0
- package/src/hooks/useLinkAccount.ts +36 -4
- package/src/hooks/useWalletAccount.ts +1 -5
- package/src/utils/numbers.test.ts +27 -0
- package/src/utils/numbers.ts +9 -0
- package/src/utils/siww.ts +71 -16
- package/src/utils/validation.ts +42 -0
- package/src/utils/wagmi.ts +12 -0
- 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":"AAAA,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,0BAA0B,EAC1B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"numbers.test.js","sourceRoot":"","sources":["../../../src/utils/numbers.test.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils/siww.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/src/utils/siww.js
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/src/wallet/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { getOKXWallet, getUnisatWallet, getXverseWallet,
|
|
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,
|
|
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.
|
|
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.
|
|
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 =
|
|
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
|
package/src/hooks/constants.ts
CHANGED
package/src/hooks/index.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
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: (
|
|
24
|
-
|
|
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:
|
|
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 {
|
|
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<
|
|
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: (
|
|
24
|
-
|
|
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 {
|
|
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
|
+
})
|
package/src/utils/numbers.ts
CHANGED
|
@@ -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))
|