@vunexa/lixa 0.1.6-alpha.13 → 0.1.6-alpha.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 +101 -687
- package/dist/credentials/types.d.ts +6 -6
- package/dist/credentials/types.d.ts.map +1 -1
- package/dist/dao/session-cache.d.ts.map +1 -1
- package/dist/dao/types.d.ts +19 -0
- package/dist/dao/types.d.ts.map +1 -1
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/export-types/index.d.ts +556 -41
- package/dist/identity/index.d.ts +3 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/self-managed.d.ts +52 -0
- package/dist/identity/self-managed.d.ts.map +1 -0
- package/dist/identity/types.d.ts +224 -0
- package/dist/identity/types.d.ts.map +1 -0
- package/dist/index.cjs +658 -213
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +563 -65
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +654 -213
- package/dist/index.js.map +1 -1
- package/dist/lixa.d.ts +123 -28
- package/dist/lixa.d.ts.map +1 -1
- package/dist/models/session.d.ts +2 -2
- package/dist/models/session.d.ts.map +1 -1
- package/dist/providers/IProvider.d.ts +4 -0
- package/dist/providers/IProvider.d.ts.map +1 -1
- package/dist/types.d.ts +82 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { IIdentityProvider, UserIdentity, IdentityAuthResult } from "./types";
|
|
2
|
+
import type { CredentialsConfig, SignUpParams, SignInParams, VerifyCredentialsParams, ChangePasswordParams } from "../credentials/types";
|
|
3
|
+
import { CredentialsManager } from "../credentials/credentials-manager";
|
|
4
|
+
/**
|
|
5
|
+
* Self-Managed Identity Provider implementation for Lixa.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Backed by custom database storage (Prisma, Drizzle, PostgreSQL, SQLite, MongoDB)
|
|
9
|
+
* or local in-memory storage, with cryptographic password hashing (Scrypt, Argon2, PBKDF2)
|
|
10
|
+
* and configurable password policy enforcement.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export declare class SelfManagedIdentityProvider implements IIdentityProvider {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
private readonly manager;
|
|
17
|
+
constructor(configOrManager?: CredentialsConfig | CredentialsManager);
|
|
18
|
+
private mapUser;
|
|
19
|
+
/**
|
|
20
|
+
* Registers a new user.
|
|
21
|
+
*/
|
|
22
|
+
signUp(params: SignUpParams): Promise<UserIdentity>;
|
|
23
|
+
/**
|
|
24
|
+
* Authenticates a user with password.
|
|
25
|
+
*/
|
|
26
|
+
signIn(params: SignInParams): Promise<IdentityAuthResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Verifies credentials without throwing an error if invalid.
|
|
29
|
+
*/
|
|
30
|
+
verifyCredentials(params: VerifyCredentialsParams): Promise<UserIdentity | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Changes a user's password.
|
|
33
|
+
*/
|
|
34
|
+
changePassword(params: ChangePasswordParams): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves a user by their unique ID.
|
|
37
|
+
*/
|
|
38
|
+
getUserById(id: string): Promise<UserIdentity | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Retrieves a user by their identifier (email or username).
|
|
41
|
+
*/
|
|
42
|
+
getUserByIdentifier(identifier: string): Promise<UserIdentity | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Deletes a user from storage if supported by the storage adapter.
|
|
45
|
+
*/
|
|
46
|
+
deleteUser(id: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Returns the underlying CredentialsManager instance.
|
|
49
|
+
*/
|
|
50
|
+
getCredentialsManager(): CredentialsManager;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=self-managed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-managed.d.ts","sourceRoot":"","sources":["../../src/identity/self-managed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAInB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE;;;;;;;;;GASG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE,SAAgB,IAAI,EAAE,MAAM,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,eAAe,CAAC,EAAE,iBAAiB,GAAG,kBAAkB;IAQpE,OAAO,CAAC,OAAO;IAcf;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhE;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUtE;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK7F;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3E;;OAEG;IACU,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACU,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlF;;OAEG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD;;OAEG;IACI,qBAAqB,IAAI,kBAAkB;CAGnD"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import type { SignUpParams, SignInParams, VerifyCredentialsParams, ChangePasswordParams, CredentialsConfig } from "../credentials/types";
|
|
2
|
+
/**
|
|
3
|
+
* Standardized user identity representation across all identity providers
|
|
4
|
+
* (Self-Managed Database, AWS Cognito, Auth0, Okta, Firebase, etc.).
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export interface UserIdentity {
|
|
9
|
+
/** Unique user identifier (UUID, Sub, Auth0 user_id, Okta id) */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Primary unique lookup identifier (email or username) */
|
|
12
|
+
identifier: string;
|
|
13
|
+
/** Associated email address if available */
|
|
14
|
+
email?: string | undefined;
|
|
15
|
+
/** Username of the account if available */
|
|
16
|
+
username?: string | undefined;
|
|
17
|
+
/** Whether the email address has been verified by the identity provider */
|
|
18
|
+
emailVerified?: boolean | undefined;
|
|
19
|
+
/** Unix timestamp in milliseconds when user was created */
|
|
20
|
+
createdAt?: number | undefined;
|
|
21
|
+
/** Unix timestamp in milliseconds when user was last updated */
|
|
22
|
+
updatedAt?: number | undefined;
|
|
23
|
+
/** Custom user metadata or profile attributes */
|
|
24
|
+
metadata?: Record<string, unknown> | undefined;
|
|
25
|
+
/** Identity provider name (e.g. "self-managed", "cognito", "auth0", "okta") */
|
|
26
|
+
provider?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Standardized token response from an identity provider.
|
|
30
|
+
*
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
export interface IdentityTokens {
|
|
34
|
+
/** OAuth / IdP Access Token (JWT or opaque token) */
|
|
35
|
+
accessToken?: string | undefined;
|
|
36
|
+
/** OpenID Connect ID Token containing user claims */
|
|
37
|
+
idToken?: string | undefined;
|
|
38
|
+
/** Refresh token for renewing expired credentials */
|
|
39
|
+
refreshToken?: string | undefined;
|
|
40
|
+
/** Token type (usually "Bearer") */
|
|
41
|
+
tokenType?: string | undefined;
|
|
42
|
+
/** Token expiration time in seconds */
|
|
43
|
+
expiresIn?: number | undefined;
|
|
44
|
+
/** Raw response object returned directly by the provider */
|
|
45
|
+
raw?: Record<string, unknown> | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Result of user authentication through an identity provider.
|
|
49
|
+
*
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
export interface IdentityAuthResult {
|
|
53
|
+
/** Authenticated user profile */
|
|
54
|
+
user: UserIdentity;
|
|
55
|
+
/** Optional tokens issued by the identity provider */
|
|
56
|
+
tokens?: IdentityTokens | undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parameters for requesting a password reset (forgot password).
|
|
60
|
+
*
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
export interface ForgotPasswordParams {
|
|
64
|
+
/** Username or email of the account requesting a password reset */
|
|
65
|
+
identifier: string;
|
|
66
|
+
/** Optional custom client metadata or redirect URL */
|
|
67
|
+
metadata?: Record<string, unknown> | undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result of a password reset request.
|
|
71
|
+
*
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
export interface ForgotPasswordResult {
|
|
75
|
+
/** Whether the password reset request was accepted */
|
|
76
|
+
success: boolean;
|
|
77
|
+
/** Delivery destination description (e.g. masked email: a***@example.com or phone) */
|
|
78
|
+
deliveryMedium?: string | undefined;
|
|
79
|
+
/** Optional message or status code from provider */
|
|
80
|
+
message?: string | undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Parameters for confirming a password reset with a confirmation code or token.
|
|
84
|
+
*
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
export interface ConfirmPasswordResetParams {
|
|
88
|
+
/** Username or email of the account */
|
|
89
|
+
identifier: string;
|
|
90
|
+
/** Verification code (e.g. 6-digit OTP from email/SMS) or reset token */
|
|
91
|
+
confirmationCode: string;
|
|
92
|
+
/** New plaintext password */
|
|
93
|
+
newPassword: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parameters for confirming user registration with a verification code.
|
|
97
|
+
*
|
|
98
|
+
* @public
|
|
99
|
+
*/
|
|
100
|
+
export interface ConfirmSignUpParams {
|
|
101
|
+
/** Username or email of the account to confirm */
|
|
102
|
+
identifier: string;
|
|
103
|
+
/** Verification code (e.g. 6-digit OTP from email/SMS) */
|
|
104
|
+
confirmationCode: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parameters for resending a sign up confirmation code.
|
|
108
|
+
*
|
|
109
|
+
* @public
|
|
110
|
+
*/
|
|
111
|
+
export interface ResendConfirmationCodeParams {
|
|
112
|
+
/** Username or email of the account */
|
|
113
|
+
identifier: string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Result of resending a sign up confirmation code.
|
|
117
|
+
*
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
export interface ResendConfirmationCodeResult {
|
|
121
|
+
/** True if code was dispatched */
|
|
122
|
+
success: boolean;
|
|
123
|
+
/** Delivery medium (e.g. 'EMAIL' or 'SMS') */
|
|
124
|
+
deliveryMedium?: string | undefined;
|
|
125
|
+
/** Obscured destination */
|
|
126
|
+
destination?: string | undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Unified interface for Identity Providers in Lixa.
|
|
130
|
+
*
|
|
131
|
+
* @remarks
|
|
132
|
+
* Implement this interface to create custom identity providers (e.g. Supabase Auth,
|
|
133
|
+
* Firebase Auth, Keycloak, or proprietary enterprise directories).
|
|
134
|
+
*
|
|
135
|
+
* Built-in extensions for AWS Cognito, Auth0, and Okta are available in `@vunexa/lixa-extensions`.
|
|
136
|
+
*
|
|
137
|
+
* @public
|
|
138
|
+
*/
|
|
139
|
+
export interface IIdentityProvider {
|
|
140
|
+
/**
|
|
141
|
+
* Unique name of the identity provider.
|
|
142
|
+
* Examples: 'self-managed', 'cognito', 'auth0', 'okta'
|
|
143
|
+
*/
|
|
144
|
+
readonly name: string;
|
|
145
|
+
/**
|
|
146
|
+
* Registers a new user with the identity provider.
|
|
147
|
+
*
|
|
148
|
+
* @param params - User registration details (identifier, password, email, username, metadata)
|
|
149
|
+
* @returns Created user identity
|
|
150
|
+
*/
|
|
151
|
+
signUp(params: SignUpParams): Promise<UserIdentity>;
|
|
152
|
+
/**
|
|
153
|
+
* Authenticates a user with credentials.
|
|
154
|
+
*
|
|
155
|
+
* @param params - Sign in credentials (identifier, password)
|
|
156
|
+
* @returns Authenticated user identity and optional provider tokens
|
|
157
|
+
*/
|
|
158
|
+
signIn(params: SignInParams): Promise<IdentityAuthResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Verifies credentials without necessarily creating a full session.
|
|
161
|
+
*
|
|
162
|
+
* @param params - Verification parameters
|
|
163
|
+
* @returns User identity if credentials are valid, null otherwise
|
|
164
|
+
*/
|
|
165
|
+
verifyCredentials?(params: VerifyCredentialsParams): Promise<UserIdentity | null>;
|
|
166
|
+
/**
|
|
167
|
+
* Changes a user's password.
|
|
168
|
+
*
|
|
169
|
+
* @param params - Old password, new password, and user identifier
|
|
170
|
+
* @returns True if password was successfully updated
|
|
171
|
+
*/
|
|
172
|
+
changePassword?(params: ChangePasswordParams): Promise<boolean>;
|
|
173
|
+
/**
|
|
174
|
+
* Requests a password reset (forgot password flow).
|
|
175
|
+
*
|
|
176
|
+
* @param params - Forgot password parameters
|
|
177
|
+
*/
|
|
178
|
+
forgotPassword?(params: ForgotPasswordParams): Promise<ForgotPasswordResult>;
|
|
179
|
+
/**
|
|
180
|
+
* Confirms password reset with verification code and new password.
|
|
181
|
+
*
|
|
182
|
+
* @param params - Confirm password reset parameters
|
|
183
|
+
*/
|
|
184
|
+
confirmPasswordReset?(params: ConfirmPasswordResetParams): Promise<boolean>;
|
|
185
|
+
/**
|
|
186
|
+
* Confirms user registration using a verification code.
|
|
187
|
+
*
|
|
188
|
+
* @param params - Confirm sign up parameters
|
|
189
|
+
*/
|
|
190
|
+
confirmSignUp?(params: ConfirmSignUpParams): Promise<boolean>;
|
|
191
|
+
/**
|
|
192
|
+
* Resends the sign up confirmation code.
|
|
193
|
+
*
|
|
194
|
+
* @param params - Resend confirmation code parameters
|
|
195
|
+
*/
|
|
196
|
+
resendConfirmationCode?(params: ResendConfirmationCodeParams): Promise<ResendConfirmationCodeResult>;
|
|
197
|
+
/**
|
|
198
|
+
* Retrieves a user by their unique ID.
|
|
199
|
+
*
|
|
200
|
+
* @param id - Unique user ID
|
|
201
|
+
*/
|
|
202
|
+
getUserById?(id: string): Promise<UserIdentity | null>;
|
|
203
|
+
/**
|
|
204
|
+
* Retrieves a user by their identifier (email or username).
|
|
205
|
+
*
|
|
206
|
+
* @param identifier - Username or email string
|
|
207
|
+
*/
|
|
208
|
+
getUserByIdentifier?(identifier: string): Promise<UserIdentity | null>;
|
|
209
|
+
/**
|
|
210
|
+
* Deletes a user account.
|
|
211
|
+
*
|
|
212
|
+
* @param id - Unique user ID
|
|
213
|
+
*/
|
|
214
|
+
deleteUser?(id: string): Promise<void>;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Configuration options for Identity Providers in LixaConfig.
|
|
218
|
+
*
|
|
219
|
+
* @public
|
|
220
|
+
*/
|
|
221
|
+
export type IdentityConfig = IIdentityProvider | ({
|
|
222
|
+
provider?: "self-managed";
|
|
223
|
+
} & CredentialsConfig);
|
|
224
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":"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"}
|