@vunexa/lixa 0.1.6-alpha.7 → 0.1.6-alpha.9

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 CHANGED
@@ -17,8 +17,7 @@ A flexible, provider-agnostic OAuth 2.0 and OpenID Connect (OIDC) client library
17
17
  - **Multi-SSO Account Linking**: Seamlessly merge accounts sharing the same verified email address under a single unified user session.
18
18
  - **Post-Login Resource Connection API**: Connect third-party API providers (GitHub Repositories, Google Drive, Slack) post-authentication and manage resource tokens on the user session.
19
19
  - **Multi-provider OAuth/OIDC support** with unified API.
20
- - **Built-in providers** for Google, GitHub, and more via `@vunexa/lixa-providers`.
21
- - **Custom provider support** with extensible provider interface.
20
+ - **Pre-built Database Storage Adapters**: Official Prisma and Drizzle ORM adapters via `@vunexa/lixa-adapters` with support for PostgreSQL, MySQL, and SQLite.
22
21
  - **Unified session management** via `SessionHandler` (generation + storage).
23
22
  - **Unified state management** via `StateHandler` (PKCE + CSRF protection).
24
23
  - **Automatic PKCE** (Proof Key for Code Exchange) for all OAuth flows.
@@ -17,8 +17,7 @@ A flexible, provider-agnostic OAuth 2.0 and OpenID Connect (OIDC) client library
17
17
  - **Multi-SSO Account Linking**: Seamlessly merge accounts sharing the same verified email address under a single unified user session.
18
18
  - **Post-Login Resource Connection API**: Connect third-party API providers (GitHub Repositories, Google Drive, Slack) post-authentication and manage resource tokens on the user session.
19
19
  - **Multi-provider OAuth/OIDC support** with unified API.
20
- - **Built-in providers** for Google, GitHub, and more via `@vunexa/lixa-providers`.
21
- - **Custom provider support** with extensible provider interface.
20
+ - **Pre-built Database Storage Adapters**: Official Prisma and Drizzle ORM adapters via `@vunexa/lixa-adapters` with support for PostgreSQL, MySQL, and SQLite.
22
21
  - **Unified session management** via `SessionHandler` (generation + storage).
23
22
  - **Unified state management** via `StateHandler` (PKCE + CSRF protection).
24
23
  - **Automatic PKCE** (Proof Key for Code Exchange) for all OAuth flows.
@@ -5,7 +5,8 @@ declare class LocalSessionHandler implements SessionHandler {
5
5
  private emailToSessionMap;
6
6
  sessionStorage: SessionStorage;
7
7
  constructor(defaultTtlSeconds?: number);
8
- GenerateSession<T extends Session>(tokenData: OAuthTokenResponse, providerMetadata: ProviderMetadata): Promise<T>;
8
+ generateSession<T extends Session>(tokenData: OAuthTokenResponse, _providerMetadata?: ProviderMetadata): Promise<T>;
9
+ GenerateSession<T extends Session>(tokenData: OAuthTokenResponse, providerMetadata?: ProviderMetadata): Promise<T>;
9
10
  }
10
11
  export { LocalSessionHandler };
11
12
  //# sourceMappingURL=session-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-cache.d.ts","sourceRoot":"","sources":["../../src/dao/session-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvF,cAAM,mBAAoB,YAAW,cAAc;IACjD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,iBAAiB,CAAkC;IACpD,cAAc,EAAE,cAAc,CAAC;gBAE1B,iBAAiB,GAAE,MAAY;IAuCrC,eAAe,CAAC,CAAC,SAAS,OAAO,EACrC,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,CAAC,CAAC;CAad;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"session-cache.d.ts","sourceRoot":"","sources":["../../src/dao/session-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvF,cAAM,mBAAoB,YAAW,cAAc;IACjD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,iBAAiB,CAAkC;IACpD,cAAc,EAAE,cAAc,CAAC;gBAE1B,iBAAiB,GAAE,MAAY;IAwDrC,eAAe,CAAC,CAAC,SAAS,OAAO,EACrC,SAAS,EAAE,kBAAkB,EAC7B,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,OAAO,CAAC,CAAC,CAAC;IAcP,eAAe,CAAC,CAAC,SAAS,OAAO,EACrC,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,CAAC,CAAC;CAGd;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -7,6 +7,10 @@ declare class LocalStateHandler implements StateHandler {
7
7
  state: string;
8
8
  data: StateData;
9
9
  }>;
10
+ GenerateState(provider: string): Promise<{
11
+ state: string;
12
+ data: StateData;
13
+ }>;
10
14
  }
11
15
  export { LocalStateHandler };
12
16
  //# sourceMappingURL=state-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-cache.d.ts","sourceRoot":"","sources":["../../src/dao/state-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhE,cAAM,iBAAkB,YAAW,YAAY;IAC7C,OAAO,CAAC,KAAK,CAAY;IAClB,YAAY,EAAE,YAAY,CAAC;gBAEtB,iBAAiB,GAAE,MAAY;IAoBrC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAanF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"state-cache.d.ts","sourceRoot":"","sources":["../../src/dao/state-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhE,cAAM,iBAAkB,YAAW,YAAY;IAC7C,OAAO,CAAC,KAAK,CAAY;IAClB,YAAY,EAAE,YAAY,CAAC;gBAEtB,iBAAiB,GAAE,MAAY;IAoBrC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAe5E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAGnF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -164,10 +164,20 @@ export interface StateHandler {
164
164
  * }
165
165
  * ```
166
166
  */
167
+ /**
168
+ * Generates OAuth state parameter and associated data (camelCase).
169
+ */
167
170
  generateState?(provider: string): Promise<{
168
171
  state: string;
169
172
  data: StateData;
170
173
  }>;
174
+ /**
175
+ * Generates OAuth state parameter and associated data (PascalCase alias for backward compatibility).
176
+ */
177
+ GenerateState?(provider: string): Promise<{
178
+ state: string;
179
+ data: StateData;
180
+ }>;
171
181
  /**
172
182
  * State storage operations.
173
183
  *
@@ -193,7 +203,7 @@ export interface SessionStorage {
193
203
  * Saves a session with expiration.
194
204
  *
195
205
  * @param sessionId - Unique session identifier
196
- * @param session - Session data from GenerateSession()
206
+ * @param session - Session data from generateSession()
197
207
  * @param expiresInSeconds - TTL in seconds (typically 86400 for 24 hours)
198
208
  */
199
209
  saveSession<T extends Session>(sessionId: string, session: T, expiresInSeconds: number): Promise<void>;
@@ -273,13 +283,13 @@ export interface ResourceHandler {
273
283
  * @remarks
274
284
  * The SessionHandler manages session generation and storage after successful OAuth authentication.
275
285
  *
276
- * - GenerateSession: Optional. Customizes how OAuth tokens are converted into session data.
286
+ * - generateSession: Optional. Customizes how OAuth tokens are converted into session data.
277
287
  * If not provided, uses default implementation (access token as session token).
278
288
  *
279
- * - storage: Optional. Provides custom session storage (save/get/delete operations).
289
+ * - sessionStorage: Optional. Provides custom session storage (save/get/delete operations).
280
290
  * If not provided, uses in-memory cache (not suitable for production).
281
291
  *
282
- * For production, implement both GenerateSession (for user creation/lookup) and storage
292
+ * For production, implement both generateSession (for user creation/lookup) and sessionStorage
283
293
  * (for persistent session storage with Redis, database, etc.).
284
294
  *
285
295
  * @example
@@ -288,7 +298,7 @@ export interface ResourceHandler {
288
298
  * import { SessionHandler, Session, OAuthTokenResponse, ProviderMetadata, extractUserInfo } from '@vunexa/lixa';
289
299
  *
290
300
  * const sessionHandler: SessionHandler = {
291
- * GenerateSession: async (tokenData, providerMetadata) => {
301
+ * generateSession: async (tokenData, providerMetadata) => {
292
302
  * // Extract user info and create/retrieve user
293
303
  * const { userInfo } = await extractUserInfo(tokenData, providerMetadata);
294
304
  * const user = await db.users.upsert({
@@ -307,7 +317,7 @@ export interface ResourceHandler {
307
317
  * };
308
318
  * },
309
319
  *
310
- * storage: {
320
+ * sessionStorage: {
311
321
  * saveSession: async (sessionId, session, expiresInSeconds) => {
312
322
  * const expiresAt = new Date(Date.now() + expiresInSeconds * 1000);
313
323
  * await db.sessions.create({
@@ -333,78 +343,21 @@ export interface ResourceHandler {
333
343
  * };
334
344
  * ```
335
345
  *
336
- * @example
337
- * Minimal implementation (uses defaults):
338
- * ```typescript
339
- * const sessionHandler: SessionHandler = {
340
- * storage: {
341
- * saveSession: async (sessionId, session, expiresInSeconds) => {
342
- * await redis.setex(sessionId, expiresInSeconds, JSON.stringify(session));
343
- * },
344
- * getSession: async (sessionId) => {
345
- * const data = await redis.get(sessionId);
346
- * return data ? JSON.parse(data) : null;
347
- * },
348
- * deleteSession: async (sessionId) => {
349
- * await redis.del(sessionId);
350
- * }
351
- * }
352
- * };
353
- * ```
354
- *
355
346
  * @public
356
347
  */
357
348
  export interface SessionHandler {
358
349
  /**
359
- * Generates session data from OAuth token data.
350
+ * Generates session data from OAuth token data (camelCase).
360
351
  *
361
352
  * @param tokenData - The token data received from the OAuth provider's token endpoint
362
353
  * @param providerMetadata - Provider metadata including name and endpoints
363
354
  * @returns A Promise that resolves to session data
364
- *
365
- * @remarks
366
- * This method is responsible for creating session data from OAuth tokens.
367
- * It is called after successfully exchanging the authorization code for tokens.
368
- *
369
- * Token Data:
370
- * - access_token: OAuth access token
371
- * - refresh_token: OAuth refresh token (optional)
372
- * - expires_in: Token expiration time in seconds
373
- * - token_type: Token type (usually "Bearer")
374
- * - id_token: OpenID Connect ID token (for OIDC providers)
375
- * - scope: Granted scopes
376
- *
377
- * Provider Metadata:
378
- * - name: The provider name (e.g., 'google', 'github')
379
- * - endpoints: Provider endpoints (authorization, token, userInfo)
380
- *
381
- * Your implementation should:
382
- * 1. Extract user info (using extractUserInfo or decode ID token)
383
- * 2. Create or lookup users in your database
384
- * 3. Build and return session data with any custom fields
385
- *
386
- * Note: This method should NOT store the session. Storage is handled by the storage object.
387
- *
388
- * If not provided, defaults to using the access token as the session token.
389
- *
390
- * @example
391
- * ```typescript
392
- * GenerateSession: async (tokenData, providerMetadata) => {
393
- * const { userInfo } = await extractUserInfo(tokenData, providerMetadata);
394
- * const user = await db.users.upsert({ email: userInfo.email });
395
- *
396
- * return {
397
- * token: tokenData.access_token,
398
- * raw: {
399
- * ...tokenData,
400
- * userId: user.id,
401
- * provider: providerMetadata.name
402
- * }
403
- * };
404
- * }
405
- * ```
406
355
  */
407
356
  generateSession?<T extends Session>(tokenData: import('../models/session').OAuthTokenResponse, providerMetadata: import('../models/session').ProviderMetadata): Promise<T>;
357
+ /**
358
+ * Generates session data from OAuth token data (PascalCase alias for backward compatibility).
359
+ */
360
+ GenerateSession?<T extends Session>(tokenData: import('../models/session').OAuthTokenResponse, providerMetadata: import('../models/session').ProviderMetadata): Promise<T>;
408
361
  /**
409
362
  * Session storage operations.
410
363
  *
@@ -415,12 +368,5 @@ export interface SessionHandler {
415
368
  * If not provided, uses in-memory cache (not suitable for production).
416
369
  */
417
370
  sessionStorage?: SessionStorage;
418
- /**
419
- * Optional method to generate session data from OAuth tokens.
420
- *
421
- * @remarks
422
- * If not provided, uses default implementation from LocalSessionHandler.
423
- */
424
- generateSession?<T extends Session>(tokenData: import('../models/session').OAuthTokenResponse, providerMetadata: import('../models/session').ProviderMetadata): Promise<T>;
425
371
  }
426
372
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dao/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dao/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAEnD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH;;OAEG;IACH,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAE9E;;OAEG;IACH,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAE9E;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvG;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpE;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACzG;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,mBAAmB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvH;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAE7G;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEzG;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,CAAC,SAAS,OAAO,EAChC,SAAS,EAAE,OAAO,mBAAmB,EAAE,kBAAkB,EACzD,gBAAgB,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,GAC7D,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;OAEG;IACH,eAAe,CAAC,CAAC,CAAC,SAAS,OAAO,EAChC,SAAS,EAAE,OAAO,mBAAmB,EAAE,kBAAkB,EACzD,gBAAgB,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,GAC7D,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Base error class for all Lixa authentication and authorization errors.
3
+ *
4
+ * @public
5
+ */
6
+ export declare class LixaError extends Error {
7
+ /**
8
+ * Standard error code string.
9
+ */
10
+ readonly code: string;
11
+ /**
12
+ * Additional error context data.
13
+ */
14
+ readonly details: Record<string, unknown> | undefined;
15
+ constructor(message: string, code?: string, details?: Record<string, unknown>);
16
+ }
17
+ /**
18
+ * Thrown when an OAuth state parameter is invalid, missing, or has expired.
19
+ *
20
+ * @public
21
+ */
22
+ export declare class InvalidStateError extends LixaError {
23
+ constructor(message?: string, details?: Record<string, unknown>);
24
+ }
25
+ /**
26
+ * Thrown when attempting to use a provider that is not configured in the Lixa instance.
27
+ *
28
+ * @public
29
+ */
30
+ export declare class ProviderNotConfiguredError extends LixaError {
31
+ constructor(provider: string, details?: Record<string, unknown>);
32
+ }
33
+ /**
34
+ * Thrown when a provider configuration is invalid or missing required credentials.
35
+ *
36
+ * @public
37
+ */
38
+ export declare class InvalidProviderConfigError extends LixaError {
39
+ constructor(message: string, details?: Record<string, unknown>);
40
+ }
41
+ /**
42
+ * Thrown when OAuth callback parameters (e.g. authorization code or state) are missing or malformed.
43
+ *
44
+ * @public
45
+ */
46
+ export declare class InvalidOAuthCallbackError extends LixaError {
47
+ constructor(message: string, details?: Record<string, unknown>);
48
+ }
49
+ /**
50
+ * Thrown when exchanging an authorization code for OAuth tokens fails at the provider endpoint.
51
+ *
52
+ * @public
53
+ */
54
+ export declare class TokenExchangeError extends LixaError {
55
+ readonly status: number | undefined;
56
+ constructor(message: string, status?: number, details?: Record<string, unknown>);
57
+ }
58
+ /**
59
+ * Thrown when a user session is not found or has expired.
60
+ *
61
+ * @public
62
+ */
63
+ export declare class SessionNotFoundError extends LixaError {
64
+ constructor(message?: string, details?: Record<string, unknown>);
65
+ }
66
+ /**
67
+ * Thrown when account linking fails, e.g. when unverified email linking is rejected.
68
+ *
69
+ * @public
70
+ */
71
+ export declare class EmailNotVerifiedError extends LixaError {
72
+ constructor(email?: string, details?: Record<string, unknown>);
73
+ }
74
+ /**
75
+ * Thrown when unlinking an account violates security constraints (e.g. unlinking the only login provider).
76
+ *
77
+ * @public
78
+ */
79
+ export declare class AccountUnlinkError extends LixaError {
80
+ constructor(message: string, details?: Record<string, unknown>);
81
+ }
82
+ /**
83
+ * Thrown when a refresh token is missing or token refresh fails for a connected resource.
84
+ *
85
+ * @public
86
+ */
87
+ export declare class RefreshTokenError extends LixaError {
88
+ constructor(message: string, details?: Record<string, unknown>);
89
+ }
90
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEjD,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAqB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAS5F;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,OAAO,GAAE,MAAmC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG5F;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;gBAC3C,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAShE;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;gBAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,SAAS;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIhF;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;gBACrC,OAAO,GAAE,MAAkD,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG3G;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,SAAS;gBACtC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO9D;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D"}