@openfort/react 0.0.2 → 0.0.3
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 +14 -22
- package/build/hooks/openfort/auth/useAuthCallback.d.ts +14 -29
- package/build/hooks/openfort/auth/useCreateWalletPostAuth.d.ts +12 -1
- package/build/hooks/openfort/auth/useEmailAuth.d.ts +13 -3
- package/build/hooks/openfort/auth/useGuestAuth.d.ts +2 -1
- package/build/hooks/openfort/auth/useOAuth.d.ts +17 -3
- package/build/hooks/openfort/useWallets.d.ts +15 -4
- package/build/index.es.js +283 -212
- package/build/index.es.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -10,22 +10,18 @@
|
|
|
10
10
|
Documentation
|
|
11
11
|
</a>
|
|
12
12
|
<span> | </span>
|
|
13
|
-
<a href="https://www.openfort.io/docs/reference/api/authentication">
|
|
14
|
-
API Docs
|
|
15
|
-
</a>
|
|
16
|
-
<span> | </span>
|
|
17
13
|
<a href="https://x.com/openfort_hq">
|
|
18
14
|
X
|
|
19
15
|
</a>
|
|
20
|
-
|
|
21
|
-
<a href="https://
|
|
16
|
+
<span> | </span>
|
|
17
|
+
<a href="https://playground.openfort.io/">
|
|
22
18
|
Demo
|
|
23
19
|
</a>
|
|
24
20
|
</h4>
|
|
25
21
|
</div>
|
|
26
22
|
|
|
27
23
|
|
|
28
|
-
# Openfort
|
|
24
|
+
# Openfort React SDK
|
|
29
25
|
|
|
30
26
|
[](https://www.npmjs.com/package/@openfort/react)
|
|
31
27
|
[](LICENSE)
|
|
@@ -53,24 +49,24 @@ Get started with `create` Openfortkit + [wagmi](https://wagmi.sh/) + [viem](http
|
|
|
53
49
|
#### npm
|
|
54
50
|
|
|
55
51
|
```sh
|
|
56
|
-
npx create
|
|
52
|
+
npx create openfort
|
|
57
53
|
```
|
|
58
54
|
|
|
59
55
|
#### yarn
|
|
60
56
|
|
|
61
57
|
```sh
|
|
62
|
-
yarn create
|
|
58
|
+
yarn create openfort
|
|
63
59
|
```
|
|
64
60
|
|
|
65
61
|
#### pnpm
|
|
66
62
|
|
|
67
63
|
```sh
|
|
68
|
-
pnpm create
|
|
64
|
+
pnpm create openfort
|
|
69
65
|
```
|
|
70
66
|
|
|
71
|
-
### Import `
|
|
67
|
+
### Import `Openfort` to your project
|
|
72
68
|
|
|
73
|
-
Add
|
|
69
|
+
Add Openfort to your already existing project.
|
|
74
70
|
|
|
75
71
|
#### npm
|
|
76
72
|
|
|
@@ -90,25 +86,21 @@ yarn add @openfort/react @tanstack/react-query wagmi viem
|
|
|
90
86
|
pnpm add @openfort/react @tanstack/react-query wagmi viem
|
|
91
87
|
```
|
|
92
88
|
|
|
93
|
-
## Documentation
|
|
94
|
-
|
|
95
|
-
You can find the full OpenfortKit documentation in the Family docs [here]().
|
|
96
|
-
|
|
97
89
|
## Examples
|
|
98
90
|
|
|
99
|
-
There are various runnable examples included in this repository in the [examples folder](https://github.com/openfort-xyz/openfort-
|
|
91
|
+
There are various runnable examples included in this repository in the [examples folder](https://github.com/openfort-xyz/openfort-react/tree/main/examples):
|
|
100
92
|
|
|
101
|
-
- [Create React App Example (TypeScript)](https://github.com/openfort-xyz/openfort-
|
|
102
|
-
- [Next.js Example (TypeScript)](https://github.com/openfort-xyz/openfort-
|
|
103
|
-
- [Vite Example (TypeScript)](https://github.com/openfort-xyz/openfort-
|
|
93
|
+
- [Create React App Example (TypeScript)](https://github.com/openfort-xyz/openfort-react/tree/main/examples/cra)
|
|
94
|
+
- [Next.js Example (TypeScript)](https://github.com/openfort-xyz/openfort-react/tree/main/examples/nextjs)
|
|
95
|
+
- [Vite Example (TypeScript)](https://github.com/openfort-xyz/openfort-react/tree/main/examples/vite)
|
|
104
96
|
|
|
105
97
|
### Running Examples Locally
|
|
106
98
|
|
|
107
|
-
Clone the
|
|
99
|
+
Clone the project and install the necessary dependencies:
|
|
108
100
|
|
|
109
101
|
```sh
|
|
110
102
|
$ git clone git@github.com:openfort-xyz/openfort-kit.git
|
|
111
|
-
$ cd openfort
|
|
103
|
+
$ cd openfort
|
|
112
104
|
$ yarn install
|
|
113
105
|
```
|
|
114
106
|
|
|
@@ -1,39 +1,24 @@
|
|
|
1
1
|
import { OpenfortHookOptions, OpenfortError } from "../../../types";
|
|
2
2
|
import { AuthProvider } from "../../../components/Openfort/types";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
type: "verifyEmail";
|
|
8
|
-
email?: string;
|
|
9
|
-
error?: OpenfortError;
|
|
10
|
-
};
|
|
11
|
-
type StoreCredentialsResult = {
|
|
3
|
+
import { CreateWalletPostAuthOptions } from "./useCreateWalletPostAuth";
|
|
4
|
+
import { EmailVerificationResult } from "./useEmailAuth";
|
|
5
|
+
import { StoreCredentialsResult } from "./useOAuth";
|
|
6
|
+
type CallbackResult = (StoreCredentialsResult & {
|
|
12
7
|
type: "storeCredentials";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
type VerifyEmailOptions = {
|
|
18
|
-
email: string;
|
|
19
|
-
state: string;
|
|
20
|
-
} & OpenfortHookOptions<EmailVerificationResult>;
|
|
21
|
-
type StoreCredentialsOptions = {
|
|
22
|
-
player: string;
|
|
23
|
-
accessToken: string;
|
|
24
|
-
refreshToken: string;
|
|
25
|
-
} & OpenfortHookOptions<StoreCredentialsResult>;
|
|
8
|
+
}) | (EmailVerificationResult & {
|
|
9
|
+
type: "verifyEmail";
|
|
10
|
+
});
|
|
26
11
|
type UseAuthCallbackOptions = {
|
|
27
|
-
|
|
28
|
-
} & OpenfortHookOptions<CallbackResult
|
|
29
|
-
export declare const useAuthCallback: ({
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
} & OpenfortHookOptions<CallbackResult> & CreateWalletPostAuthOptions;
|
|
14
|
+
export declare const useAuthCallback: ({ enabled, ...hookOptions }?: UseAuthCallbackOptions) => {
|
|
15
|
+
email: string | null;
|
|
16
|
+
provider: AuthProvider | null;
|
|
17
|
+
verifyEmail: ({ email, state, ...options }: import("./useEmailAuth").VerifyEmailOptions) => Promise<EmailVerificationResult>;
|
|
18
|
+
storeCredentials: ({ player, accessToken, refreshToken, ...options }: import("./useOAuth").StoreCredentialsOptions) => Promise<StoreCredentialsResult>;
|
|
30
19
|
isLoading: boolean;
|
|
31
20
|
isError: boolean;
|
|
32
21
|
isSuccess: boolean;
|
|
33
22
|
error: OpenfortError | null | undefined;
|
|
34
|
-
email: string | null;
|
|
35
|
-
provider: AuthProvider | null;
|
|
36
|
-
verifyEmail: ({ email, state, ...options }: VerifyEmailOptions) => Promise<EmailVerificationResult>;
|
|
37
|
-
storeCredentials: ({ player, accessToken, refreshToken, ...options }: StoreCredentialsOptions) => Promise<StoreCredentialsResult>;
|
|
38
23
|
};
|
|
39
24
|
export {};
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
export type CreateWalletPostAuthOptions = {
|
|
2
|
+
/**
|
|
3
|
+
* @default true
|
|
4
|
+
* It will log out the user if there is an error while trying to create a wallet (automatic recovery).
|
|
5
|
+
*/
|
|
6
|
+
logoutOnError?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
automaticRecovery?: boolean;
|
|
11
|
+
};
|
|
1
12
|
export declare const useCreateWalletPostAuth: () => {
|
|
2
|
-
tryUseWallet: () => Promise<{
|
|
13
|
+
tryUseWallet: ({ logoutOnError: signOutOnError, automaticRecovery }: CreateWalletPostAuthOptions) => Promise<{
|
|
3
14
|
error?: import("../../..").OpenfortError;
|
|
4
15
|
wallet?: import("../useWallets").UserWallet;
|
|
5
16
|
}>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AuthPlayerResponse as OpenfortUser } from '@openfort/openfort-js';
|
|
2
2
|
import { OpenfortHookOptions, OpenfortError } from "../../../types";
|
|
3
|
+
import { CreateWalletPostAuthOptions } from './useCreateWalletPostAuth';
|
|
3
4
|
import { UserWallet } from '../useWallets';
|
|
4
5
|
export type EmailAuthResult = {
|
|
5
6
|
error?: OpenfortError;
|
|
@@ -11,13 +12,13 @@ export type SignInEmailOptions = {
|
|
|
11
12
|
email: string;
|
|
12
13
|
password: string;
|
|
13
14
|
emailVerificationRedirectTo?: string;
|
|
14
|
-
} & OpenfortHookOptions<EmailAuthResult
|
|
15
|
+
} & OpenfortHookOptions<EmailAuthResult> & CreateWalletPostAuthOptions;
|
|
15
16
|
export type SignUpEmailOptions = {
|
|
16
17
|
email: string;
|
|
17
18
|
password: string;
|
|
18
19
|
name?: string;
|
|
19
20
|
emailVerificationRedirectTo?: string;
|
|
20
|
-
} & OpenfortHookOptions<EmailAuthResult
|
|
21
|
+
} & OpenfortHookOptions<EmailAuthResult> & CreateWalletPostAuthOptions;
|
|
21
22
|
export type RequestResetPasswordOptions = {
|
|
22
23
|
email: string;
|
|
23
24
|
emailVerificationRedirectTo?: string;
|
|
@@ -32,9 +33,17 @@ export type LinkEmailOptions = {
|
|
|
32
33
|
password: string;
|
|
33
34
|
emailVerificationRedirectTo?: string;
|
|
34
35
|
} & OpenfortHookOptions<EmailAuthResult>;
|
|
36
|
+
export type VerifyEmailOptions = {
|
|
37
|
+
email: string;
|
|
38
|
+
state: string;
|
|
39
|
+
} & OpenfortHookOptions<EmailVerificationResult>;
|
|
40
|
+
export type EmailVerificationResult = {
|
|
41
|
+
email?: string;
|
|
42
|
+
error?: OpenfortError;
|
|
43
|
+
};
|
|
35
44
|
export type UseEmailHookOptions = {
|
|
36
45
|
emailVerificationRedirectTo?: string;
|
|
37
|
-
} & OpenfortHookOptions<EmailAuthResult
|
|
46
|
+
} & OpenfortHookOptions<EmailAuthResult | EmailVerificationResult> & CreateWalletPostAuthOptions;
|
|
38
47
|
export declare const useEmailAuth: (hookOptions?: UseEmailHookOptions) => {
|
|
39
48
|
requiresEmailVerification: boolean;
|
|
40
49
|
isAwaitingInput: boolean;
|
|
@@ -44,6 +53,7 @@ export declare const useEmailAuth: (hookOptions?: UseEmailHookOptions) => {
|
|
|
44
53
|
error: OpenfortError | null | undefined;
|
|
45
54
|
signInEmail: (options: SignInEmailOptions) => Promise<EmailAuthResult>;
|
|
46
55
|
signUpEmail: (options: SignUpEmailOptions) => Promise<EmailAuthResult>;
|
|
56
|
+
verifyEmail: ({ email, state, ...options }: VerifyEmailOptions) => Promise<EmailVerificationResult>;
|
|
47
57
|
linkEmail: (options: LinkEmailOptions) => Promise<EmailAuthResult>;
|
|
48
58
|
requestResetPassword: (options: RequestResetPasswordOptions) => Promise<EmailAuthResult>;
|
|
49
59
|
resetPassword: (options: ResetPasswordOptions) => Promise<EmailAuthResult>;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type AuthPlayerResponse as OpenfortUser } from '@openfort/openfort-js';
|
|
2
2
|
import { OpenfortHookOptions, OpenfortError } from "../../../types";
|
|
3
|
+
import { CreateWalletPostAuthOptions } from "./useCreateWalletPostAuth";
|
|
3
4
|
import { UserWallet } from "../useWallets";
|
|
4
5
|
export type GuestHookResult = {
|
|
5
6
|
error?: OpenfortError;
|
|
6
7
|
user?: OpenfortUser;
|
|
7
8
|
wallet?: UserWallet;
|
|
8
9
|
};
|
|
9
|
-
export type GuestHookOptions = OpenfortHookOptions<OpenfortUser
|
|
10
|
+
export type GuestHookOptions = OpenfortHookOptions<OpenfortUser> & CreateWalletPostAuthOptions;
|
|
10
11
|
export declare const useGuestAuth: (hookOptions?: GuestHookOptions) => {
|
|
11
12
|
isLoading: boolean;
|
|
12
13
|
isError: boolean;
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
import { AuthProvider } from '../../../components/Openfort/types';
|
|
2
2
|
import { OpenfortHookOptions, OpenfortError } from '../../../types';
|
|
3
|
+
import { CreateWalletPostAuthOptions } from './useCreateWalletPostAuth';
|
|
4
|
+
import { UserWallet } from "../useWallets";
|
|
5
|
+
import { type AuthPlayerResponse as OpenfortUser } from '@openfort/openfort-js';
|
|
3
6
|
export type InitializeOAuthOptions = {
|
|
4
7
|
provider: AuthProvider;
|
|
5
8
|
redirectTo?: string;
|
|
6
9
|
} & OpenfortHookOptions;
|
|
7
|
-
export type AuthHookOptions = {
|
|
8
|
-
redirectTo?: string;
|
|
9
|
-
} & OpenfortHookOptions;
|
|
10
10
|
export type InitOAuthReturnType = {
|
|
11
11
|
error?: OpenfortError;
|
|
12
12
|
};
|
|
13
|
+
export type StoreCredentialsResult = {
|
|
14
|
+
user?: OpenfortUser;
|
|
15
|
+
wallet?: UserWallet;
|
|
16
|
+
error?: OpenfortError;
|
|
17
|
+
};
|
|
18
|
+
export type StoreCredentialsOptions = {
|
|
19
|
+
player: string;
|
|
20
|
+
accessToken: string;
|
|
21
|
+
refreshToken: string;
|
|
22
|
+
} & OpenfortHookOptions<StoreCredentialsResult> & CreateWalletPostAuthOptions;
|
|
23
|
+
export type AuthHookOptions = {
|
|
24
|
+
redirectTo?: string;
|
|
25
|
+
} & OpenfortHookOptions<StoreCredentialsResult> & CreateWalletPostAuthOptions;
|
|
13
26
|
export declare const useOAuth: (hookOptions?: AuthHookOptions) => {
|
|
14
27
|
isLoading: boolean;
|
|
15
28
|
isError: boolean;
|
|
@@ -17,4 +30,5 @@ export declare const useOAuth: (hookOptions?: AuthHookOptions) => {
|
|
|
17
30
|
error: OpenfortError | null | undefined;
|
|
18
31
|
initOAuth: (options: InitializeOAuthOptions) => Promise<InitOAuthReturnType>;
|
|
19
32
|
linkOauth: (options: InitializeOAuthOptions) => Promise<InitOAuthReturnType>;
|
|
33
|
+
storeCredentials: ({ player, accessToken, refreshToken, ...options }: StoreCredentialsOptions) => Promise<StoreCredentialsResult>;
|
|
20
34
|
};
|
|
@@ -9,7 +9,8 @@ export type UserWallet = {
|
|
|
9
9
|
connector?: Connector;
|
|
10
10
|
id: string;
|
|
11
11
|
isAvailable: boolean;
|
|
12
|
-
isActive
|
|
12
|
+
isActive?: boolean;
|
|
13
|
+
isConnecting?: boolean;
|
|
13
14
|
};
|
|
14
15
|
type SetActiveWalletResult = {
|
|
15
16
|
error?: OpenfortError;
|
|
@@ -31,11 +32,21 @@ type CreateWalletOptions = {
|
|
|
31
32
|
type WalletOptions = OpenfortHookOptions<SetActiveWalletResult | CreateWalletResult>;
|
|
32
33
|
export declare function useWallets(hookOptions?: WalletOptions): {
|
|
33
34
|
exportPrivateKey: () => Promise<string>;
|
|
34
|
-
|
|
35
|
+
error: OpenfortError | null | undefined;
|
|
35
36
|
isError: boolean;
|
|
36
37
|
isSuccess: boolean;
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
isCreating: boolean;
|
|
39
|
+
isConnecting: boolean;
|
|
40
|
+
wallets: {
|
|
41
|
+
isConnecting: boolean;
|
|
42
|
+
isActive: boolean;
|
|
43
|
+
address?: `0x${string}`;
|
|
44
|
+
connectorType?: string;
|
|
45
|
+
walletClientType?: string;
|
|
46
|
+
connector?: Connector;
|
|
47
|
+
id: string;
|
|
48
|
+
isAvailable: boolean;
|
|
49
|
+
}[];
|
|
39
50
|
availableWallets: import("../../wallets/useWallets").WalletProps[];
|
|
40
51
|
activeWallet: UserWallet | undefined;
|
|
41
52
|
setActiveWallet: (options: SetActiveWalletOptions | string) => Promise<SetActiveWalletResult>;
|
package/build/index.es.js
CHANGED
|
@@ -22,7 +22,7 @@ import { createSiweMessage } from 'viem/siwe';
|
|
|
22
22
|
import { signMessage } from '@wagmi/core';
|
|
23
23
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
24
24
|
|
|
25
|
-
const OPENFORTKIT_VERSION = '0.0.
|
|
25
|
+
const OPENFORTKIT_VERSION = '0.0.3';
|
|
26
26
|
|
|
27
27
|
var OpenfortErrorType;
|
|
28
28
|
(function (OpenfortErrorType) {
|
|
@@ -10941,15 +10941,6 @@ const Providers = () => {
|
|
|
10941
10941
|
return (jsxs(PageContent, { children: [(filteredProviders).map((auth) => (jsx(ProviderButtonSwitch, { provider: auth }, auth))), hasExcessProviders && jsx(SocialProvidersButton, {}), jsx(PoweredByFooter, { showDisclaimer: true })] }));
|
|
10942
10942
|
};
|
|
10943
10943
|
|
|
10944
|
-
const mapStatus = (status) => {
|
|
10945
|
-
return {
|
|
10946
|
-
isLoading: status.status === 'loading',
|
|
10947
|
-
isError: status.status === 'error',
|
|
10948
|
-
isSuccess: status.status === 'success',
|
|
10949
|
-
error: status.error
|
|
10950
|
-
};
|
|
10951
|
-
};
|
|
10952
|
-
|
|
10953
10944
|
const onSuccess = ({ hookOptions, options, data, }) => {
|
|
10954
10945
|
var _a, _b, _c, _d;
|
|
10955
10946
|
(_a = hookOptions === null || hookOptions === void 0 ? void 0 : hookOptions.onSuccess) === null || _a === void 0 ? void 0 : _a.call(hookOptions, data);
|
|
@@ -10969,14 +10960,22 @@ const onError = ({ hookOptions, options, error, }) => {
|
|
|
10969
10960
|
return { error };
|
|
10970
10961
|
};
|
|
10971
10962
|
|
|
10972
|
-
const createOpenfortWallet = ({ address,
|
|
10963
|
+
const createOpenfortWallet = ({ address, }) => ({
|
|
10973
10964
|
connectorType: "embedded",
|
|
10974
10965
|
walletClientType: "openfort",
|
|
10975
10966
|
address,
|
|
10976
10967
|
id: embeddedWalletId,
|
|
10977
10968
|
isAvailable: true,
|
|
10978
|
-
isActive,
|
|
10979
10969
|
});
|
|
10970
|
+
const mapStatus$1 = (status) => {
|
|
10971
|
+
return {
|
|
10972
|
+
error: status.error,
|
|
10973
|
+
isError: status.status === 'error',
|
|
10974
|
+
isSuccess: status.status === 'success',
|
|
10975
|
+
isCreating: status.status === 'creating',
|
|
10976
|
+
isConnecting: status.status === 'connecting',
|
|
10977
|
+
};
|
|
10978
|
+
};
|
|
10980
10979
|
function useWallets(hookOptions = {}) {
|
|
10981
10980
|
const { user, embeddedState, client } = useOpenfortCore();
|
|
10982
10981
|
const { walletConfig, log, setOpen, setRoute, setConnector, uiConfig } = useOpenfortKit();
|
|
@@ -11056,17 +11055,18 @@ function useWallets(hookOptions = {}) {
|
|
|
11056
11055
|
walletClientType: a.walletClientType,
|
|
11057
11056
|
id: (wallet === null || wallet === void 0 ? void 0 : wallet.id) || a.walletClientType || "unknown",
|
|
11058
11057
|
isAvailable: !!wallet,
|
|
11059
|
-
isActive: (connector === null || connector === void 0 ? void 0 : connector.id) === a.walletClientType && address === a.address,
|
|
11060
11058
|
};
|
|
11061
11059
|
}) : [];
|
|
11062
11060
|
embeddedWallets === null || embeddedWallets === void 0 ? void 0 : embeddedWallets.forEach((wallet) => {
|
|
11061
|
+
// Remove duplicates (different chain ids)
|
|
11062
|
+
if (userWallets.find(w => w.address === (wallet.address)))
|
|
11063
|
+
return;
|
|
11063
11064
|
userWallets.push(createOpenfortWallet({
|
|
11064
11065
|
address: wallet.address,
|
|
11065
|
-
isActive: wallet.address === address,
|
|
11066
11066
|
}));
|
|
11067
11067
|
});
|
|
11068
11068
|
return userWallets;
|
|
11069
|
-
}, [user
|
|
11069
|
+
}, [user === null || user === void 0 ? void 0 : user.linkedAccounts, embeddedWallets]);
|
|
11070
11070
|
const activeWallet = isConnected && connector ? wallets.find((w) => w.isActive) : undefined;
|
|
11071
11071
|
useEffect(() => {
|
|
11072
11072
|
if (connectToConnector)
|
|
@@ -11143,7 +11143,8 @@ function useWallets(hookOptions = {}) {
|
|
|
11143
11143
|
log("Setting active wallet", { options: optionsObject, chainId });
|
|
11144
11144
|
if (isOpenfortWallet(optionsObject)) {
|
|
11145
11145
|
setStatus({
|
|
11146
|
-
status: '
|
|
11146
|
+
status: 'connecting',
|
|
11147
|
+
address: optionsObject.address,
|
|
11147
11148
|
});
|
|
11148
11149
|
const { password } = optionsObject;
|
|
11149
11150
|
if (!walletConfig) {
|
|
@@ -11153,12 +11154,13 @@ function useWallets(hookOptions = {}) {
|
|
|
11153
11154
|
hookOptions
|
|
11154
11155
|
});
|
|
11155
11156
|
}
|
|
11156
|
-
log(`Handling recovery with Openfort:
|
|
11157
|
+
log(`Handling recovery with Openfort: ${password ? "with password" : "without password"}, chainId=${chainId}`);
|
|
11157
11158
|
try {
|
|
11158
11159
|
const accessToken = await client.getAccessToken();
|
|
11159
11160
|
if (!accessToken) {
|
|
11160
11161
|
throw new Error("Openfort access token not found");
|
|
11161
11162
|
}
|
|
11163
|
+
log("Access token");
|
|
11162
11164
|
const shieldAuthentication = password ? {
|
|
11163
11165
|
auth: ShieldAuthType.OPENFORT,
|
|
11164
11166
|
token: accessToken,
|
|
@@ -11169,13 +11171,14 @@ function useWallets(hookOptions = {}) {
|
|
|
11169
11171
|
await walletConfig.getEncryptionSession() :
|
|
11170
11172
|
await getEncryptionSession(),
|
|
11171
11173
|
};
|
|
11174
|
+
log("Shield authentication");
|
|
11172
11175
|
const recoveryParams = password ? {
|
|
11173
11176
|
recoveryMethod: RecoveryMethod.PASSWORD,
|
|
11174
11177
|
password,
|
|
11175
11178
|
} : {
|
|
11176
11179
|
recoveryMethod: RecoveryMethod.AUTOMATIC,
|
|
11177
11180
|
};
|
|
11178
|
-
log("Recovery params",
|
|
11181
|
+
log("Recovery params", optionsObject.address);
|
|
11179
11182
|
if (optionsObject.address) {
|
|
11180
11183
|
const walletId = (_a = embeddedWallets === null || embeddedWallets === void 0 ? void 0 : embeddedWallets.find((w) => w.address === optionsObject.address && w.chainId === chainId)) === null || _a === void 0 ? void 0 : _a.id;
|
|
11181
11184
|
if (!walletId) {
|
|
@@ -11212,7 +11215,6 @@ function useWallets(hookOptions = {}) {
|
|
|
11212
11215
|
data: {
|
|
11213
11216
|
wallet: createOpenfortWallet({
|
|
11214
11217
|
address: optionsObject.address,
|
|
11215
|
-
isActive: true,
|
|
11216
11218
|
}),
|
|
11217
11219
|
},
|
|
11218
11220
|
options: optionsObject,
|
|
@@ -11248,7 +11250,8 @@ function useWallets(hookOptions = {}) {
|
|
|
11248
11250
|
}
|
|
11249
11251
|
else {
|
|
11250
11252
|
setStatus({
|
|
11251
|
-
status: '
|
|
11253
|
+
status: 'connecting',
|
|
11254
|
+
address: optionsObject.address,
|
|
11252
11255
|
});
|
|
11253
11256
|
setConnectToConnector({
|
|
11254
11257
|
address: optionsObject.address,
|
|
@@ -11260,8 +11263,9 @@ function useWallets(hookOptions = {}) {
|
|
|
11260
11263
|
const createWallet = useCallback(async ({ password, ...options } = {}) => {
|
|
11261
11264
|
var _a;
|
|
11262
11265
|
setStatus({
|
|
11263
|
-
status: '
|
|
11266
|
+
status: 'creating',
|
|
11264
11267
|
});
|
|
11268
|
+
log("Creating wallet", { password: !!password, options });
|
|
11265
11269
|
const accessToken = await client.getAccessToken();
|
|
11266
11270
|
if (!accessToken) {
|
|
11267
11271
|
return onError({
|
|
@@ -11277,10 +11281,7 @@ function useWallets(hookOptions = {}) {
|
|
|
11277
11281
|
options,
|
|
11278
11282
|
});
|
|
11279
11283
|
}
|
|
11280
|
-
const shieldAuthentication =
|
|
11281
|
-
auth: ShieldAuthType.OPENFORT,
|
|
11282
|
-
token: accessToken,
|
|
11283
|
-
} : {
|
|
11284
|
+
const shieldAuthentication = {
|
|
11284
11285
|
auth: ShieldAuthType.OPENFORT,
|
|
11285
11286
|
token: accessToken,
|
|
11286
11287
|
encryptionSession: walletConfig.getEncryptionSession ?
|
|
@@ -11308,18 +11309,21 @@ function useWallets(hookOptions = {}) {
|
|
|
11308
11309
|
data: {
|
|
11309
11310
|
wallet: createOpenfortWallet({
|
|
11310
11311
|
address: wallet.address,
|
|
11311
|
-
isActive: true,
|
|
11312
11312
|
})
|
|
11313
11313
|
}
|
|
11314
11314
|
});
|
|
11315
11315
|
}, [refetch, client, uiConfig, chainId]);
|
|
11316
11316
|
return {
|
|
11317
|
-
wallets
|
|
11317
|
+
wallets: wallets.map((w) => ({
|
|
11318
|
+
...w,
|
|
11319
|
+
isConnecting: status.status === 'connecting' && status.address === w.address,
|
|
11320
|
+
isActive: w.address === address && isConnected && (connector === null || connector === void 0 ? void 0 : connector.id) === w.id,
|
|
11321
|
+
})),
|
|
11318
11322
|
availableWallets: deviceWallets,
|
|
11319
11323
|
activeWallet,
|
|
11320
11324
|
setActiveWallet,
|
|
11321
11325
|
createWallet,
|
|
11322
|
-
...mapStatus(status),
|
|
11326
|
+
...mapStatus$1(status),
|
|
11323
11327
|
exportPrivateKey: client.embeddedWallet.exportPrivateKey,
|
|
11324
11328
|
};
|
|
11325
11329
|
}
|
|
@@ -11719,6 +11723,7 @@ const OpenfortProvider = ({ children, uiConfig, onConnect, onDisconnect, debugMo
|
|
|
11719
11723
|
}, shieldConfiguration: walletConfig ? {
|
|
11720
11724
|
shieldPublishableKey: walletConfig.shieldPublishableKey,
|
|
11721
11725
|
shieldEncryptionKey: walletConfig.recoveryMethod === RecoveryMethod.PASSWORD ? walletConfig.shieldEncryptionKey : undefined,
|
|
11726
|
+
debug: debugMode,
|
|
11722
11727
|
} : undefined, overrides: opts.openfortUrlOverrides, debugMode: debugMode, onConnect: onConnect, onDisconnect: onDisconnect, children: [children, jsx(ConnectModal, { lang: ckLang, theme: ckTheme, mode: (_j = uiConfig === null || uiConfig === void 0 ? void 0 : uiConfig.mode) !== null && _j !== void 0 ? _j : ckMode, customTheme: ckCustomTheme })] }) }) }));
|
|
11723
11728
|
};
|
|
11724
11729
|
|
|
@@ -12300,17 +12305,72 @@ const buildCallbackUrl = ({ email, callbackUrl, provider, }) => {
|
|
|
12300
12305
|
return redirectUrl.toString();
|
|
12301
12306
|
};
|
|
12302
12307
|
|
|
12308
|
+
const mapStatus = (status) => {
|
|
12309
|
+
return {
|
|
12310
|
+
isLoading: status.status === 'loading',
|
|
12311
|
+
isError: status.status === 'error',
|
|
12312
|
+
isSuccess: status.status === 'success',
|
|
12313
|
+
error: status.error
|
|
12314
|
+
};
|
|
12315
|
+
};
|
|
12316
|
+
|
|
12317
|
+
function useSignOut(hookOptions = {}) {
|
|
12318
|
+
const { client, updateUser, user } = useOpenfortCore();
|
|
12319
|
+
const [status, setStatus] = useState({
|
|
12320
|
+
status: "idle",
|
|
12321
|
+
});
|
|
12322
|
+
const { disconnect } = useDisconnect();
|
|
12323
|
+
const signOut = useCallback(async (options = {}) => {
|
|
12324
|
+
if (!user)
|
|
12325
|
+
return;
|
|
12326
|
+
setStatus({
|
|
12327
|
+
status: 'loading',
|
|
12328
|
+
});
|
|
12329
|
+
try {
|
|
12330
|
+
await client.auth.logout();
|
|
12331
|
+
disconnect();
|
|
12332
|
+
updateUser();
|
|
12333
|
+
setStatus({
|
|
12334
|
+
status: 'success',
|
|
12335
|
+
});
|
|
12336
|
+
return onSuccess({
|
|
12337
|
+
hookOptions,
|
|
12338
|
+
options,
|
|
12339
|
+
data: {},
|
|
12340
|
+
});
|
|
12341
|
+
}
|
|
12342
|
+
catch (error) {
|
|
12343
|
+
setStatus({
|
|
12344
|
+
status: 'error',
|
|
12345
|
+
error: new OpenfortError('Failed to sign out', OpenfortErrorType.AUTHENTICATION_ERROR, { error }),
|
|
12346
|
+
});
|
|
12347
|
+
throw error;
|
|
12348
|
+
}
|
|
12349
|
+
}, [client, user, disconnect, updateUser, setStatus, hookOptions]);
|
|
12350
|
+
return {
|
|
12351
|
+
...mapStatus(status),
|
|
12352
|
+
signOut,
|
|
12353
|
+
};
|
|
12354
|
+
}
|
|
12355
|
+
|
|
12303
12356
|
// this hook is used to create a wallet after the user has authenticated
|
|
12304
12357
|
const useCreateWalletPostAuth = () => {
|
|
12305
12358
|
const { setActiveWallet } = useWallets();
|
|
12306
12359
|
const { walletConfig } = useOpenfortKit();
|
|
12307
|
-
const
|
|
12308
|
-
|
|
12360
|
+
const { signOut } = useSignOut();
|
|
12361
|
+
const tryUseWallet = useCallback(async ({ logoutOnError: signOutOnError = true, automaticRecovery = true }) => {
|
|
12362
|
+
if (!walletConfig || walletConfig.recoveryMethod !== RecoveryMethod.AUTOMATIC || !automaticRecovery) {
|
|
12309
12363
|
return {};
|
|
12310
|
-
|
|
12364
|
+
}
|
|
12365
|
+
const wallet = await setActiveWallet({
|
|
12311
12366
|
connector: embeddedWalletId,
|
|
12312
12367
|
});
|
|
12313
|
-
|
|
12368
|
+
if (wallet.error && signOutOnError) {
|
|
12369
|
+
// If there was an error and we should log out, we can call the logout function
|
|
12370
|
+
await signOut();
|
|
12371
|
+
}
|
|
12372
|
+
return wallet;
|
|
12373
|
+
}, [walletConfig, setActiveWallet, signOut]);
|
|
12314
12374
|
return {
|
|
12315
12375
|
tryUseWallet,
|
|
12316
12376
|
};
|
|
@@ -12361,7 +12421,10 @@ const useEmailAuth = (hookOptions = {}) => {
|
|
|
12361
12421
|
});
|
|
12362
12422
|
}
|
|
12363
12423
|
else {
|
|
12364
|
-
const { wallet } = await tryUseWallet(
|
|
12424
|
+
const { wallet } = await tryUseWallet({
|
|
12425
|
+
logoutOnError: options.logoutOnError || hookOptions.logoutOnError,
|
|
12426
|
+
automaticRecovery: options.automaticRecovery || hookOptions.automaticRecovery,
|
|
12427
|
+
});
|
|
12365
12428
|
setStatus({
|
|
12366
12429
|
status: 'success',
|
|
12367
12430
|
});
|
|
@@ -12491,7 +12554,10 @@ const useEmailAuth = (hookOptions = {}) => {
|
|
|
12491
12554
|
});
|
|
12492
12555
|
}
|
|
12493
12556
|
else {
|
|
12494
|
-
const { wallet } = await tryUseWallet(
|
|
12557
|
+
const { wallet } = await tryUseWallet({
|
|
12558
|
+
logoutOnError: options.logoutOnError || hookOptions.logoutOnError,
|
|
12559
|
+
automaticRecovery: options.automaticRecovery || hookOptions.automaticRecovery,
|
|
12560
|
+
});
|
|
12495
12561
|
setStatus({
|
|
12496
12562
|
status: 'success',
|
|
12497
12563
|
});
|
|
@@ -12582,34 +12648,10 @@ const useEmailAuth = (hookOptions = {}) => {
|
|
|
12582
12648
|
});
|
|
12583
12649
|
}
|
|
12584
12650
|
}, [client, setStatus, updateUser, log, hookOptions]);
|
|
12585
|
-
return {
|
|
12586
|
-
signInEmail,
|
|
12587
|
-
signUpEmail,
|
|
12588
|
-
linkEmail,
|
|
12589
|
-
requestResetPassword,
|
|
12590
|
-
resetPassword,
|
|
12591
|
-
reset,
|
|
12592
|
-
...mapStatus(status),
|
|
12593
|
-
requiresEmailVerification,
|
|
12594
|
-
isAwaitingInput: status.status === 'awaiting-input',
|
|
12595
|
-
};
|
|
12596
|
-
};
|
|
12597
|
-
|
|
12598
|
-
const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically handle OAuth and email callback
|
|
12599
|
-
...hookOptions } = {}) => {
|
|
12600
|
-
const { log } = useOpenfortKit();
|
|
12601
|
-
const [status, setStatus] = useState({
|
|
12602
|
-
status: "idle",
|
|
12603
|
-
});
|
|
12604
|
-
const { client, updateUser } = useOpenfortCore();
|
|
12605
|
-
const [provider, setProvider] = useState(null);
|
|
12606
|
-
const [email, setEmail] = useState(null);
|
|
12607
|
-
const { tryUseWallet } = useCreateWalletPostAuth();
|
|
12608
12651
|
const verifyEmail = useCallback(async ({ email, state, ...options }) => {
|
|
12609
12652
|
setStatus({
|
|
12610
12653
|
status: 'loading',
|
|
12611
12654
|
});
|
|
12612
|
-
setEmail(email);
|
|
12613
12655
|
try {
|
|
12614
12656
|
await client.auth.verifyEmail({
|
|
12615
12657
|
email,
|
|
@@ -12621,7 +12663,9 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12621
12663
|
return onSuccess({
|
|
12622
12664
|
hookOptions,
|
|
12623
12665
|
options,
|
|
12624
|
-
data: {
|
|
12666
|
+
data: {
|
|
12667
|
+
email,
|
|
12668
|
+
},
|
|
12625
12669
|
});
|
|
12626
12670
|
}
|
|
12627
12671
|
catch (e) {
|
|
@@ -12631,14 +12675,48 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12631
12675
|
error,
|
|
12632
12676
|
});
|
|
12633
12677
|
log("Error verifying email", e);
|
|
12634
|
-
onError({
|
|
12678
|
+
return onError({
|
|
12635
12679
|
hookOptions,
|
|
12636
12680
|
options,
|
|
12637
12681
|
error,
|
|
12638
12682
|
});
|
|
12639
|
-
return { error, type: "verifyEmail" };
|
|
12640
12683
|
}
|
|
12641
12684
|
}, [client, log, hookOptions]);
|
|
12685
|
+
return {
|
|
12686
|
+
signInEmail,
|
|
12687
|
+
signUpEmail,
|
|
12688
|
+
verifyEmail,
|
|
12689
|
+
linkEmail,
|
|
12690
|
+
requestResetPassword,
|
|
12691
|
+
resetPassword,
|
|
12692
|
+
reset,
|
|
12693
|
+
...mapStatus(status),
|
|
12694
|
+
requiresEmailVerification,
|
|
12695
|
+
isAwaitingInput: status.status === 'awaiting-input',
|
|
12696
|
+
};
|
|
12697
|
+
};
|
|
12698
|
+
|
|
12699
|
+
const providerToAuthProvider = {
|
|
12700
|
+
// [OAuthProvider.APPLE]: AuthProvider.,
|
|
12701
|
+
// [OAuthProvider.DISCORD]: AuthProvider.,
|
|
12702
|
+
// [OAuthProvider.EPIC_GAMES]: AuthProvider.,
|
|
12703
|
+
[AuthProvider.FACEBOOK]: OAuthProvider.FACEBOOK,
|
|
12704
|
+
[AuthProvider.GOOGLE]: OAuthProvider.GOOGLE,
|
|
12705
|
+
// [OAuthProvider.LINE]: AuthProvider.,
|
|
12706
|
+
[AuthProvider.TWITTER]: OAuthProvider.TWITTER,
|
|
12707
|
+
};
|
|
12708
|
+
function getOAuthProvider(provider) {
|
|
12709
|
+
if (!providerToAuthProvider[provider]) {
|
|
12710
|
+
throw new Error(`Unsupported OAuth provider: ${provider}`);
|
|
12711
|
+
}
|
|
12712
|
+
return providerToAuthProvider[provider];
|
|
12713
|
+
}
|
|
12714
|
+
const useOAuth = (hookOptions = {}) => {
|
|
12715
|
+
const { client, updateUser } = useOpenfortCore();
|
|
12716
|
+
const [status, setStatus] = useState({
|
|
12717
|
+
status: "idle",
|
|
12718
|
+
});
|
|
12719
|
+
const { tryUseWallet } = useCreateWalletPostAuth();
|
|
12642
12720
|
const storeCredentials = useCallback(async ({ player, accessToken, refreshToken, ...options }) => {
|
|
12643
12721
|
setStatus({
|
|
12644
12722
|
status: 'loading',
|
|
@@ -12653,7 +12731,10 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12653
12731
|
status: 'success',
|
|
12654
12732
|
});
|
|
12655
12733
|
const user = await updateUser() || undefined;
|
|
12656
|
-
const { wallet } = await tryUseWallet(
|
|
12734
|
+
const { wallet } = await tryUseWallet({
|
|
12735
|
+
logoutOnError: options.logoutOnError || hookOptions.logoutOnError,
|
|
12736
|
+
automaticRecovery: options.automaticRecovery || hookOptions.automaticRecovery,
|
|
12737
|
+
});
|
|
12657
12738
|
return onSuccess({
|
|
12658
12739
|
data: { user, wallet, type: "storeCredentials" },
|
|
12659
12740
|
hookOptions,
|
|
@@ -12666,17 +12747,105 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12666
12747
|
status: 'error',
|
|
12667
12748
|
error,
|
|
12668
12749
|
});
|
|
12669
|
-
|
|
12670
|
-
onError({
|
|
12750
|
+
return onError({
|
|
12671
12751
|
hookOptions,
|
|
12672
12752
|
options,
|
|
12673
12753
|
error,
|
|
12674
12754
|
});
|
|
12675
|
-
return { error, type: "storeCredentials" };
|
|
12676
12755
|
}
|
|
12677
|
-
}, [client,
|
|
12756
|
+
}, [client, hookOptions]);
|
|
12757
|
+
const initOAuth = useCallback(async (options) => {
|
|
12758
|
+
var _a;
|
|
12759
|
+
const authProvider = options.provider;
|
|
12760
|
+
try {
|
|
12761
|
+
setStatus({
|
|
12762
|
+
status: 'loading',
|
|
12763
|
+
});
|
|
12764
|
+
await client.auth.initOAuth({
|
|
12765
|
+
provider: getOAuthProvider(authProvider),
|
|
12766
|
+
options: {
|
|
12767
|
+
redirectTo: buildCallbackUrl({
|
|
12768
|
+
provider: authProvider,
|
|
12769
|
+
callbackUrl: (_a = hookOptions === null || hookOptions === void 0 ? void 0 : hookOptions.redirectTo) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.redirectTo,
|
|
12770
|
+
})
|
|
12771
|
+
},
|
|
12772
|
+
});
|
|
12773
|
+
return onSuccess({
|
|
12774
|
+
data: {},
|
|
12775
|
+
hookOptions,
|
|
12776
|
+
options,
|
|
12777
|
+
});
|
|
12778
|
+
}
|
|
12779
|
+
catch (e) {
|
|
12780
|
+
const error = new OpenfortError("Failed to login with OAuth", OpenfortErrorType.AUTHENTICATION_ERROR, { error: e });
|
|
12781
|
+
setStatus({
|
|
12782
|
+
status: 'error',
|
|
12783
|
+
error
|
|
12784
|
+
});
|
|
12785
|
+
return onError({
|
|
12786
|
+
hookOptions,
|
|
12787
|
+
options,
|
|
12788
|
+
error,
|
|
12789
|
+
});
|
|
12790
|
+
}
|
|
12791
|
+
}, [client, setStatus, updateUser, hookOptions]);
|
|
12792
|
+
const linkOauth = useCallback(async (options) => {
|
|
12793
|
+
var _a;
|
|
12794
|
+
const authProvider = options.provider;
|
|
12795
|
+
try {
|
|
12796
|
+
setStatus({
|
|
12797
|
+
status: 'loading',
|
|
12798
|
+
});
|
|
12799
|
+
const authToken = await client.getAccessToken();
|
|
12800
|
+
if (!authToken) {
|
|
12801
|
+
throw new OpenfortError("No auth token found", OpenfortErrorType.AUTHENTICATION_ERROR);
|
|
12802
|
+
}
|
|
12803
|
+
await client.auth.initLinkOAuth({
|
|
12804
|
+
authToken,
|
|
12805
|
+
provider: getOAuthProvider(authProvider),
|
|
12806
|
+
options: {
|
|
12807
|
+
redirectTo: buildCallbackUrl({
|
|
12808
|
+
provider: authProvider,
|
|
12809
|
+
callbackUrl: (_a = options === null || options === void 0 ? void 0 : options.redirectTo) !== null && _a !== void 0 ? _a : hookOptions === null || hookOptions === void 0 ? void 0 : hookOptions.redirectTo,
|
|
12810
|
+
})
|
|
12811
|
+
},
|
|
12812
|
+
});
|
|
12813
|
+
return onSuccess({
|
|
12814
|
+
data: {},
|
|
12815
|
+
hookOptions,
|
|
12816
|
+
options,
|
|
12817
|
+
});
|
|
12818
|
+
}
|
|
12819
|
+
catch (e) {
|
|
12820
|
+
const error = new OpenfortError("Failed to link OAuth", OpenfortErrorType.AUTHENTICATION_ERROR, { error: e });
|
|
12821
|
+
setStatus({
|
|
12822
|
+
status: 'error',
|
|
12823
|
+
error
|
|
12824
|
+
});
|
|
12825
|
+
return onError({
|
|
12826
|
+
hookOptions,
|
|
12827
|
+
options,
|
|
12828
|
+
error,
|
|
12829
|
+
});
|
|
12830
|
+
}
|
|
12831
|
+
}, [client, setStatus, updateUser, hookOptions]);
|
|
12832
|
+
return {
|
|
12833
|
+
initOAuth,
|
|
12834
|
+
linkOauth,
|
|
12835
|
+
storeCredentials,
|
|
12836
|
+
...mapStatus(status),
|
|
12837
|
+
};
|
|
12838
|
+
};
|
|
12839
|
+
|
|
12840
|
+
const useAuthCallback = ({ enabled = true, // Automatically handle OAuth and email callback
|
|
12841
|
+
...hookOptions } = {}) => {
|
|
12842
|
+
const { log } = useOpenfortKit();
|
|
12843
|
+
const [provider, setProvider] = useState(null);
|
|
12844
|
+
const [email, setEmail] = useState(null);
|
|
12845
|
+
const { verifyEmail, isSuccess: isEmailSuccess, isLoading: isEmailLoading, isError: isEmailError, error: emailError, } = useEmailAuth();
|
|
12846
|
+
const { storeCredentials, isSuccess: isOAuthSuccess, isLoading: isOAuthLoading, isError: isOAuthError, error: oAuthError, } = useOAuth();
|
|
12678
12847
|
useEffect(() => {
|
|
12679
|
-
if (!
|
|
12848
|
+
if (!enabled)
|
|
12680
12849
|
return;
|
|
12681
12850
|
(async () => {
|
|
12682
12851
|
// redirectUrl is not working with query params OF-1013
|
|
@@ -12705,7 +12874,26 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12705
12874
|
window.history.replaceState({}, document.title, url.toString());
|
|
12706
12875
|
};
|
|
12707
12876
|
log("EmailVerification", state, email);
|
|
12708
|
-
|
|
12877
|
+
const options = {
|
|
12878
|
+
onSuccess: (data) => {
|
|
12879
|
+
var _a;
|
|
12880
|
+
(_a = hookOptions.onSuccess) === null || _a === void 0 ? void 0 : _a.call(hookOptions, {
|
|
12881
|
+
...data,
|
|
12882
|
+
type: "verifyEmail",
|
|
12883
|
+
});
|
|
12884
|
+
},
|
|
12885
|
+
onSettled: (data, error) => {
|
|
12886
|
+
var _a;
|
|
12887
|
+
(_a = hookOptions.onSettled) === null || _a === void 0 ? void 0 : _a.call(hookOptions, {
|
|
12888
|
+
...data,
|
|
12889
|
+
type: "verifyEmail",
|
|
12890
|
+
}, error);
|
|
12891
|
+
},
|
|
12892
|
+
onError: hookOptions.onError,
|
|
12893
|
+
throwOnError: hookOptions.throwOnError,
|
|
12894
|
+
};
|
|
12895
|
+
await verifyEmail({ email, state, ...options });
|
|
12896
|
+
setEmail(email);
|
|
12709
12897
|
removeParams();
|
|
12710
12898
|
}
|
|
12711
12899
|
else {
|
|
@@ -12736,7 +12924,25 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12736
12924
|
window.history.replaceState({}, document.title, url.toString());
|
|
12737
12925
|
};
|
|
12738
12926
|
log("callback", { player, accessToken, refreshToken });
|
|
12739
|
-
|
|
12927
|
+
const options = {
|
|
12928
|
+
onSuccess: (data) => {
|
|
12929
|
+
var _a;
|
|
12930
|
+
(_a = hookOptions.onSuccess) === null || _a === void 0 ? void 0 : _a.call(hookOptions, {
|
|
12931
|
+
...data,
|
|
12932
|
+
type: "storeCredentials",
|
|
12933
|
+
});
|
|
12934
|
+
},
|
|
12935
|
+
onSettled: (data, error) => {
|
|
12936
|
+
var _a;
|
|
12937
|
+
(_a = hookOptions.onSettled) === null || _a === void 0 ? void 0 : _a.call(hookOptions, {
|
|
12938
|
+
...data,
|
|
12939
|
+
type: "storeCredentials",
|
|
12940
|
+
}, error);
|
|
12941
|
+
},
|
|
12942
|
+
onError: hookOptions.onError,
|
|
12943
|
+
throwOnError: hookOptions.throwOnError,
|
|
12944
|
+
};
|
|
12945
|
+
await storeCredentials({ player, accessToken, refreshToken, ...options });
|
|
12740
12946
|
removeParams();
|
|
12741
12947
|
}
|
|
12742
12948
|
})();
|
|
@@ -12746,7 +12952,10 @@ const useAuthCallback = ({ automaticallyHandleCallback = true, // Automatically
|
|
|
12746
12952
|
provider,
|
|
12747
12953
|
verifyEmail,
|
|
12748
12954
|
storeCredentials,
|
|
12749
|
-
|
|
12955
|
+
isLoading: isEmailLoading || isOAuthLoading,
|
|
12956
|
+
isError: isEmailError || isOAuthError,
|
|
12957
|
+
isSuccess: isEmailSuccess || isOAuthSuccess,
|
|
12958
|
+
error: emailError || oAuthError,
|
|
12750
12959
|
};
|
|
12751
12960
|
};
|
|
12752
12961
|
|
|
@@ -12764,7 +12973,10 @@ const useGuestAuth = (hookOptions = {}) => {
|
|
|
12764
12973
|
const result = await client.auth.signUpGuest();
|
|
12765
12974
|
const user = result.player;
|
|
12766
12975
|
await updateUser(user);
|
|
12767
|
-
const { wallet } = await tryUseWallet(
|
|
12976
|
+
const { wallet } = await tryUseWallet({
|
|
12977
|
+
logoutOnError: options.logoutOnError || hookOptions.logoutOnError,
|
|
12978
|
+
automaticRecovery: options.automaticRecovery || hookOptions.automaticRecovery,
|
|
12979
|
+
});
|
|
12768
12980
|
setStatus({
|
|
12769
12981
|
status: 'success',
|
|
12770
12982
|
});
|
|
@@ -12977,146 +13189,5 @@ const useWalletAuth = (hookOptions = {}) => {
|
|
|
12977
13189
|
};
|
|
12978
13190
|
};
|
|
12979
13191
|
|
|
12980
|
-
const providerToAuthProvider = {
|
|
12981
|
-
// [OAuthProvider.APPLE]: AuthProvider.,
|
|
12982
|
-
// [OAuthProvider.DISCORD]: AuthProvider.,
|
|
12983
|
-
// [OAuthProvider.EPIC_GAMES]: AuthProvider.,
|
|
12984
|
-
[AuthProvider.FACEBOOK]: OAuthProvider.FACEBOOK,
|
|
12985
|
-
[AuthProvider.GOOGLE]: OAuthProvider.GOOGLE,
|
|
12986
|
-
// [OAuthProvider.LINE]: AuthProvider.,
|
|
12987
|
-
[AuthProvider.TWITTER]: OAuthProvider.TWITTER,
|
|
12988
|
-
};
|
|
12989
|
-
function getOAuthProvider(provider) {
|
|
12990
|
-
if (!providerToAuthProvider[provider]) {
|
|
12991
|
-
throw new Error(`Unsupported OAuth provider: ${provider}`);
|
|
12992
|
-
}
|
|
12993
|
-
return providerToAuthProvider[provider];
|
|
12994
|
-
}
|
|
12995
|
-
const useOAuth = (hookOptions = {}) => {
|
|
12996
|
-
const { client, updateUser } = useOpenfortCore();
|
|
12997
|
-
const [status, setStatus] = useState({
|
|
12998
|
-
status: "idle",
|
|
12999
|
-
});
|
|
13000
|
-
const initOAuth = useCallback(async (options) => {
|
|
13001
|
-
var _a;
|
|
13002
|
-
const authProvider = options.provider;
|
|
13003
|
-
try {
|
|
13004
|
-
setStatus({
|
|
13005
|
-
status: 'loading',
|
|
13006
|
-
});
|
|
13007
|
-
await client.auth.initOAuth({
|
|
13008
|
-
provider: getOAuthProvider(authProvider),
|
|
13009
|
-
options: {
|
|
13010
|
-
redirectTo: buildCallbackUrl({
|
|
13011
|
-
provider: authProvider,
|
|
13012
|
-
callbackUrl: (_a = hookOptions === null || hookOptions === void 0 ? void 0 : hookOptions.redirectTo) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.redirectTo,
|
|
13013
|
-
})
|
|
13014
|
-
},
|
|
13015
|
-
});
|
|
13016
|
-
return onSuccess({
|
|
13017
|
-
data: {},
|
|
13018
|
-
hookOptions,
|
|
13019
|
-
options,
|
|
13020
|
-
});
|
|
13021
|
-
}
|
|
13022
|
-
catch (e) {
|
|
13023
|
-
const error = new OpenfortError("Failed to login with OAuth", OpenfortErrorType.AUTHENTICATION_ERROR, { error: e });
|
|
13024
|
-
setStatus({
|
|
13025
|
-
status: 'error',
|
|
13026
|
-
error
|
|
13027
|
-
});
|
|
13028
|
-
return onError({
|
|
13029
|
-
hookOptions,
|
|
13030
|
-
options,
|
|
13031
|
-
error,
|
|
13032
|
-
});
|
|
13033
|
-
}
|
|
13034
|
-
}, [client, setStatus, updateUser, hookOptions]);
|
|
13035
|
-
const linkOauth = useCallback(async (options) => {
|
|
13036
|
-
var _a;
|
|
13037
|
-
const authProvider = options.provider;
|
|
13038
|
-
try {
|
|
13039
|
-
setStatus({
|
|
13040
|
-
status: 'loading',
|
|
13041
|
-
});
|
|
13042
|
-
const authToken = await client.getAccessToken();
|
|
13043
|
-
if (!authToken) {
|
|
13044
|
-
throw new OpenfortError("No auth token found", OpenfortErrorType.AUTHENTICATION_ERROR);
|
|
13045
|
-
}
|
|
13046
|
-
await client.auth.initLinkOAuth({
|
|
13047
|
-
authToken,
|
|
13048
|
-
provider: getOAuthProvider(authProvider),
|
|
13049
|
-
options: {
|
|
13050
|
-
redirectTo: buildCallbackUrl({
|
|
13051
|
-
provider: authProvider,
|
|
13052
|
-
callbackUrl: (_a = options === null || options === void 0 ? void 0 : options.redirectTo) !== null && _a !== void 0 ? _a : hookOptions === null || hookOptions === void 0 ? void 0 : hookOptions.redirectTo,
|
|
13053
|
-
})
|
|
13054
|
-
},
|
|
13055
|
-
});
|
|
13056
|
-
return onSuccess({
|
|
13057
|
-
data: {},
|
|
13058
|
-
hookOptions,
|
|
13059
|
-
options,
|
|
13060
|
-
});
|
|
13061
|
-
}
|
|
13062
|
-
catch (e) {
|
|
13063
|
-
const error = new OpenfortError("Failed to link OAuth", OpenfortErrorType.AUTHENTICATION_ERROR, { error: e });
|
|
13064
|
-
setStatus({
|
|
13065
|
-
status: 'error',
|
|
13066
|
-
error
|
|
13067
|
-
});
|
|
13068
|
-
return onError({
|
|
13069
|
-
hookOptions,
|
|
13070
|
-
options,
|
|
13071
|
-
error,
|
|
13072
|
-
});
|
|
13073
|
-
}
|
|
13074
|
-
}, [client, setStatus, updateUser, hookOptions]);
|
|
13075
|
-
return {
|
|
13076
|
-
initOAuth,
|
|
13077
|
-
linkOauth,
|
|
13078
|
-
...mapStatus(status),
|
|
13079
|
-
};
|
|
13080
|
-
};
|
|
13081
|
-
|
|
13082
|
-
function useSignOut(hookOptions = {}) {
|
|
13083
|
-
const { client, updateUser, user } = useOpenfortCore();
|
|
13084
|
-
const [status, setStatus] = useState({
|
|
13085
|
-
status: "idle",
|
|
13086
|
-
});
|
|
13087
|
-
const { disconnect } = useDisconnect();
|
|
13088
|
-
const signOut = useCallback(async (options = {}) => {
|
|
13089
|
-
if (!user)
|
|
13090
|
-
return;
|
|
13091
|
-
setStatus({
|
|
13092
|
-
status: 'loading',
|
|
13093
|
-
});
|
|
13094
|
-
try {
|
|
13095
|
-
await client.auth.logout();
|
|
13096
|
-
disconnect();
|
|
13097
|
-
updateUser();
|
|
13098
|
-
setStatus({
|
|
13099
|
-
status: 'success',
|
|
13100
|
-
});
|
|
13101
|
-
return onSuccess({
|
|
13102
|
-
hookOptions,
|
|
13103
|
-
options,
|
|
13104
|
-
data: {},
|
|
13105
|
-
});
|
|
13106
|
-
}
|
|
13107
|
-
catch (error) {
|
|
13108
|
-
setStatus({
|
|
13109
|
-
status: 'error',
|
|
13110
|
-
error: new OpenfortError('Failed to sign out', OpenfortErrorType.AUTHENTICATION_ERROR, { error }),
|
|
13111
|
-
});
|
|
13112
|
-
throw error;
|
|
13113
|
-
}
|
|
13114
|
-
}, [client, user, disconnect, updateUser, setStatus, hookOptions]);
|
|
13115
|
-
return {
|
|
13116
|
-
...mapStatus(status),
|
|
13117
|
-
signOut,
|
|
13118
|
-
};
|
|
13119
|
-
}
|
|
13120
|
-
|
|
13121
13192
|
export { AuthProvider, Avatar, Chain as ChainIcon, OPENFORTKIT_VERSION, OpenfortError, OpenfortErrorType, OpenfortKitButton, OpenfortKitContext, OpenfortKitStatus, OpenfortProvider, embeddedWalletId, defaultConfig as getDefaultConfig, defaultConnectors as getDefaultConnectors, useAuthCallback, useChainIsSupported, useChains, useConnectWithSiwe, useEmailAuth, useGuestAuth, useOAuth, useOpenfortCore as useOpenfort, useSignOut, useStatus, useUI, useUser, useWallet, useWalletAuth, useWallets, wallets };
|
|
13122
13193
|
//# sourceMappingURL=index.es.js.map
|
package/build/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/build/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const OPENFORTKIT_VERSION = "0.0.
|
|
1
|
+
export declare const OPENFORTKIT_VERSION = "0.0.3";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfort/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"author": "Openfort (https://www.openfort.io)",
|
|
5
5
|
"license": "BSD-2-Clause license",
|
|
6
6
|
"description": "The easiest way to integrate Openfort to your project.",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"react"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@openfort/openfort-js": "^0.9.
|
|
41
|
+
"@openfort/openfort-js": "^0.9.8",
|
|
42
42
|
"buffer": "^6.0.3",
|
|
43
43
|
"detect-browser": "^5.3.0",
|
|
44
44
|
"framer-motion": "^6.3.11",
|