@oxyhq/services 16.0.0 → 18.0.0
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 +77 -98
- package/lib/commonjs/index.js +40 -51
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/client.js +0 -14
- package/lib/commonjs/ui/client.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAccountDialog.js +742 -0
- package/lib/commonjs/ui/components/OxyAccountDialog.js.map +1 -0
- package/lib/commonjs/ui/components/OxyConsentScreen.js +461 -0
- package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -0
- package/lib/commonjs/ui/components/OxyProvider.js +13 -6
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +180 -22
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +25 -112
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/RequireOxyAuth.js +299 -0
- package/lib/commonjs/ui/components/RequireOxyAuth.js.map +1 -0
- package/lib/commonjs/ui/components/oauthNavigation.js +73 -0
- package/lib/commonjs/ui/components/oauthNavigation.js.map +1 -0
- package/lib/commonjs/ui/context/OxyContext.js +122 -4
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +19 -30
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js +37 -267
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js.map +1 -1
- package/lib/commonjs/ui/index.js +5 -40
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/accountDialogManager.js +91 -0
- package/lib/commonjs/ui/navigation/accountDialogManager.js.map +1 -0
- package/lib/commonjs/ui/navigation/routes.js +0 -2
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +4 -3
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/session/createSessionClient.js +10 -2
- package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
- package/lib/module/index.js +19 -16
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/client.js +1 -2
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/OxyAccountDialog.js +739 -0
- package/lib/module/ui/components/OxyAccountDialog.js.map +1 -0
- package/lib/module/ui/components/OxyConsentScreen.js +454 -0
- package/lib/module/ui/components/OxyConsentScreen.js.map +1 -0
- package/lib/module/ui/components/OxyProvider.js +13 -6
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +181 -22
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +26 -112
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/RequireOxyAuth.js +294 -0
- package/lib/module/ui/components/RequireOxyAuth.js.map +1 -0
- package/lib/module/ui/components/oauthNavigation.js +70 -0
- package/lib/module/ui/components/oauthNavigation.js.map +1 -0
- package/lib/module/ui/context/OxyContext.js +123 -5
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/module/ui/hooks/useAuth.js +19 -30
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useSwitchableAccounts.js +38 -267
- package/lib/module/ui/hooks/useSwitchableAccounts.js.map +1 -1
- package/lib/module/ui/index.js +1 -5
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/accountDialogManager.js +81 -0
- package/lib/module/ui/navigation/accountDialogManager.js.map +1 -0
- package/lib/module/ui/navigation/routes.js +0 -2
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/ManageAccountScreen.js +4 -3
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/session/createSessionClient.js +10 -2
- package/lib/module/ui/session/createSessionClient.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +8 -12
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/client.d.ts +0 -4
- package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialog.d.ts +51 -0
- package/lib/typescript/commonjs/ui/components/OxyAccountDialog.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts +45 -0
- package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +56 -0
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +11 -23
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts +55 -0
- package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts +36 -0
- package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +27 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts +13 -152
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +2 -5
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +49 -0
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +9 -2
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +27 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +8 -12
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/client.d.ts +0 -4
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAccountDialog.d.ts +51 -0
- package/lib/typescript/module/ui/components/OxyAccountDialog.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts +45 -0
- package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/OxyProvider.d.ts +2 -2
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts +56 -0
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts +11 -23
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts +55 -0
- package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/oauthNavigation.d.ts +36 -0
- package/lib/typescript/module/ui/components/oauthNavigation.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/OxyContext.d.ts +27 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts +13 -152
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +2 -5
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +49 -0
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -0
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/createSessionClient.d.ts +9 -2
- package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +27 -0
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +33 -27
- package/src/ui/client.ts +0 -4
- package/src/ui/components/OxyAccountDialog.tsx +735 -0
- package/src/ui/components/OxyConsentScreen.tsx +456 -0
- package/src/ui/components/OxyProvider.tsx +14 -6
- package/src/ui/components/OxySignInButton.tsx +227 -22
- package/src/ui/components/ProfileButton.tsx +23 -126
- package/src/ui/components/RequireOxyAuth.tsx +266 -0
- package/src/ui/components/__tests__/OxyConsentScreen.test.tsx +130 -0
- package/src/ui/components/oauthNavigation.ts +89 -0
- package/src/ui/context/OxyContext.tsx +176 -9
- package/src/ui/context/__tests__/OxyContext.coldBoot.test.tsx +165 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
- package/src/ui/hooks/useAuth.ts +19 -31
- package/src/ui/hooks/useSwitchableAccounts.ts +42 -376
- package/src/ui/index.ts +2 -5
- package/src/ui/navigation/accountDialogManager.ts +84 -0
- package/src/ui/navigation/routes.ts +0 -4
- package/src/ui/screens/ManageAccountScreen.tsx +3 -2
- package/src/ui/session/createSessionClient.ts +9 -1
- package/src/ui/types/navigation.ts +27 -0
- package/lib/commonjs/ui/components/AccountMenu.js +0 -598
- package/lib/commonjs/ui/components/AccountMenu.js.map +0 -1
- package/lib/commonjs/ui/components/AccountMenuButton.js +0 -135
- package/lib/commonjs/ui/components/AccountMenuButton.js.map +0 -1
- package/lib/commonjs/ui/components/AccountSwitcher.js +0 -780
- package/lib/commonjs/ui/components/AccountSwitcher.js.map +0 -1
- package/lib/commonjs/ui/components/AnotherDeviceQR.js +0 -116
- package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +0 -1
- package/lib/commonjs/ui/components/ProfileMenu.js +0 -518
- package/lib/commonjs/ui/components/ProfileMenu.js.map +0 -1
- package/lib/commonjs/ui/components/SignInAccountChooser.js +0 -189
- package/lib/commonjs/ui/components/SignInAccountChooser.js.map +0 -1
- package/lib/commonjs/ui/components/SignInModal.js +0 -600
- package/lib/commonjs/ui/components/SignInModal.js.map +0 -1
- package/lib/commonjs/ui/hooks/useOxyAuthSession.js +0 -501
- package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +0 -1
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js +0 -170
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js.map +0 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +0 -51
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +0 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +0 -312
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +0 -1
- package/lib/commonjs/utils/deviceFlowSignIn.js +0 -109
- package/lib/commonjs/utils/deviceFlowSignIn.js.map +0 -1
- package/lib/module/ui/components/AccountMenu.js +0 -593
- package/lib/module/ui/components/AccountMenu.js.map +0 -1
- package/lib/module/ui/components/AccountMenuButton.js +0 -130
- package/lib/module/ui/components/AccountMenuButton.js.map +0 -1
- package/lib/module/ui/components/AccountSwitcher.js +0 -774
- package/lib/module/ui/components/AccountSwitcher.js.map +0 -1
- package/lib/module/ui/components/AnotherDeviceQR.js +0 -110
- package/lib/module/ui/components/AnotherDeviceQR.js.map +0 -1
- package/lib/module/ui/components/ProfileMenu.js +0 -514
- package/lib/module/ui/components/ProfileMenu.js.map +0 -1
- package/lib/module/ui/components/SignInAccountChooser.js +0 -183
- package/lib/module/ui/components/SignInAccountChooser.js.map +0 -1
- package/lib/module/ui/components/SignInModal.js +0 -591
- package/lib/module/ui/components/SignInModal.js.map +0 -1
- package/lib/module/ui/hooks/useOxyAuthSession.js +0 -495
- package/lib/module/ui/hooks/useOxyAuthSession.js.map +0 -1
- package/lib/module/ui/hooks/usePasswordSignIn.js +0 -165
- package/lib/module/ui/hooks/usePasswordSignIn.js.map +0 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +0 -48
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +0 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +0 -306
- package/lib/module/ui/screens/OxyAuthScreen.js.map +0 -1
- package/lib/module/utils/deviceFlowSignIn.js +0 -106
- package/lib/module/utils/deviceFlowSignIn.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +0 -47
- package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts +0 -26
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts +0 -46
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +0 -34
- package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ProfileMenu.d.ts +0 -49
- package/lib/typescript/commonjs/ui/components/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts +0 -29
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +0 -28
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +0 -105
- package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts +0 -31
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts +0 -11
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts +0 -22
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts +0 -97
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountMenu.d.ts +0 -47
- package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts +0 -26
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts +0 -46
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +0 -34
- package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ProfileMenu.d.ts +0 -49
- package/lib/typescript/module/ui/components/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts +0 -29
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts +0 -28
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +0 -105
- package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts +0 -31
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts.map +0 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts +0 -11
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +0 -1
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts +0 -22
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +0 -1
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts +0 -97
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts.map +0 -1
- package/src/ui/components/AccountMenu.tsx +0 -645
- package/src/ui/components/AccountMenuButton.tsx +0 -126
- package/src/ui/components/AccountSwitcher.tsx +0 -751
- package/src/ui/components/AnotherDeviceQR.tsx +0 -119
- package/src/ui/components/ProfileMenu.tsx +0 -564
- package/src/ui/components/SignInAccountChooser.tsx +0 -162
- package/src/ui/components/SignInModal.tsx +0 -530
- package/src/ui/hooks/useOxyAuthSession.ts +0 -635
- package/src/ui/hooks/usePasswordSignIn.ts +0 -207
- package/src/ui/screens/AccountSwitcherScreen.tsx +0 -43
- package/src/ui/screens/OxyAuthScreen.tsx +0 -324
- package/src/utils/__tests__/deviceFlowSignIn.test.ts +0 -231
- package/src/utils/deviceFlowSignIn.ts +0 -152
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { type ViewStyle, type TextStyle, type StyleProp } from 'react-native';
|
|
3
|
+
/**
|
|
4
|
+
* `sessionStorage` keys under which a third-party "Sign in with Oxy" OAuth flow
|
|
5
|
+
* persists its CSRF `state` and PKCE `code_verifier` across the authorize
|
|
6
|
+
* redirect. The Relying Party's redirect-URI callback reads them back to
|
|
7
|
+
* validate the returned `state` and replay the verifier on the token exchange.
|
|
8
|
+
*
|
|
9
|
+
* Web only: a browser RP navigates away to `auth.oxy.so` and back, so the
|
|
10
|
+
* handshake must survive a full-page redirect. Native completes the flow inside
|
|
11
|
+
* a single `WebBrowser` auth session and surfaces the handshake via
|
|
12
|
+
* {@link OxySignInButtonProps.onOAuthResult} instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare const OXY_OAUTH_STATE_STORAGE_KEY = "oxy_oauth_state";
|
|
15
|
+
export declare const OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY = "oxy_oauth_code_verifier";
|
|
16
|
+
/**
|
|
17
|
+
* The OAuth handshake surfaced to a NATIVE third-party RP via
|
|
18
|
+
* {@link OxySignInButtonProps.onOAuthResult} so it can finish the code exchange
|
|
19
|
+
* (`POST /auth/oauth/token`). Web RPs read the same `state` / `code_verifier`
|
|
20
|
+
* back from `sessionStorage` across the redirect and do not need this callback.
|
|
21
|
+
*/
|
|
22
|
+
export interface OxyOAuthResult {
|
|
23
|
+
/** Deep-link URL the native auth session returned to (`?code=…&state=…`), or `null` if unobserved. */
|
|
24
|
+
redirectUrl: string | null;
|
|
25
|
+
/** The CSRF `state` sent on the authorize request; the RP must match it on return. */
|
|
26
|
+
state: string;
|
|
27
|
+
/** The PKCE `code_verifier` to replay on the token exchange. */
|
|
28
|
+
codeVerifier: string;
|
|
29
|
+
}
|
|
3
30
|
export interface OxySignInButtonProps {
|
|
4
31
|
/**
|
|
5
32
|
* Controls the appearance of the button
|
|
@@ -34,6 +61,35 @@ export interface OxySignInButtonProps {
|
|
|
34
61
|
* @default false
|
|
35
62
|
*/
|
|
36
63
|
showWhenAuthenticated?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Exact registered redirect URI the OAuth authorization code is returned to.
|
|
66
|
+
* REQUIRED only for third-party (`type: 'third_party'`) applications, which
|
|
67
|
+
* sign in via an OAuth + PKCE redirect to `auth.oxy.so`. First-party /
|
|
68
|
+
* official apps open the in-app dialog and ignore this prop. If a third-party
|
|
69
|
+
* app resolves without it, the button logs an error and does nothing (it will
|
|
70
|
+
* not invent a redirect URI).
|
|
71
|
+
*/
|
|
72
|
+
oauthRedirectUri?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Native only: receives the OAuth handshake after a third-party auth session
|
|
75
|
+
* so the RP can finish the token exchange. On web the handshake is read back
|
|
76
|
+
* from `sessionStorage` across the full-page redirect, so this is not used
|
|
77
|
+
* there. A native third-party sign-in with NO `onOAuthResult` handler cannot
|
|
78
|
+
* complete (the `state` + `code_verifier` are lost) and logs a warning.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <OxySignInButton
|
|
83
|
+
* oauthRedirectUri="myapp://oauth/callback"
|
|
84
|
+
* onOAuthResult={({ redirectUrl, state, codeVerifier }) => {
|
|
85
|
+
* if (!redirectUrl) return;
|
|
86
|
+
* const code = new URL(redirectUrl).searchParams.get('code');
|
|
87
|
+
* // → POST /auth/oauth/token { code, code_verifier: codeVerifier, state }
|
|
88
|
+
* }}
|
|
89
|
+
* />
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
onOAuthResult?: (result: OxyOAuthResult) => void;
|
|
37
93
|
}
|
|
38
94
|
/**
|
|
39
95
|
* A pre-styled button component for signing in with Oxy identity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"OxySignInButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxySignInButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAgBlI;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAC7D,eAAO,MAAM,mCAAmC,4BAA4B,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sGAAsG;IACtG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AA0BD,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA0Q1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -11,23 +11,15 @@ export interface ProfileButtonProps {
|
|
|
11
11
|
*/
|
|
12
12
|
avatarSize?: number;
|
|
13
13
|
/** Navigate to the "Manage account" surface (settings). */
|
|
14
|
-
onNavigateManage
|
|
14
|
+
onNavigateManage?: () => void;
|
|
15
15
|
/** Start the add-account / sign-in flow for an additional account. */
|
|
16
|
-
onAddAccount
|
|
16
|
+
onAddAccount?: () => void;
|
|
17
17
|
/** Optional: navigate to the signed-in user's own profile. */
|
|
18
18
|
onNavigateProfile?: () => void;
|
|
19
|
-
/** Called before the active identity changes so apps can clear scoped state. */
|
|
20
|
-
onBeforeSessionChange?: () => void | Promise<void>;
|
|
21
19
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* behavior.
|
|
26
|
-
* - `'down'`: the menu opens DOWNWARD, for a trigger placed at the TOP of a
|
|
27
|
-
* sidebar (the accounts app pattern).
|
|
28
|
-
* - `'auto'`: opens downward when there is more room below the trigger than
|
|
29
|
-
* above, otherwise upward.
|
|
30
|
-
* Native (bottom-sheet) is unaffected — this only influences the web popover.
|
|
20
|
+
* Retained for source compatibility. The trigger now opens the unified
|
|
21
|
+
* `OxyAccountDialog` (a centered / bottom-sheet modal) rather than an
|
|
22
|
+
* anchored popover, so popover placement no longer applies.
|
|
31
23
|
*/
|
|
32
24
|
placement?: 'up' | 'down' | 'auto';
|
|
33
25
|
/**
|
|
@@ -41,27 +33,23 @@ export interface ProfileButtonProps {
|
|
|
41
33
|
}
|
|
42
34
|
/**
|
|
43
35
|
* Self-contained sidebar account trigger, modeled on Bluesky's ProfileCard and
|
|
44
|
-
* the Oxy inbox's `MailboxDrawer` footer.
|
|
45
|
-
*
|
|
36
|
+
* the Oxy inbox's `MailboxDrawer` footer. Pressing it opens the unified
|
|
37
|
+
* {@link OxyAccountDialog} — the single account switcher + sign-in surface — via
|
|
38
|
+
* `useOxy().openAccountDialog`.
|
|
46
39
|
*
|
|
47
40
|
* Three auth states from {@link useAuth}:
|
|
48
41
|
* - **Undetermined** (`!isAuthResolved || isPrivateApiPending`): a neutral
|
|
49
42
|
* avatar-sized skeleton circle, no press.
|
|
50
43
|
* - **Signed in**: a pressable row — Bloom `Avatar` + display name + `@handle`
|
|
51
|
-
* +
|
|
52
|
-
*
|
|
53
|
-
*
|
|
44
|
+
* + a chevron. Press opens the dialog on its `accounts` view.
|
|
45
|
+
* - **Signed out**: a "Sign in" row that calls `useAuth().signIn()` (which opens
|
|
46
|
+
* the dialog on its `signin` view).
|
|
54
47
|
*
|
|
55
48
|
* Styling uses react-native `StyleSheet` + the Bloom theme (via `useTheme`) so
|
|
56
49
|
* the layout renders identically in EVERY consumer — including apps that do not
|
|
57
50
|
* use NativeWind (e.g. the accounts app). Only the web hover animation keeps
|
|
58
51
|
* dynamic inline `style` (the CSS transition/transform values), which is what
|
|
59
52
|
* the `react-native-web-style.d.ts` augmentation exists for.
|
|
60
|
-
*
|
|
61
|
-
* All display strings resolve through `@oxyhq/core`'s
|
|
62
|
-
* `getAccountDisplayName` / `getAccountFallbackHandle` — no hand-rolled name
|
|
63
|
-
* fallbacks. Avatars pass the bare file id as `source` + `variant="thumb"`, so
|
|
64
|
-
* the app's registered `ImageResolver` builds the thumbnail URL.
|
|
65
53
|
*/
|
|
66
54
|
declare const ProfileButton: React.FC<ProfileButtonProps>;
|
|
67
55
|
export default ProfileButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ProfileButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAKH,KAAK,SAAS,EACd,KAAK,SAAS,EACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ProfileButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ProfileButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAKH,KAAK,SAAS,EACd,KAAK,SAAS,EACjB,MAAM,cAAc,CAAC;AAuCtB,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoP/C,CAAC;AAqDF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RequireOxyAuth — the optional signed-out gate primitive (React Native).
|
|
3
|
+
*
|
|
4
|
+
* ONE shared way for any Oxy app to opt into a signed-out gate. It is entirely
|
|
5
|
+
* OPTIONAL: a public app renders its children untouched (`prompt="off"`); an
|
|
6
|
+
* auth-required app blocks them behind a signed-out state (`prompt="hard"`); an
|
|
7
|
+
* app that mostly works signed-out but wants a nudge shows a dismissible banner
|
|
8
|
+
* (`prompt="soft"`). Every mode reuses the ONE account dialog the provider
|
|
9
|
+
* already mounts — opening the sign-in surface is always
|
|
10
|
+
* `useOxy().openAccountDialog('signin')`; there is NO second dialog.
|
|
11
|
+
*
|
|
12
|
+
* Readiness gating (CRITICAL): the gate keys on the SDK's own readiness state
|
|
13
|
+
* (`useOxy().canUsePrivateApi` / `isPrivateApiPending`), NEVER on app-local
|
|
14
|
+
* hooks. While auth is still resolving (`isPrivateApiPending`) it renders a
|
|
15
|
+
* neutral loading state so the signed-out wall never flashes before the
|
|
16
|
+
* device-first cold boot concludes (the documented cold-boot race).
|
|
17
|
+
*
|
|
18
|
+
* Styling follows the sibling `OxyAccountDialog`/`OxySignInButton` pattern —
|
|
19
|
+
* `useTheme()` + `StyleSheet` (NOT NativeWind), so the gate renders correctly in
|
|
20
|
+
* EVERY consumer, including apps that do not run NativeWind (e.g. the accounts
|
|
21
|
+
* app).
|
|
22
|
+
*/
|
|
23
|
+
import type React from 'react';
|
|
24
|
+
import { type ReactNode } from 'react';
|
|
25
|
+
/**
|
|
26
|
+
* How `RequireOxyAuth` treats a signed-out (or still-resolving) session.
|
|
27
|
+
* - `off` — always render children (public app; a no-op provided for symmetry).
|
|
28
|
+
* - `soft` — render children, plus a dismissible sign-in banner when signed out.
|
|
29
|
+
* - `hard` — block children behind a centered signed-out state until signed in.
|
|
30
|
+
*/
|
|
31
|
+
export type RequireOxyAuthPrompt = 'off' | 'soft' | 'hard';
|
|
32
|
+
export interface RequireOxyAuthProps {
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
/** Gate behavior. @default 'hard' */
|
|
35
|
+
prompt?: RequireOxyAuthPrompt;
|
|
36
|
+
/** Replaces the neutral loading UI shown while auth is still resolving. */
|
|
37
|
+
loadingFallback?: ReactNode;
|
|
38
|
+
/** Replaces the entire default signed-out wall (`prompt="hard"`). */
|
|
39
|
+
signedOutFallback?: ReactNode;
|
|
40
|
+
/** Title for the default `prompt="hard"` wall. */
|
|
41
|
+
title?: string;
|
|
42
|
+
/** Subtitle for the default `prompt="hard"` wall. */
|
|
43
|
+
subtitle?: string;
|
|
44
|
+
/** Message for the `prompt="soft"` banner. */
|
|
45
|
+
bannerMessage?: string;
|
|
46
|
+
/** CTA label for the `prompt="soft"` banner. */
|
|
47
|
+
bannerActionLabel?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Optional signed-out gate. Wrap any subtree (or the whole app via the
|
|
51
|
+
* provider's `requireAuth` prop) to opt into a shared, readiness-safe wall.
|
|
52
|
+
*/
|
|
53
|
+
export declare const RequireOxyAuth: React.FC<RequireOxyAuthProps>;
|
|
54
|
+
export default RequireOxyAuth;
|
|
55
|
+
//# sourceMappingURL=RequireOxyAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequireOxyAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/RequireOxyAuth.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQjD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAOD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4CxD,CAAC;AA0JF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform navigation for the third-party "Sign in with Oxy" OAuth flow.
|
|
3
|
+
*
|
|
4
|
+
* Kept out of `OxySignInButton` so the button's routing logic can be unit-tested
|
|
5
|
+
* without driving a real browser navigation (jsdom's `location.assign` is
|
|
6
|
+
* non-configurable and cannot be spied). Both entry points hand a fully-built
|
|
7
|
+
* `auth.oxy.so/authorize` URL to the platform — never FedCM, an SSO bounce, or
|
|
8
|
+
* an Oxy session cookie.
|
|
9
|
+
*/
|
|
10
|
+
/** Outcome of opening the authorize URL on native. */
|
|
11
|
+
export interface OpenAuthorizeResult {
|
|
12
|
+
/**
|
|
13
|
+
* The deep-link URL the auth session returned to (carries `?code=…&state=…`)
|
|
14
|
+
* when `expo-web-browser` observed it, else `null`. `null` means the RP must
|
|
15
|
+
* complete the exchange from its own deep-link handler (e.g. after the
|
|
16
|
+
* `Linking.openURL` fallback, which cannot observe the return URL).
|
|
17
|
+
*/
|
|
18
|
+
redirectUrl: string | null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Web: hand the TOP-LEVEL document to the OAuth authorize URL (a full-page
|
|
22
|
+
* redirect, not a popup) so the RP returns to its registered `redirect_uri`.
|
|
23
|
+
* No-op where `location` is unavailable (SSR / non-browser hosts).
|
|
24
|
+
*/
|
|
25
|
+
export declare function redirectToAuthorize(url: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Native: open the authorize URL in an in-app auth session via the optional
|
|
28
|
+
* `expo-web-browser` module (`openAuthSessionAsync` returns to `redirectUri`),
|
|
29
|
+
* degrading to `Linking.openURL` when the module is not installed — the same
|
|
30
|
+
* dynamic-import-with-fallback pattern services uses for haptics/netinfo.
|
|
31
|
+
*
|
|
32
|
+
* Returns the deep-link URL the session came back to when it can be observed, so
|
|
33
|
+
* the caller can hand `?code=…&state=…` back to the RP for the token exchange.
|
|
34
|
+
*/
|
|
35
|
+
export declare function openAuthorizeUrlNative(url: string, redirectUri: string): Promise<OpenAuthorizeResult>;
|
|
36
|
+
//# sourceMappingURL=oauthNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauthNavigation.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/oauthNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAChC;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAgC9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { type ReactNode } from 'react';
|
|
3
3
|
import { OxyServices } from '@oxyhq/core';
|
|
4
|
-
import type { User, ApiError, SessionLoginResponse, AccountNode, CreateAccountInput, ClientSession } from '@oxyhq/core';
|
|
4
|
+
import type { User, ApiError, SessionLoginResponse, AccountNode, CreateAccountInput, ClientSession, AccountDialogController, AccountDialogView } from '@oxyhq/core';
|
|
5
5
|
import type { UseFollowHook } from '../hooks/useFollow.types';
|
|
6
6
|
import { useLanguageManagement } from '../hooks/useLanguageManagement';
|
|
7
7
|
import type { RouteName } from '../navigation/routes';
|
|
@@ -101,6 +101,18 @@ export interface OxyContextState {
|
|
|
101
101
|
props?: Record<string, unknown>;
|
|
102
102
|
}) => void;
|
|
103
103
|
openAvatarPicker: () => void;
|
|
104
|
+
/** The headless controller driving {@link openAccountDialog}. `null` before mount. */
|
|
105
|
+
accountDialogController: AccountDialogController | null;
|
|
106
|
+
/** Whether the unified account dialog is currently presented. */
|
|
107
|
+
isAccountDialogOpen: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Open the unified account dialog. `accounts` (default) shows the switcher;
|
|
110
|
+
* `signin` / `add` open the sign-in entry. Replaces every prior device/account
|
|
111
|
+
* surface and the standalone sign-in modal.
|
|
112
|
+
*/
|
|
113
|
+
openAccountDialog: (view?: AccountDialogView) => void;
|
|
114
|
+
/** Dismiss the unified account dialog and cancel any in-flight sign-in flow. */
|
|
115
|
+
closeAccountDialog: () => void;
|
|
104
116
|
/** Every account the caller can access — own personal root, owned, and shared — from `listAccounts()`. */
|
|
105
117
|
accounts: AccountNode[];
|
|
106
118
|
/**
|
|
@@ -146,6 +158,20 @@ export interface OxyContextProviderProps {
|
|
|
146
158
|
* for the cross-app device sign-in flow. See {@link OxyContextState.clientId}.
|
|
147
159
|
*/
|
|
148
160
|
clientId?: string;
|
|
161
|
+
/**
|
|
162
|
+
* Whether this provider is the device-first **session authority**. `true`
|
|
163
|
+
* (default) runs `runSessionColdBoot` on mount and opens the signed-out
|
|
164
|
+
* device-state socket — the correct behavior for every Relying Party app.
|
|
165
|
+
*
|
|
166
|
+
* `false` is the IdP host (`auth.oxy.so`) opt-out: the IdP is NOT a session
|
|
167
|
+
* authority (handoff "IdP vs RP"), so it must NOT restore or reproject an
|
|
168
|
+
* ambient device session. With `coldBoot={false}` the cold boot never runs
|
|
169
|
+
* and the signed-out device socket never opens; auth resolves immediately as
|
|
170
|
+
* signed out. Interactive sign-in still commits a normal session on this
|
|
171
|
+
* origin — only the automatic restore/reproject is suppressed.
|
|
172
|
+
* @default true
|
|
173
|
+
*/
|
|
174
|
+
coldBoot?: boolean;
|
|
149
175
|
onAuthStateChange?: (user: User | null) => void;
|
|
150
176
|
onError?: (error: ApiError) => void;
|
|
151
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountMutations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/mutations/useAccountMutations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,IAAI,EACJ,eAAe,EAChB,MAAM,aAAa,CAAC;AAerB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;aA0PnB,
|
|
1
|
+
{"version":3,"file":"useAccountMutations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/mutations/useAccountMutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export declare const useSession: (sessionId: string | null, options?: {
|
|
|
16
16
|
*/
|
|
17
17
|
export declare const useDeviceSessions: (options?: {
|
|
18
18
|
enabled?: boolean;
|
|
19
|
-
}) => import("@tanstack/react-query").UseQueryResult<NoInfer<
|
|
19
|
+
}) => import("@tanstack/react-query").UseQueryResult<NoInfer<import("@oxyhq/core").DeviceLinkedSession[]>, Error>;
|
|
20
20
|
/**
|
|
21
21
|
* Get user devices
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useServicesQueries.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useServicesQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW9E;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,oFAqB3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,GAAG,IAAI,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,kFA6BnF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"useServicesQueries.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useServicesQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW9E;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,oFAqB3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,GAAG,IAAI,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,kFA6BnF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,gHAgBhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,0EAgB7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;;UAY9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,gGAgBrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IAEzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IAEnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,+EAA+E;IAC/E,cAAc,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;OASG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,6DAA6D;IAC7D,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACtD,0EAA0E;IAC1E,eAAe,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC9D,0CAA0C;IAC1C,gBAAgB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CAmFvC"}
|
|
@@ -1,162 +1,23 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
/**
|
|
3
|
-
* The per-account user shape carried by a {@link SwitchableAccount}. The SDK's
|
|
4
|
-
* canonical {@link User} document — either the freshest `useOxy().user` (the
|
|
5
|
-
* active row), a profile resolved via `oxyServices.getUsersByIds()` (every other
|
|
6
|
-
* device row), or the `account` document embedded in an account-graph node.
|
|
7
|
-
*/
|
|
8
|
-
export type SwitchableAccountUser = User;
|
|
9
|
-
/**
|
|
10
|
-
* One account the signed-in user can switch INTO, in the uniform switch model.
|
|
11
|
-
*
|
|
12
|
-
* A switchable account is either a device sign-in, an account-graph node (owned
|
|
13
|
-
* org / shared-with-you), or BOTH (an account that has been switched into
|
|
14
|
-
* becomes a device session while still being a graph node — the two are deduped
|
|
15
|
-
* into a single row). Every row carries a canonical `accountId` (the uniform
|
|
16
|
-
* switch key passed to `switchToAccount`); `sessionId` is present IFF the
|
|
17
|
-
* account is currently signed in on THIS device.
|
|
18
|
-
*/
|
|
19
|
-
export interface SwitchableAccount {
|
|
20
|
-
/**
|
|
21
|
-
* Canonical account id (the underlying `User._id`). The single key EVERY
|
|
22
|
-
* switch uses — `switchToAccount(accountId)`. Always present.
|
|
23
|
-
*/
|
|
24
|
-
accountId: string;
|
|
25
|
-
/**
|
|
26
|
-
* Device session id, present IFF this account is signed in on THIS device.
|
|
27
|
-
* Absent for a graph account not yet switched into. Used only for
|
|
28
|
-
* device-scoped actions (per-account sign-out via `removeSession`); switching
|
|
29
|
-
* ALWAYS goes through `switchToAccount(accountId)`.
|
|
30
|
-
*/
|
|
31
|
-
sessionId?: string;
|
|
32
|
-
/**
|
|
33
|
-
* Device-local refresh-cookie slot index (0..N-1), when the underlying
|
|
34
|
-
* `ClientSession` carries one (web silent-switch). Absent on native and for
|
|
35
|
-
* graph-only rows.
|
|
36
|
-
*/
|
|
37
|
-
authuser?: number;
|
|
38
|
-
/** Whether this account is the currently-active one. */
|
|
39
|
-
isCurrent: boolean;
|
|
40
|
-
/** Whether this account is signed in on THIS device (has a `sessionId`). */
|
|
41
|
-
onDevice: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* The caller's relationship to this account when it appears in the account
|
|
44
|
-
* graph: `self` (the caller's own personal account), `owner` (an org/project/
|
|
45
|
-
* bot the caller owns), or `member` (shared with the caller). Absent for an
|
|
46
|
-
* independent device sign-in that is NOT in the active account's graph.
|
|
47
|
-
*/
|
|
48
|
-
relationship?: AccountRelationship;
|
|
49
|
-
/** Account classification (personal/organization/…). Cosmetic badge only. */
|
|
50
|
-
kind?: AccountKind;
|
|
51
|
-
/** Parent account id for 2-level tree grouping, or `null` for a root. */
|
|
52
|
-
parentAccountId?: string | null;
|
|
53
|
-
/**
|
|
54
|
-
* The caller's effective membership (role + permissions) in this account when
|
|
55
|
-
* it appears in the graph, or `null`/absent otherwise. Use `permissions` to
|
|
56
|
-
* gate per-account settings UI.
|
|
57
|
-
*/
|
|
58
|
-
callerMembership?: AccountMember | null;
|
|
59
|
-
/** Friendly display name (never blank — falls back to a handle/sentinel). */
|
|
60
|
-
displayName: string;
|
|
61
|
-
/**
|
|
62
|
-
* Real account email, or `null` when the account genuinely has none. NEVER a
|
|
63
|
-
* synthesized `username@oxy.so` — a missing email falls back to the `@handle`
|
|
64
|
-
* secondary line.
|
|
65
|
-
*/
|
|
66
|
-
email: string | null;
|
|
67
|
-
/** Resolved avatar thumbnail URL, or `undefined` when the account has no avatar. */
|
|
68
|
-
avatarUrl?: string;
|
|
69
|
-
/** Account's preferred Bloom color preset, or `null` when unset. */
|
|
70
|
-
color: string | null;
|
|
71
|
-
/** The underlying per-account user payload. */
|
|
72
|
-
user: SwitchableAccountUser;
|
|
73
|
-
}
|
|
1
|
+
import type { SwitchableAccount } from '@oxyhq/core';
|
|
74
2
|
export interface UseSwitchableAccountsResult {
|
|
75
3
|
/** Every switchable account (device sign-ins + linked graph accounts). */
|
|
76
4
|
accounts: SwitchableAccount[];
|
|
77
|
-
/** True until the
|
|
5
|
+
/** True until the initial account-list fetch settles with no data yet. */
|
|
78
6
|
isLoading: boolean;
|
|
79
|
-
/** The currently-active session id
|
|
7
|
+
/** The currently-active account's device session id, or `null`. */
|
|
80
8
|
currentSessionId: string | null;
|
|
81
9
|
}
|
|
82
|
-
/** The minimal device-session shape {@link buildSwitchableAccounts} reads. */
|
|
83
|
-
export interface SwitchableSessionInput {
|
|
84
|
-
sessionId: string;
|
|
85
|
-
userId?: string;
|
|
86
|
-
authuser?: number;
|
|
87
|
-
}
|
|
88
|
-
export interface BuildSwitchableAccountsInput {
|
|
89
|
-
/** Device sessions projected from the server-authoritative `SessionClient`. */
|
|
90
|
-
sessions: SwitchableSessionInput[];
|
|
91
|
-
/** The currently-active session id. */
|
|
92
|
-
activeSessionId: string | null;
|
|
93
|
-
/** The freshest copy of the active account's user (`useOxy().user`). */
|
|
94
|
-
liveUser: User | null;
|
|
95
|
-
isAuthenticated: boolean;
|
|
96
|
-
/** The account graph under the active account (`useOxy().accounts`). */
|
|
97
|
-
graph: AccountNode[];
|
|
98
|
-
/** Per-device-account profiles resolved via `getUsersByIds()`, keyed by id. */
|
|
99
|
-
profilesById: Map<string, User>;
|
|
100
|
-
locale: string;
|
|
101
|
-
/** Resolves a file id to a thumbnail URL (bound to `getFileDownloadUrl`). */
|
|
102
|
-
resolveAvatarUrl: (avatar: string | null | undefined) => string | undefined;
|
|
103
|
-
}
|
|
104
10
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* `
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* At most ONE entry is ever marked current. Runs over DEVICE rows only (graph
|
|
117
|
-
* rows are never active — the active account is always a device session), so the
|
|
118
|
-
* single-account fallback counts device rows.
|
|
119
|
-
*
|
|
120
|
-
* Pure & side-effect free so it is unit-testable without rendering React.
|
|
121
|
-
*/
|
|
122
|
-
export declare function markCurrentAccount(accounts: SwitchableAccount[], activeSessionId: string | null | undefined, liveUserId: string | null | undefined, isAuthenticated: boolean): SwitchableAccount[];
|
|
123
|
-
/**
|
|
124
|
-
* Pure union of device sign-ins and account-graph nodes into the flat
|
|
125
|
-
* {@link SwitchableAccount}[] the switchers render. Extracted so the merge /
|
|
126
|
-
* dedup semantics are unit-testable without rendering React.
|
|
127
|
-
*
|
|
128
|
-
* Order: device rows first (in session order, current flagged), then graph-only
|
|
129
|
-
* rows (in graph order). An account present as BOTH a device session and a graph
|
|
130
|
-
* node is deduped into ONE device row enriched with the graph metadata
|
|
131
|
-
* (relationship / kind / parent / membership).
|
|
132
|
-
*/
|
|
133
|
-
export declare function buildSwitchableAccounts(input: BuildSwitchableAccountsInput): SwitchableAccount[];
|
|
134
|
-
/**
|
|
135
|
-
* Resolve every account the signed-in user can switch into — device sign-ins
|
|
136
|
-
* AND linked graph accounts (owned orgs + shared-with-you) — as one flat list
|
|
137
|
-
* with real per-account name / email / avatar / color, deduped by account id.
|
|
138
|
-
*
|
|
139
|
-
* ## Data sources
|
|
140
|
-
*
|
|
141
|
-
* - Device sign-ins: `useOxy().sessions` — a `ClientSession[]` projected by
|
|
142
|
-
* `OxyContext.syncFromClient` from the server-authoritative `SessionClient`.
|
|
143
|
-
* Each session carries only `sessionId` + `userId`, so this hook additionally
|
|
144
|
-
* fetches every device account's profile via `oxyServices.getUsersByIds()`.
|
|
145
|
-
* The ACTIVE row always uses `useOxy().user` directly (the freshest copy).
|
|
146
|
-
* - Linked accounts: `useOxy().accounts` — the `AccountNode[]` graph the context
|
|
147
|
-
* loads from `GET /accounts`. Each node already embeds its `account` `User`
|
|
148
|
-
* document, so graph-only rows need no extra fetch.
|
|
149
|
-
*
|
|
150
|
-
* An account present as BOTH a device session and a graph node is deduped into
|
|
151
|
-
* ONE row (see {@link buildSwitchableAccounts}). EVERY row switches the same
|
|
152
|
-
* way — through `useOxy().switchToAccount(row.accountId)`.
|
|
153
|
-
*
|
|
154
|
-
* ## Error handling
|
|
155
|
-
*
|
|
156
|
-
* `getUsersByIds()` resolves to `[]` on a failed chunk (logged internally)
|
|
157
|
-
* rather than throwing. Device accounts whose profile could not be resolved are
|
|
158
|
-
* omitted until a subsequent fetch succeeds (except the active one, which never
|
|
159
|
-
* depends on this fetch); graph accounts are unaffected.
|
|
11
|
+
* Every account the signed-in user can switch into — device sign-ins AND linked
|
|
12
|
+
* graph accounts (owned orgs + shared-with-you) — as one flat, deduped list with
|
|
13
|
+
* real per-account name / email / avatar / color.
|
|
14
|
+
*
|
|
15
|
+
* This is a thin binding over the shared `AccountDialogController` in
|
|
16
|
+
* `@oxyhq/core` (the SAME headless source the {@link OxyAccountDialog} renders),
|
|
17
|
+
* so there is ONE projection (`projectSwitchableAccounts`) and one switch path
|
|
18
|
+
* (`controller.switchTo`) across the whole SDK — the local duplicate projection
|
|
19
|
+
* this hook used to own has been removed. Every switch routes through
|
|
20
|
+
* `useOxy().switchToAccount(accountId)` (or the dialog's row press).
|
|
160
21
|
*/
|
|
161
22
|
export declare function useSwitchableAccounts(): UseSwitchableAccountsResult;
|
|
162
23
|
//# sourceMappingURL=useSwitchableAccounts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSwitchableAccounts.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSwitchableAccounts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSwitchableAccounts.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSwitchableAccounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAG5E,MAAM,WAAW,2BAA2B;IACxC,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,2BAA2B,CAuBnE"}
|
|
@@ -16,16 +16,14 @@ export { default as OxySignInButton } from './components/OxySignInButton';
|
|
|
16
16
|
export { default as OxyAuthPrompt } from './components/OxyAuthPrompt';
|
|
17
17
|
export type { OxyAuthPromptProps } from './components/OxyAuthPrompt';
|
|
18
18
|
export { default as OxyLogo } from './components/OxyLogo';
|
|
19
|
+
export { RequireOxyAuth } from './components/RequireOxyAuth';
|
|
20
|
+
export type { RequireOxyAuthProps, RequireOxyAuthPrompt } from './components/RequireOxyAuth';
|
|
19
21
|
export { default as Avatar } from './components/Avatar';
|
|
20
22
|
export { default as FollowButton } from './components/FollowButton';
|
|
21
23
|
export { default as OxyPayButton } from './components/OxyPayButton';
|
|
22
24
|
export { FontLoader, setupFonts } from './components/FontLoader';
|
|
23
25
|
export { default as OxyIcon } from './components/icon/OxyIcon';
|
|
24
|
-
export { default as AccountMenu } from './components/AccountMenu';
|
|
25
|
-
export { default as AccountMenuButton } from './components/AccountMenuButton';
|
|
26
26
|
export { default as ProfileButton } from './components/ProfileButton';
|
|
27
|
-
export { default as ProfileMenu } from './components/ProfileMenu';
|
|
28
|
-
export { default as AccountSwitcher, AccountSwitcherView } from './components/AccountSwitcher';
|
|
29
27
|
export { useOxy } from './context/OxyContext';
|
|
30
28
|
export { useAuth } from './hooks/useAuth';
|
|
31
29
|
export { useFollow } from './hooks/useFollow';
|
|
@@ -33,7 +31,6 @@ export { useStorage } from './hooks/useStorage';
|
|
|
33
31
|
export type { UseStorageOptions, UseStorageResult } from './hooks/useStorage';
|
|
34
32
|
export { default as ProfileScreen } from './screens/ProfileScreen';
|
|
35
33
|
export { default as ManageAccountScreen } from './screens/ManageAccountScreen';
|
|
36
|
-
export { default as AccountSwitcherScreen } from './screens/AccountSwitcherScreen';
|
|
37
34
|
export { default as CreateAccountScreen } from './screens/CreateAccountScreen';
|
|
38
35
|
export { default as AccountMembersScreen } from './screens/AccountMembersScreen';
|
|
39
36
|
export { default as AccountSettingsScreen } from './screens/AccountSettingsScreen';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|