@tern-secure/types 1.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.
@@ -0,0 +1,123 @@
1
+ import { TernSecureUser } from './all';
2
+ import { Appearance } from './theme';
3
+ export interface TernSecureSession {
4
+ token: string | null;
5
+ expiresAt?: number;
6
+ }
7
+ type SignInFormValues = {
8
+ email: string;
9
+ password: string;
10
+ phoneNumber?: string;
11
+ };
12
+ export type SignInInitialValue = Partial<SignInFormValues>;
13
+ type SignUpFormValues = {
14
+ email: string;
15
+ password: string;
16
+ confirmPassword?: string;
17
+ displayName?: string;
18
+ };
19
+ export type SignUpInitialValue = Partial<SignUpFormValues>;
20
+ export interface SignInResponse {
21
+ success: boolean;
22
+ message?: string;
23
+ error?: any | undefined;
24
+ user?: any;
25
+ }
26
+ export interface AuthError extends Error {
27
+ code?: any | string;
28
+ message: string;
29
+ response?: SignInResponse;
30
+ }
31
+ export declare function isSignInResponse(value: any): value is SignInResponse;
32
+ export interface AuthActions {
33
+ signInWithEmail: (email: string, password: string) => Promise<SignInResponse>;
34
+ signInWithGoogle: () => Promise<void>;
35
+ signInWithMicrosoft: () => Promise<void>;
36
+ signOut: () => Promise<void>;
37
+ getRedirectResult: () => Promise<any>;
38
+ getIdToken: () => Promise<string | null>;
39
+ createUserWithEmailAndPassword?: (email: string, password: string) => Promise<SignInResponse>;
40
+ sendEmailVerification?: (user: TernSecureUser) => Promise<void>;
41
+ }
42
+ export interface RedirectConfig {
43
+ redirectUrl?: string;
44
+ isReturn?: boolean;
45
+ priority?: number;
46
+ }
47
+ export interface SignInProps extends RedirectConfig {
48
+ initialValue?: SignInInitialValue;
49
+ logo?: string;
50
+ appName?: string;
51
+ appearance?: Appearance;
52
+ onError?: (error: AuthError) => void;
53
+ onSuccess?: (user: TernSecureUser | null) => void;
54
+ }
55
+ /**
56
+ * SignUpProps interface defines the properties for the sign-up component.
57
+ * It extends RedirectConfig to include redirect-related properties.
58
+ */
59
+ export interface SignUpProps extends RedirectConfig {
60
+ initialValue?: SignUpInitialValue;
61
+ logo?: string;
62
+ appName?: string;
63
+ appearance?: Appearance;
64
+ onError?: (error: AuthError) => void;
65
+ onSuccess?: (user: TernSecureUser | null) => void;
66
+ }
67
+ /**
68
+ * Defines the contract for a TernSecure instance.
69
+ * This instance provides authentication state, user information, and methods
70
+ * for managing the authentication lifecycle. It is designed to be used by
71
+ * UI packages like tern-ui, which act as "dumb" renderers.
72
+ */
73
+ export interface TernSecureInstance {
74
+ /** Indicates if the user is currently signed in. */
75
+ isSignedIn: () => boolean;
76
+ /** The current authenticated user object, or null if not signed in. */
77
+ user: TernSecureUser | null;
78
+ /** The current user session information, or null if not signed in. */
79
+ session: TernSecureSession | null;
80
+ /** Initiates the sign-out process for the current user. */
81
+ signOut: () => Promise<void>;
82
+ /**
83
+ * Prepares or signals to mount the sign-in interface.
84
+ * @param options Optional configuration or initial state for the sign-in UI, conforming to SignInProps.
85
+ */
86
+ mountSignIn: (options?: SignInProps) => void;
87
+ /** Cleans up or signals to unmount the sign-in interface. */
88
+ unmountSignIn: () => void;
89
+ /**
90
+ * Prepares or signals to mount the sign-up interface.
91
+ * @param options Optional configuration or initial state for the sign-up UI, conforming to SignUpProps.
92
+ */
93
+ mountSignUp: (options?: SignUpProps) => void;
94
+ /** Cleans up or signals to unmount the sign-up interface. */
95
+ unmountSignUp: () => void;
96
+ /**
97
+ * Determines if a redirect is necessary based on the current authentication
98
+ * state and the given path.
99
+ * @param currentPath The current URL path.
100
+ * @returns True if a redirect is needed, false otherwise, or a string path to redirect to.
101
+ */
102
+ shouldRedirect: (currentPath: string) => boolean | string;
103
+ /**
104
+ * Constructs a URL, appending necessary redirect parameters.
105
+ * Useful for redirecting back to the original page after authentication.
106
+ * @param baseUrl The base URL to which redirect parameters should be added.
107
+ * @returns The new URL string with redirect parameters.
108
+ */
109
+ constructUrlWithRedirect: (baseUrl: string) => string;
110
+ /**
111
+ * Redirects the user to the configured login page.
112
+ * @param redirectUrl Optional URL to redirect to after successful login.
113
+ */
114
+ redirectToLogin: (redirectUrl?: string) => void;
115
+ /** Indicates if an authentication operation is currently in progress. */
116
+ isLoading: boolean;
117
+ /** Holds any error that occurred during an authentication operation, or null otherwise. */
118
+ error: Error | null;
119
+ /** Indicates if the user has verified their email address. */
120
+ sendVerificationEmail: () => Promise<void>;
121
+ }
122
+ export {};
123
+ //# sourceMappingURL=ternsecure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ternsecure.d.ts","sourceRoot":"","sources":["../src/ternsecure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Defines the basic structure for color theming.
3
+ */
4
+ export interface ThemeColors {
5
+ primary?: string;
6
+ secondary?: string;
7
+ accent?: string;
8
+ background?: string;
9
+ text?: string;
10
+ error?: string;
11
+ success?: string;
12
+ }
13
+ /**
14
+ * Defines the basic structure for font theming.
15
+ */
16
+ export interface ThemeFonts {
17
+ primary?: string;
18
+ secondary?: string;
19
+ }
20
+ /**
21
+ * Defines the basic structure for spacing and layout theming.
22
+ */
23
+ export interface ThemeSpacing {
24
+ small?: string | number;
25
+ medium?: string | number;
26
+ large?: string | number;
27
+ }
28
+ /**
29
+ * Defines the basic structure for border radius theming.
30
+ */
31
+ export interface ThemeBorderRadius {
32
+ small?: string | number;
33
+ medium?: string | number;
34
+ large?: string | number;
35
+ }
36
+ /**
37
+ * Allows for overriding styles of specific UI components.
38
+ * Properties can be CSS-in-JS objects or class names, depending on implementation.
39
+ */
40
+ export interface ThemeComponentStyles {
41
+ button?: Record<string, any> | string;
42
+ input?: Record<string, any> | string;
43
+ card?: Record<string, any> | string;
44
+ label?: Record<string, any> | string;
45
+ }
46
+ /**
47
+ * Defines the overall appearance/theme configuration.
48
+ * This allows for broad customization of the UI components.
49
+ */
50
+ export interface Appearance {
51
+ colors?: ThemeColors;
52
+ fonts?: ThemeFonts;
53
+ spacing?: ThemeSpacing;
54
+ borderRadius?: ThemeBorderRadius;
55
+ componentStyles?: ThemeComponentStyles;
56
+ variables?: Record<string, string | number>;
57
+ }
58
+ /**
59
+ * Base UI configuration shared between SignIn and SignUp
60
+ */
61
+ export interface BaseAuthUIConfig {
62
+ /** Visual appearance configuration */
63
+ appearance?: Appearance;
64
+ /** Application logo URL or SVG string */
65
+ logo?: string;
66
+ /** Application name for display */
67
+ appName?: string;
68
+ /** Render mode for cross-platform support */
69
+ renderMode?: 'modal' | 'page' | 'embedded';
70
+ /** Layout direction */
71
+ layout?: 'vertical' | 'horizontal';
72
+ /** Custom loading message */
73
+ loadingMessage?: string;
74
+ /** Loading spinner variant */
75
+ loadingSpinnerVariant?: 'circular' | 'linear' | 'dots';
76
+ /** Accessibility configuration */
77
+ a11y?: {
78
+ /** ARIA labels and descriptions */
79
+ labels?: Record<string, string>;
80
+ /** Element to receive initial focus */
81
+ initialFocus?: string;
82
+ /** Whether to trap focus within the auth UI */
83
+ trapFocus?: boolean;
84
+ };
85
+ }
86
+ /**
87
+ * Sign-in specific UI configuration
88
+ */
89
+ export interface SignInUIConfig extends BaseAuthUIConfig {
90
+ /** Social sign-in buttons configuration */
91
+ socialButtons?: {
92
+ google?: boolean;
93
+ microsoft?: boolean;
94
+ github?: boolean;
95
+ facebook?: boolean;
96
+ twitter?: boolean;
97
+ apple?: boolean;
98
+ linkedin?: boolean;
99
+ layout?: 'vertical' | 'horizontal';
100
+ size?: 'small' | 'medium' | 'large';
101
+ };
102
+ /** "Remember me" checkbox configuration */
103
+ rememberMe?: {
104
+ enabled?: boolean;
105
+ defaultChecked?: boolean;
106
+ };
107
+ /** Sign-up link configuration */
108
+ signUpLink?: {
109
+ enabled?: boolean;
110
+ text?: string;
111
+ href?: string;
112
+ };
113
+ }
114
+ /**
115
+ * Sign-up specific UI configuration
116
+ */
117
+ export interface SignUpUIConfig extends BaseAuthUIConfig {
118
+ /** Password requirements display configuration */
119
+ passwordRequirements?: {
120
+ show?: boolean;
121
+ rules?: Array<{
122
+ rule: string;
123
+ description: string;
124
+ }>;
125
+ };
126
+ /** Terms and conditions configuration */
127
+ terms?: {
128
+ enabled?: boolean;
129
+ text?: string;
130
+ link?: string;
131
+ };
132
+ }
133
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@tern-secure/types",
3
+ "version": "1.0.0",
4
+ "description": "Type definitions for TernSecure packages",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/TernSecure/typescript.git",
8
+ "directory": "packages/types"
9
+ },
10
+ "main": "dist/index.js",
11
+ "module": "dist/esm/index.js",
12
+ "types": "dist/index.d.ts",
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "clean": "rimraf dist",
24
+ "build": "pnpm clean && tsup && tsc -p tsconfig.add.json",
25
+ "dev": "tsup --watch",
26
+ "lint": "eslint src"
27
+ }
28
+ }