@buildbase/sdk 0.0.12 → 0.0.14
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 +34 -13
- package/dist/index.d.ts +39 -195
- package/dist/index.esm.js +5 -11
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +5 -11
- package/dist/index.js.map +1 -1
- package/dist/saas-os.css +1 -1
- package/dist/types/api/types.d.ts +7 -0
- package/dist/types/components/dropdowns/country/selectCountry.d.ts +2 -2
- package/dist/types/components/dropdowns/currency/selectCurrency.d.ts +2 -2
- package/dist/types/components/dropdowns/language/selectLanguage.d.ts +2 -2
- package/dist/types/components/dropdowns/timezone/selectTimeZone.d.ts +2 -2
- package/dist/types/components/ui/command-select.d.ts +13 -0
- package/dist/types/components/ui/command.d.ts +2 -2
- package/dist/types/contexts/WorkspaceContext/actions.d.ts +1 -1
- package/dist/types/contexts/WorkspaceContext/types.d.ts +3 -3
- package/dist/types/contexts/shared/useSelectWithEquality.d.ts +10 -0
- package/dist/types/index.d.ts +1 -3
- package/dist/types/lib/api-utils.d.ts +18 -0
- package/dist/types/lib/error-handler.d.ts +18 -0
- package/dist/types/lib/logger.d.ts +27 -0
- package/dist/types/lib/useAsyncEffect.d.ts +29 -0
- package/dist/types/lib/utils.d.ts +5 -0
- package/dist/types/providers/auth/hooks.d.ts +2 -1
- package/dist/types/providers/auth/types.d.ts +12 -0
- package/dist/types/providers/auth/utils.d.ts +7 -2
- package/dist/types/providers/constants.d.ts +1 -0
- package/dist/types/providers/workspace/hooks.d.ts +10 -7
- package/dist/types/providers/workspace/provider.d.ts +0 -1
- package/dist/types/providers/workspace/types.d.ts +3 -2
- package/dist/types/providers/workspace/ui/SettingsInvoices.d.ts +12 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -95,6 +95,11 @@ export default function SaaSProvider(props: { children: React.ReactNode }) {
|
|
|
95
95
|
// Handle SDK events (user created, workspace changed, etc.)
|
|
96
96
|
console.log('SDK Event:', eventType, data);
|
|
97
97
|
},
|
|
98
|
+
onWorkspaceChange: async ({ workspace, user, role }) => {
|
|
99
|
+
// Called before switching workspace (e.g. generate token). Used on "Switch to" and page refresh/restore.
|
|
100
|
+
// Switch proceeds only when this resolves; reject to abort.
|
|
101
|
+
console.log('Switching to workspace:', workspace.name, 'as', role);
|
|
102
|
+
},
|
|
98
103
|
},
|
|
99
104
|
}}
|
|
100
105
|
>
|
|
@@ -124,7 +129,7 @@ export default App;
|
|
|
124
129
|
|
|
125
130
|
### 4. Workspace Management
|
|
126
131
|
|
|
127
|
-
The WorkspaceSwitcher component uses a render prop pattern, giving you full control over the UI:
|
|
132
|
+
The WorkspaceSwitcher component uses a render prop pattern, giving you full control over the UI. Configure `onWorkspaceChange` in `auth.callbacks` (SaaSOSProvider) to handle workspace switches—used when clicking "Switch to" and when restoring from storage on page refresh. The callback receives `{ workspace, user, role }` so you don't need to look up the user's role:
|
|
128
133
|
|
|
129
134
|
```tsx
|
|
130
135
|
import React from 'react';
|
|
@@ -160,10 +165,6 @@ function WorkspaceExample() {
|
|
|
160
165
|
</div>
|
|
161
166
|
);
|
|
162
167
|
}}
|
|
163
|
-
onWorkspaceChange={async workspace => {
|
|
164
|
-
// Handle workspace change
|
|
165
|
-
console.log('Workspace changed to:', workspace);
|
|
166
|
-
}}
|
|
167
168
|
/>
|
|
168
169
|
);
|
|
169
170
|
}
|
|
@@ -372,10 +373,12 @@ function WorkspaceManager() {
|
|
|
372
373
|
currentWorkspace, // Currently selected workspace
|
|
373
374
|
loading, // Loading state
|
|
374
375
|
refreshing, // Refreshing state
|
|
376
|
+
switching, // True when a workspace switch is in progress
|
|
375
377
|
error, // Error message
|
|
376
378
|
fetchWorkspaces, // Fetch all workspaces
|
|
377
379
|
refreshWorkspaces, // Background refresh
|
|
378
|
-
setCurrentWorkspace, //
|
|
380
|
+
setCurrentWorkspace, // Direct workspace set (bypasses onWorkspaceChange)
|
|
381
|
+
switchToWorkspace, // Full switch flow: onWorkspaceChange first, then set workspace
|
|
379
382
|
createWorkspace, // Create new workspace
|
|
380
383
|
updateWorkspace, // Update workspace
|
|
381
384
|
deleteWorkspace, // Delete workspace
|
|
@@ -460,7 +463,7 @@ import { SaaSOSProvider, eventEmitter } from '@buildbase/sdk';
|
|
|
460
463
|
|
|
461
464
|
- `user:created` - User account created
|
|
462
465
|
- `user:updated` - User profile updated
|
|
463
|
-
- `workspace:changed` - Workspace switched
|
|
466
|
+
- `workspace:changed` - Workspace switched (fires after switch completes; use `onWorkspaceChange` for prep before switch)
|
|
464
467
|
- `workspace:created` - New workspace created
|
|
465
468
|
- `workspace:updated` - Workspace updated
|
|
466
469
|
- `workspace:deleted` - Workspace deleted
|
|
@@ -557,8 +560,15 @@ interface IAuthConfig {
|
|
|
557
560
|
handleAuthentication: (code: string) => Promise<{ sessionId: string }>;
|
|
558
561
|
onSignOut?: () => Promise<void>;
|
|
559
562
|
handleEvent?: (eventType: EventType, data: EventData) => void | Promise<void>;
|
|
563
|
+
onWorkspaceChange?: (params: OnWorkspaceChangeParams) => Promise<void>;
|
|
560
564
|
};
|
|
561
565
|
}
|
|
566
|
+
|
|
567
|
+
interface OnWorkspaceChangeParams {
|
|
568
|
+
workspace: IWorkspace;
|
|
569
|
+
user: AuthUser | null;
|
|
570
|
+
role: string | null; // User's role in this workspace
|
|
571
|
+
}
|
|
562
572
|
```
|
|
563
573
|
|
|
564
574
|
### Validation Requirements
|
|
@@ -683,7 +693,7 @@ import { useSaaSWorkspaces } from '@buildbase/sdk';
|
|
|
683
693
|
import { useEffect } from 'react';
|
|
684
694
|
|
|
685
695
|
function App() {
|
|
686
|
-
const { currentWorkspace,
|
|
696
|
+
const { currentWorkspace, switching } = useSaaSWorkspaces();
|
|
687
697
|
|
|
688
698
|
useEffect(() => {
|
|
689
699
|
if (currentWorkspace) {
|
|
@@ -693,10 +703,15 @@ function App() {
|
|
|
693
703
|
}
|
|
694
704
|
}, [currentWorkspace]);
|
|
695
705
|
|
|
706
|
+
// Show loading during switch (switchingToId !== null)
|
|
707
|
+
if (switching) return <LoadingOverlay />;
|
|
708
|
+
|
|
696
709
|
return <YourApp />;
|
|
697
710
|
}
|
|
698
711
|
```
|
|
699
712
|
|
|
713
|
+
For token generation or prep before switching, configure `onWorkspaceChange` in auth callbacks (see Quick Start)—it receives `{ workspace, user, role }`.
|
|
714
|
+
|
|
700
715
|
### Pattern 6: Error Boundary with Custom Fallback
|
|
701
716
|
|
|
702
717
|
```tsx
|
|
@@ -863,7 +878,7 @@ A: Yes, as long as you're using React 19+.
|
|
|
863
878
|
A: Use the `trigger` render prop to fully customize the UI.
|
|
864
879
|
|
|
865
880
|
**Q: Can I use multiple workspaces simultaneously?**
|
|
866
|
-
A: No, the SDK manages one current workspace at a time.
|
|
881
|
+
A: No, the SDK manages one current workspace at a time. Use `switchToWorkspace()` (runs `onWorkspaceChange` first) or `setCurrentWorkspace()` (direct set, bypasses callback).
|
|
867
882
|
|
|
868
883
|
**Q: How do I handle offline scenarios?**
|
|
869
884
|
A: The SDK stores session data in localStorage. Handle offline scenarios in your `handleAuthentication` callback.
|
|
@@ -933,9 +948,13 @@ try {
|
|
|
933
948
|
|
|
934
949
|
```tsx
|
|
935
950
|
// ✅ Good
|
|
936
|
-
const { currentWorkspace,
|
|
951
|
+
const { currentWorkspace, switchToWorkspace, switching } = useSaaSWorkspaces();
|
|
952
|
+
// switchToWorkspace: runs onWorkspaceChange first (token gen, etc.)
|
|
953
|
+
// switching: true when switch is in progress
|
|
937
954
|
```
|
|
938
955
|
|
|
956
|
+
✅ **Do**: Configure `onWorkspaceChange` in auth callbacks for token generation—receives `{ workspace, user, role }`.
|
|
957
|
+
|
|
939
958
|
❌ **Don't**: Manually manage workspace state.
|
|
940
959
|
|
|
941
960
|
```tsx
|
|
@@ -987,17 +1006,19 @@ const { signIn, status } = useSaaSAuth();
|
|
|
987
1006
|
|
|
988
1007
|
### 6. Event Handling
|
|
989
1008
|
|
|
990
|
-
✅ **Do**: Handle events in your provider configuration.
|
|
1009
|
+
✅ **Do**: Handle events in your provider configuration. Use `onWorkspaceChange` for prep before switch (e.g. generate token), and `handleEvent` for post-switch notifications.
|
|
991
1010
|
|
|
992
1011
|
```tsx
|
|
993
1012
|
// ✅ Good
|
|
994
1013
|
<SaaSOSProvider
|
|
995
1014
|
auth={{
|
|
996
1015
|
callbacks: {
|
|
1016
|
+
onWorkspaceChange: async ({ workspace, user, role }) => {
|
|
1017
|
+
await generateTokenForWorkspace(workspace._id, user?.id, role);
|
|
1018
|
+
},
|
|
997
1019
|
handleEvent: async (eventType, data) => {
|
|
998
|
-
// Handle events
|
|
999
1020
|
if (eventType === 'workspace:changed') {
|
|
1000
|
-
//
|
|
1021
|
+
// Workspace already switched; update app state
|
|
1001
1022
|
}
|
|
1002
1023
|
},
|
|
1003
1024
|
},
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import react__default, { ReactNode
|
|
2
|
+
import react__default, { ReactNode } from 'react';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
interface IDocument {
|
|
@@ -27,6 +27,12 @@ interface ISubscription {
|
|
|
27
27
|
cancelAtPeriodEnd: boolean;
|
|
28
28
|
createdAt: string;
|
|
29
29
|
updatedAt: string;
|
|
30
|
+
plan?: {
|
|
31
|
+
_id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
slug: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
};
|
|
30
36
|
}
|
|
31
37
|
interface ISubscriptionItem {
|
|
32
38
|
_id: string;
|
|
@@ -209,6 +215,7 @@ type InvoiceStatus = 'draft' | 'open' | 'paid' | 'uncollectible' | 'void';
|
|
|
209
215
|
interface IInvoice {
|
|
210
216
|
id: string;
|
|
211
217
|
amount_due: number;
|
|
218
|
+
number: string | null;
|
|
212
219
|
amount_paid: number;
|
|
213
220
|
currency: string;
|
|
214
221
|
status: InvoiceStatus;
|
|
@@ -238,6 +245,7 @@ interface IWorkspace {
|
|
|
238
245
|
roles: string[];
|
|
239
246
|
createdBy: string | IUser;
|
|
240
247
|
features: Record<string, boolean>;
|
|
248
|
+
subscription?: ISubscription | null;
|
|
241
249
|
}
|
|
242
250
|
interface IWorkspaceFeature {
|
|
243
251
|
_id: string;
|
|
@@ -355,6 +363,17 @@ interface IAuthCallbacks {
|
|
|
355
363
|
* @param data - The event data (type varies based on eventType)
|
|
356
364
|
*/
|
|
357
365
|
handleEvent?: (eventType: EventType, data: EventData) => void | Promise<void>;
|
|
366
|
+
/**
|
|
367
|
+
* Called before switching workspace (e.g. generate token, save state).
|
|
368
|
+
* Used when user clicks "Switch to" and when restoring from storage on page refresh.
|
|
369
|
+
* Switch proceeds only when this resolves; reject to abort.
|
|
370
|
+
*/
|
|
371
|
+
onWorkspaceChange?: (params: OnWorkspaceChangeParams) => Promise<void>;
|
|
372
|
+
}
|
|
373
|
+
interface OnWorkspaceChangeParams {
|
|
374
|
+
workspace: IWorkspace;
|
|
375
|
+
user: AuthUser | null;
|
|
376
|
+
role: string | null;
|
|
358
377
|
}
|
|
359
378
|
|
|
360
379
|
interface ISettings {
|
|
@@ -677,6 +696,8 @@ declare const WhenUserFeatureEnabled: (props: IProps) => react.ReactNode;
|
|
|
677
696
|
*/
|
|
678
697
|
declare const WhenUserFeatureDisabled: (props: IProps) => react.ReactNode;
|
|
679
698
|
|
|
699
|
+
type WorkspaceSettingsSection = 'profile' | 'general' | 'users' | 'subscription' | 'features' | 'danger';
|
|
700
|
+
|
|
680
701
|
/**
|
|
681
702
|
* Main authentication hook for the SDK.
|
|
682
703
|
* Provides authentication state, user session, and auth actions.
|
|
@@ -741,7 +762,7 @@ declare const WhenUserFeatureDisabled: (props: IProps) => react.ReactNode;
|
|
|
741
762
|
declare function useSaaSAuth(): {
|
|
742
763
|
signIn: () => Promise<void>;
|
|
743
764
|
signOut: () => Promise<void>;
|
|
744
|
-
openWorkspaceSettings: (section?:
|
|
765
|
+
openWorkspaceSettings: (section?: WorkspaceSettingsSection) => void;
|
|
745
766
|
isAuthenticated: boolean;
|
|
746
767
|
isLoading: boolean;
|
|
747
768
|
isRedirecting: boolean;
|
|
@@ -885,11 +906,6 @@ declare function useUserFeatures(): {
|
|
|
885
906
|
isFeatureEnabled: (featureId: string) => boolean;
|
|
886
907
|
};
|
|
887
908
|
|
|
888
|
-
declare function WorkspaceSwitcher(props: {
|
|
889
|
-
trigger: (isLoading: boolean, currentWorkspace: IWorkspace | null) => ReactNode;
|
|
890
|
-
onWorkspaceChange: (workspace: IWorkspace) => Promise<void>;
|
|
891
|
-
}): react_jsx_runtime.JSX.Element;
|
|
892
|
-
|
|
893
909
|
/**
|
|
894
910
|
* Main workspace management hook for the SDK.
|
|
895
911
|
* Provides workspace state, CRUD operations, and user management.
|
|
@@ -900,11 +916,11 @@ declare function WorkspaceSwitcher(props: {
|
|
|
900
916
|
* - `loading`: Boolean indicating if workspaces are being fetched
|
|
901
917
|
* - `error`: Error message string (null if no error)
|
|
902
918
|
* - `refreshing`: Boolean indicating if workspaces are being refreshed in background
|
|
903
|
-
* - `switching`: Boolean
|
|
904
|
-
* - `WorkspaceSwitcher`: Component for switching between workspaces
|
|
919
|
+
* - `switching`: Boolean - true when a workspace switch is in progress
|
|
905
920
|
* - `fetchWorkspaces()`: Function to fetch all workspaces
|
|
906
921
|
* - `refreshWorkspaces()`: Function to refresh workspaces in background (non-blocking)
|
|
907
|
-
* - `setCurrentWorkspace(workspace)`: Function to set the current workspace
|
|
922
|
+
* - `setCurrentWorkspace(workspace)`: Function to set the current workspace (direct, no callback)
|
|
923
|
+
* - `switchToWorkspace(workspace)`: Centralized switch - calls onWorkspaceChange first, then sets workspace
|
|
908
924
|
* - `resetCurrentWorkspace()`: Function to clear the current workspace
|
|
909
925
|
* - `createWorkspace(name, image?)`: Function to create a new workspace
|
|
910
926
|
* - `updateWorkspace(workspace, data)`: Function to update a workspace
|
|
@@ -1002,16 +1018,19 @@ declare const useSaaSWorkspaces: () => {
|
|
|
1002
1018
|
fetchWorkspaces: () => Promise<void>;
|
|
1003
1019
|
refreshWorkspaces: () => Promise<void>;
|
|
1004
1020
|
refreshing: boolean;
|
|
1005
|
-
WorkspaceSwitcher: typeof WorkspaceSwitcher;
|
|
1006
1021
|
currentWorkspace: IWorkspace | null;
|
|
1007
|
-
setCurrentWorkspace: (ws: IWorkspace
|
|
1022
|
+
setCurrentWorkspace: (ws: IWorkspace, options?: {
|
|
1023
|
+
forceEmit?: boolean;
|
|
1024
|
+
}) => void;
|
|
1025
|
+
switchToWorkspace: (ws: IWorkspace, options?: {
|
|
1026
|
+
forceEmit?: boolean;
|
|
1027
|
+
}) => Promise<void>;
|
|
1008
1028
|
resetCurrentWorkspace: () => void;
|
|
1009
1029
|
createWorkspace: (name: string, image: string) => Promise<void>;
|
|
1010
1030
|
allFeatures: IWorkspaceFeature[];
|
|
1011
1031
|
getFeatures: () => Promise<IWorkspaceFeature[] | null>;
|
|
1012
1032
|
updateFeature: (workspaceId: string, key: string, value: boolean) => Promise<IWorkspace>;
|
|
1013
1033
|
getWorkspace: (workspaceId: string) => Promise<IWorkspace>;
|
|
1014
|
-
switching: boolean;
|
|
1015
1034
|
updateWorkspace: (ws: IWorkspace, _data: Partial<IWorkspace>) => Promise<void>;
|
|
1016
1035
|
getUsers: (workspaceId: string) => Promise<IWorkspaceUser[]>;
|
|
1017
1036
|
addUser: (workspaceId: string, email: string, role: string) => Promise<{
|
|
@@ -1034,8 +1053,13 @@ declare const useSaaSWorkspaces: () => {
|
|
|
1034
1053
|
deleteWorkspace: (workspaceId: string) => Promise<{
|
|
1035
1054
|
success: boolean;
|
|
1036
1055
|
}>;
|
|
1056
|
+
switching: boolean;
|
|
1037
1057
|
};
|
|
1038
1058
|
|
|
1059
|
+
declare function WorkspaceSwitcher(props: {
|
|
1060
|
+
trigger: (isLoading: boolean, currentWorkspace: IWorkspace | null) => ReactNode;
|
|
1061
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1062
|
+
|
|
1039
1063
|
/**
|
|
1040
1064
|
* Hook to get and manage the current subscription for a workspace.
|
|
1041
1065
|
* Automatically fetches subscription when workspaceId changes.
|
|
@@ -1544,185 +1568,5 @@ declare class EventEmitter {
|
|
|
1544
1568
|
}
|
|
1545
1569
|
declare const eventEmitter: EventEmitter;
|
|
1546
1570
|
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
/**
|
|
1550
|
-
* Fallback UI to render when an error occurs
|
|
1551
|
-
*/
|
|
1552
|
-
fallback?: ReactNode | ((error: Error, resetError: () => void) => ReactNode);
|
|
1553
|
-
/**
|
|
1554
|
-
* Called when an error is caught
|
|
1555
|
-
*/
|
|
1556
|
-
onError?: (error: Error, errorInfo: react__default.ErrorInfo) => void;
|
|
1557
|
-
/**
|
|
1558
|
-
* Whether to reset error state when children change
|
|
1559
|
-
* @default true
|
|
1560
|
-
*/
|
|
1561
|
-
resetOnPropsChange?: boolean;
|
|
1562
|
-
}
|
|
1563
|
-
interface ErrorBoundaryState {
|
|
1564
|
-
hasError: boolean;
|
|
1565
|
-
error: Error | null;
|
|
1566
|
-
}
|
|
1567
|
-
/**
|
|
1568
|
-
* Error Boundary component for catching React component errors.
|
|
1569
|
-
* Wraps SDK components to prevent crashes from propagating to the entire app.
|
|
1570
|
-
* Automatically logs errors using the SDK error handler.
|
|
1571
|
-
*
|
|
1572
|
-
* @example
|
|
1573
|
-
* ```tsx
|
|
1574
|
-
* function App() {
|
|
1575
|
-
* return (
|
|
1576
|
-
* <SDKErrorBoundary
|
|
1577
|
-
* fallback={(error, reset) => (
|
|
1578
|
-
* <div>
|
|
1579
|
-
* <p>Error: {error.message}</p>
|
|
1580
|
-
* <button onClick={reset}>Try Again</button>
|
|
1581
|
-
* </div>
|
|
1582
|
-
* )}
|
|
1583
|
-
* onError={(error, errorInfo) => {
|
|
1584
|
-
* // Custom error reporting
|
|
1585
|
-
* reportError(error, errorInfo);
|
|
1586
|
-
* }}
|
|
1587
|
-
* >
|
|
1588
|
-
* <YourApp />
|
|
1589
|
-
* </SDKErrorBoundary>
|
|
1590
|
-
* );
|
|
1591
|
-
* }
|
|
1592
|
-
* ```
|
|
1593
|
-
*
|
|
1594
|
-
* @example
|
|
1595
|
-
* ```tsx
|
|
1596
|
-
* // Simple usage with default fallback
|
|
1597
|
-
* function App() {
|
|
1598
|
-
* return (
|
|
1599
|
-
* <SDKErrorBoundary>
|
|
1600
|
-
* <YourApp />
|
|
1601
|
-
* </SDKErrorBoundary>
|
|
1602
|
-
* );
|
|
1603
|
-
* }
|
|
1604
|
-
* ```
|
|
1605
|
-
*
|
|
1606
|
-
* @example
|
|
1607
|
-
* ```tsx
|
|
1608
|
-
* // Disable auto-reset on props change
|
|
1609
|
-
* function App() {
|
|
1610
|
-
* return (
|
|
1611
|
-
* <SDKErrorBoundary resetOnPropsChange={false}>
|
|
1612
|
-
* <YourApp />
|
|
1613
|
-
* </SDKErrorBoundary>
|
|
1614
|
-
* );
|
|
1615
|
-
* }
|
|
1616
|
-
* ```
|
|
1617
|
-
*/
|
|
1618
|
-
declare class SDKErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
1619
|
-
constructor(props: ErrorBoundaryProps);
|
|
1620
|
-
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
1621
|
-
componentDidCatch(error: Error, errorInfo: react__default.ErrorInfo): void;
|
|
1622
|
-
componentDidUpdate(prevProps: ErrorBoundaryProps): void;
|
|
1623
|
-
resetError: () => void;
|
|
1624
|
-
render(): ReactNode;
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1627
|
-
/**
|
|
1628
|
-
* Centralized Error Handler for SDK
|
|
1629
|
-
* Provides consistent error handling, logging, and user-facing error management
|
|
1630
|
-
*/
|
|
1631
|
-
interface SDKErrorContext {
|
|
1632
|
-
component?: string;
|
|
1633
|
-
action?: string;
|
|
1634
|
-
metadata?: Record<string, unknown>;
|
|
1635
|
-
}
|
|
1636
|
-
declare class SDKError extends Error {
|
|
1637
|
-
readonly code?: string | undefined;
|
|
1638
|
-
readonly context?: SDKErrorContext | undefined;
|
|
1639
|
-
readonly originalError?: Error | undefined;
|
|
1640
|
-
constructor(message: string, code?: string | undefined, context?: SDKErrorContext | undefined, originalError?: Error | undefined);
|
|
1641
|
-
}
|
|
1642
|
-
interface ErrorHandlerConfig {
|
|
1643
|
-
/**
|
|
1644
|
-
* Custom error callback for handling errors
|
|
1645
|
-
* @param error - The error that occurred
|
|
1646
|
-
* @param context - Additional context about where the error occurred
|
|
1647
|
-
*/
|
|
1648
|
-
onError?: (error: Error, context: SDKErrorContext) => void;
|
|
1649
|
-
/**
|
|
1650
|
-
* Whether to log errors to console in development
|
|
1651
|
-
* @default true
|
|
1652
|
-
*/
|
|
1653
|
-
enableConsoleLogging?: boolean;
|
|
1654
|
-
/**
|
|
1655
|
-
* Whether to show user-facing error notifications
|
|
1656
|
-
* @default false
|
|
1657
|
-
*/
|
|
1658
|
-
showUserNotifications?: boolean;
|
|
1659
|
-
}
|
|
1660
|
-
declare class ErrorHandler {
|
|
1661
|
-
private config;
|
|
1662
|
-
/**
|
|
1663
|
-
* Configure the error handler
|
|
1664
|
-
*/
|
|
1665
|
-
configure(config: Partial<ErrorHandlerConfig>): void;
|
|
1666
|
-
/**
|
|
1667
|
-
* Handle an error with context
|
|
1668
|
-
*/
|
|
1669
|
-
handleError(error: Error | unknown, context?: SDKErrorContext): void;
|
|
1670
|
-
/**
|
|
1671
|
-
* Notify user of error (placeholder for notification system)
|
|
1672
|
-
*/
|
|
1673
|
-
private notifyUser;
|
|
1674
|
-
/**
|
|
1675
|
-
* Create a safe error handler wrapper for async functions
|
|
1676
|
-
*/
|
|
1677
|
-
wrapAsync<T extends (...args: any[]) => Promise<any>>(fn: T, context: SDKErrorContext): T;
|
|
1678
|
-
/**
|
|
1679
|
-
* Create a safe error handler wrapper for sync functions
|
|
1680
|
-
*/
|
|
1681
|
-
wrapSync<T extends (...args: any[]) => any>(fn: T, context: SDKErrorContext): T;
|
|
1682
|
-
}
|
|
1683
|
-
declare const errorHandler: ErrorHandler;
|
|
1684
|
-
/**
|
|
1685
|
-
* Convenience function to handle an error with context.
|
|
1686
|
-
* Uses the global error handler instance.
|
|
1687
|
-
*
|
|
1688
|
-
* @param error - The error to handle (Error instance, string, or unknown)
|
|
1689
|
-
* @param context - Optional context about where the error occurred
|
|
1690
|
-
*
|
|
1691
|
-
* @example
|
|
1692
|
-
* ```tsx
|
|
1693
|
-
* try {
|
|
1694
|
-
* await someOperation();
|
|
1695
|
-
* } catch (error) {
|
|
1696
|
-
* handleError(error, {
|
|
1697
|
-
* component: 'MyComponent',
|
|
1698
|
-
* action: 'someOperation',
|
|
1699
|
-
* metadata: { userId: '123' },
|
|
1700
|
-
* });
|
|
1701
|
-
* }
|
|
1702
|
-
* ```
|
|
1703
|
-
*/
|
|
1704
|
-
declare function handleError(error: Error | unknown, context?: SDKErrorContext): void;
|
|
1705
|
-
/**
|
|
1706
|
-
* Creates a new SDKError instance with optional code and context.
|
|
1707
|
-
* Useful for creating standardized errors throughout the SDK.
|
|
1708
|
-
*
|
|
1709
|
-
* @param message - Error message
|
|
1710
|
-
* @param code - Optional error code (e.g., 'AUTH_FAILED', 'NETWORK_ERROR')
|
|
1711
|
-
* @param context - Optional context about where the error occurred
|
|
1712
|
-
* @param originalError - Optional original error that caused this error
|
|
1713
|
-
* @returns A new SDKError instance
|
|
1714
|
-
*
|
|
1715
|
-
* @example
|
|
1716
|
-
* ```tsx
|
|
1717
|
-
* throw createSDKError(
|
|
1718
|
-
* 'Failed to authenticate user',
|
|
1719
|
-
* 'AUTH_FAILED',
|
|
1720
|
-
* { component: 'AuthProvider', action: 'signIn' },
|
|
1721
|
-
* originalError
|
|
1722
|
-
* );
|
|
1723
|
-
* ```
|
|
1724
|
-
*/
|
|
1725
|
-
declare function createSDKError(message: string, code?: string, context?: SDKErrorContext, originalError?: Error): SDKError;
|
|
1726
|
-
|
|
1727
|
-
export { ApiVersion, AuthStatus, BetaForm, SDKErrorBoundary as ErrorBoundary, SDKError, SDKErrorBoundary, SaaSOSProvider, WhenAuthenticated, WhenRoles, WhenUnauthenticated, WhenUserFeatureDisabled, WhenUserFeatureEnabled, WhenWorkspaceFeatureDisabled, WhenWorkspaceFeatureEnabled, WhenWorkspaceRoles, WorkspaceSwitcher, createSDKError, errorHandler, eventEmitter, handleError, useCreateCheckoutSession, useInvoice, useInvoices, usePlanGroup, usePlanGroupVersions, useSaaSAuth, useSaaSSettings, useSaaSWorkspaces, useSubscription, useSubscriptionManagement, useUpdateSubscription, useUserAttributes, useUserFeatures };
|
|
1728
|
-
export type { BillingInterval, ErrorHandlerConfig, EventData, EventType, IBasePricing, ICheckoutSessionRequest, ICheckoutSessionResponse, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IPlan, IPlanGroup, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionWithPlan, IQuotaValue, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, InvoiceStatus, SDKErrorContext, UserCreatedEventData, UserUpdatedEventData, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|
|
1571
|
+
export { ApiVersion, AuthStatus, BetaForm, SaaSOSProvider, WhenAuthenticated, WhenRoles, WhenUnauthenticated, WhenUserFeatureDisabled, WhenUserFeatureEnabled, WhenWorkspaceFeatureDisabled, WhenWorkspaceFeatureEnabled, WhenWorkspaceRoles, WorkspaceSwitcher, eventEmitter, useCreateCheckoutSession, useInvoice, useInvoices, usePlanGroup, usePlanGroupVersions, useSaaSAuth, useSaaSSettings, useSaaSWorkspaces, useSubscription, useSubscriptionManagement, useUpdateSubscription, useUserAttributes, useUserFeatures };
|
|
1572
|
+
export type { BillingInterval, EventData, EventType, IBasePricing, ICheckoutSessionRequest, ICheckoutSessionResponse, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IPlan, IPlanGroup, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionWithPlan, IQuotaValue, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, InvoiceStatus, OnWorkspaceChangeParams, UserCreatedEventData, UserUpdatedEventData, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|