@explorins/pers-sdk 1.2.6 → 1.3.2
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 +416 -0
- package/dist/business/api/business-api.d.ts.map +1 -1
- package/dist/business.cjs +6 -8
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +6 -8
- package/dist/business.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +19 -65
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign.cjs +51 -105
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +49 -103
- package/dist/campaign.js.map +1 -1
- package/dist/chunks/base-token-service-BA81_Ouq.js +532 -0
- package/dist/chunks/base-token-service-BA81_Ouq.js.map +1 -0
- package/dist/chunks/base-token-service-BQ6uFoki.cjs +537 -0
- package/dist/chunks/base-token-service-BQ6uFoki.cjs.map +1 -0
- package/dist/chunks/environment-C2AkkLPd.js +46 -0
- package/dist/chunks/environment-C2AkkLPd.js.map +1 -0
- package/dist/chunks/environment-CRROnwAY.cjs +50 -0
- package/dist/chunks/environment-CRROnwAY.cjs.map +1 -0
- package/dist/chunks/jwt.function-BYiyl-z_.cjs +25 -0
- package/dist/chunks/jwt.function-BYiyl-z_.cjs.map +1 -0
- package/dist/chunks/jwt.function-d6jPtBqI.js +23 -0
- package/dist/chunks/jwt.function-d6jPtBqI.js.map +1 -0
- package/dist/chunks/pers-sdk-Ct_uUMJl.cjs +1424 -0
- package/dist/chunks/pers-sdk-Ct_uUMJl.cjs.map +1 -0
- package/dist/chunks/pers-sdk-tKHGQr5x.js +1417 -0
- package/dist/chunks/pers-sdk-tKHGQr5x.js.map +1 -0
- package/dist/core/auth/api/auth-api.d.ts +5 -2
- package/dist/core/auth/api/auth-api.d.ts.map +1 -1
- package/dist/core/auth/auth-constants.d.ts +33 -0
- package/dist/core/auth/auth-constants.d.ts.map +1 -0
- package/dist/core/auth/auth-errors.d.ts +8 -0
- package/dist/core/auth/auth-errors.d.ts.map +1 -0
- package/dist/core/auth/auth-provider.interface.d.ts +49 -3
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
- package/dist/core/auth/create-auth-provider.d.ts.map +1 -1
- package/dist/core/auth/default-auth-provider.d.ts +71 -0
- package/dist/core/auth/default-auth-provider.d.ts.map +1 -0
- package/dist/core/auth/index.d.ts +1 -22
- package/dist/core/auth/index.d.ts.map +1 -1
- package/dist/core/auth/services/auth-service.d.ts +10 -1
- package/dist/core/auth/services/auth-service.d.ts.map +1 -1
- package/dist/core/auth/token-refresh.d.ts +91 -0
- package/dist/core/auth/token-refresh.d.ts.map +1 -0
- package/dist/core/auth/token-storage.d.ts +74 -0
- package/dist/core/auth/token-storage.d.ts.map +1 -0
- package/dist/core/environment.d.ts +26 -0
- package/dist/core/environment.d.ts.map +1 -0
- package/dist/core/errors/index.d.ts +80 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts +184 -19
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/pers-config.d.ts +36 -1
- package/dist/core/pers-config.d.ts.map +1 -1
- package/dist/core/utils/jwt.function.d.ts.map +1 -1
- package/dist/core.cjs +12 -814
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +3 -803
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +82 -4912
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -4857
- package/dist/index.js.map +1 -1
- package/dist/package.json +147 -129
- package/dist/pers-sdk.d.ts +49 -7
- package/dist/pers-sdk.d.ts.map +1 -1
- package/dist/redemption/api/redemption-api.d.ts +12 -13
- package/dist/redemption/api/redemption-api.d.ts.map +1 -1
- package/dist/redemption.cjs +24 -24
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +24 -24
- package/dist/redemption.js.map +1 -1
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +1 -0
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
- package/dist/tenant/api/tenant-api.d.ts +28 -10
- package/dist/tenant/api/tenant-api.d.ts.map +1 -1
- package/dist/tenant/index.d.ts +4 -4
- package/dist/tenant.cjs +40 -11
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +40 -11
- package/dist/tenant.js.map +1 -1
- package/dist/token.cjs +7 -534
- package/dist/token.cjs.map +1 -1
- package/dist/token.js +1 -532
- package/dist/token.js.map +1 -1
- package/dist/web3/index.d.ts.map +1 -1
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts +1 -1
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
- package/dist/web3-chain.cjs +12 -152
- package/dist/web3-chain.cjs.map +1 -1
- package/dist/web3-chain.js +8 -148
- package/dist/web3-chain.js.map +1 -1
- package/dist/web3.cjs +12 -538
- package/dist/web3.cjs.map +1 -1
- package/dist/web3.js +10 -536
- package/dist/web3.js.map +1 -1
- package/package.json +147 -129
- package/dist/core/auth/simple-sdk-auth-provider.d.ts +0 -27
- package/dist/core/auth/simple-sdk-auth-provider.d.ts.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PERS SDK Error Handling - Optimized for Performance
|
|
3
|
+
*
|
|
4
|
+
* Consolidated API and auth errors for fast SDK performance
|
|
5
|
+
* Uses @explorins/pers-shared when available, fallback to SDK errors
|
|
6
|
+
*/
|
|
7
|
+
import type { BusinessLogicError } from '@explorins/pers-shared';
|
|
8
|
+
export declare class ErrorUtils {
|
|
9
|
+
/**
|
|
10
|
+
* Fast token expiration detection
|
|
11
|
+
*/
|
|
12
|
+
static isTokenExpired(error: unknown): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Fast error message extraction
|
|
15
|
+
*/
|
|
16
|
+
static getMessage(error: unknown): string;
|
|
17
|
+
/**
|
|
18
|
+
* Fast status code extraction
|
|
19
|
+
*/
|
|
20
|
+
static getStatus(error: unknown): number | null;
|
|
21
|
+
/**
|
|
22
|
+
* Fast retryability check
|
|
23
|
+
*/
|
|
24
|
+
static isRetryable(error: unknown): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Check if error is from PERS API (uses @explorins/pers-shared format)
|
|
27
|
+
*/
|
|
28
|
+
static isPersApiError(error: unknown): error is BusinessLogicError;
|
|
29
|
+
}
|
|
30
|
+
export declare class TokenRefreshNeeded extends Error {
|
|
31
|
+
refreshToken: string;
|
|
32
|
+
readonly errorCode = "TOKEN_REFRESH_NEEDED";
|
|
33
|
+
readonly domain = "auth";
|
|
34
|
+
readonly category = "SECURITY";
|
|
35
|
+
readonly retryable = true;
|
|
36
|
+
constructor(refreshToken: string);
|
|
37
|
+
}
|
|
38
|
+
export declare class ProviderTokenRefreshNeeded extends Error {
|
|
39
|
+
providerToken: string;
|
|
40
|
+
readonly errorCode = "PROVIDER_TOKEN_REFRESH_NEEDED";
|
|
41
|
+
readonly domain = "auth";
|
|
42
|
+
readonly category = "SECURITY";
|
|
43
|
+
readonly retryable = true;
|
|
44
|
+
constructor(providerToken: string);
|
|
45
|
+
}
|
|
46
|
+
export declare class LogoutRequired extends Error {
|
|
47
|
+
readonly errorCode = "LOGOUT_REQUIRED";
|
|
48
|
+
readonly domain = "auth";
|
|
49
|
+
readonly category = "SECURITY";
|
|
50
|
+
readonly retryable = false;
|
|
51
|
+
constructor(message: string);
|
|
52
|
+
}
|
|
53
|
+
export declare class PersApiError extends Error {
|
|
54
|
+
endpoint: string;
|
|
55
|
+
method: string;
|
|
56
|
+
status?: number | undefined;
|
|
57
|
+
readonly errorCode = "PERS_API_ERROR";
|
|
58
|
+
readonly domain = "api";
|
|
59
|
+
readonly category = "TECHNICAL";
|
|
60
|
+
readonly retryable: boolean;
|
|
61
|
+
constructor(message: string, endpoint: string, method: string, status?: number | undefined, retryable?: boolean);
|
|
62
|
+
}
|
|
63
|
+
export declare class NetworkError extends Error {
|
|
64
|
+
readonly errorCode = "NETWORK_ERROR";
|
|
65
|
+
readonly domain = "api";
|
|
66
|
+
readonly category = "INFRASTRUCTURE";
|
|
67
|
+
readonly retryable = true;
|
|
68
|
+
constructor(message: string);
|
|
69
|
+
}
|
|
70
|
+
export declare const PlatformErrorUtils: {
|
|
71
|
+
isTokenExpiredError: (error: unknown) => boolean;
|
|
72
|
+
extractErrorMessage: (error: unknown) => string;
|
|
73
|
+
};
|
|
74
|
+
export declare const ApiErrorDetector: {
|
|
75
|
+
getErrorMessage: (error: unknown) => string;
|
|
76
|
+
getStatusCode: (error: unknown) => number | null;
|
|
77
|
+
isRetryable: (error: unknown) => boolean;
|
|
78
|
+
isAuthError: (error: unknown) => boolean;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,qBAAa,UAAU;IAErB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAW9C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAOzC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAM/C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAY3C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAInE;AAGD,qBAAa,kBAAmB,SAAQ,KAAK;IAMxB,YAAY,EAAE,MAAM;IALvC,QAAQ,CAAC,SAAS,0BAA0B;IAC5C,QAAQ,CAAC,MAAM,UAAU;IACzB,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,SAAS,QAAQ;gBAEP,YAAY,EAAE,MAAM;CAIxC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IAMhC,aAAa,EAAE,MAAM;IALxC,QAAQ,CAAC,SAAS,mCAAmC;IACrD,QAAQ,CAAC,MAAM,UAAU;IACzB,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,SAAS,QAAQ;gBAEP,aAAa,EAAE,MAAM;CAIzC;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,SAAS,qBAAqB;IACvC,QAAQ,CAAC,MAAM,UAAU;IACzB,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,SAAS,SAAS;gBAEf,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,KAAK;IAQ5B,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM;IACd,MAAM,CAAC,EAAE,MAAM;IATxB,QAAQ,CAAC,SAAS,oBAAoB;IACtC,QAAQ,CAAC,MAAM,SAAS;IACxB,QAAQ,CAAC,QAAQ,eAAe;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,YAAA,EACtB,SAAS,GAAE,OAAe;CAM7B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,SAAS,mBAAmB;IACrC,QAAQ,CAAC,MAAM,SAAS;IACxB,QAAQ,CAAC,QAAQ,oBAAoB;IACrC,QAAQ,CAAC,SAAS,QAAQ;gBAEd,OAAO,EAAE,MAAM;CAI5B;AAGD,eAAO,MAAM,kBAAkB;iCACA,OAAO;iCACP,OAAO;CACrC,CAAC;AAEF,eAAO,MAAM,gBAAgB;6BACF,OAAO;2BACT,OAAO;yBACT,OAAO;yBACP,OAAO;CAK7B,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
export * from './pers-api-client';
|
|
7
7
|
export * from './pers-config';
|
|
8
8
|
export type { PersEnvironment, PersApiVersion } from './pers-config';
|
|
9
|
-
export
|
|
9
|
+
export type { PersAuthProvider } from './auth/auth-provider.interface';
|
|
10
|
+
export * from './environment';
|
|
10
11
|
export * from './abstractions/http-client';
|
|
11
12
|
export { PersSDK, createPersSDK } from '../pers-sdk';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,cAAc,eAAe,CAAC;AAM9B,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PERS API Client - Core platform-agnostic client for PERS backend
|
|
3
|
+
*
|
|
4
|
+
* Provides authenticated HTTP client with automatic token management,
|
|
5
|
+
* proactive refresh, and comprehensive error handling.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Automatic token refresh before expiry
|
|
9
|
+
* - Background refresh for optimal performance
|
|
10
|
+
* - Provider token fallback for seamless authentication
|
|
11
|
+
* - Configurable retry and timeout settings
|
|
12
|
+
* - Platform-agnostic design
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const client = new PersApiClient(httpClient, {
|
|
17
|
+
* environment: 'production',
|
|
18
|
+
* apiProjectKey: 'your-project-key',
|
|
19
|
+
* authProvider: createAuthProvider({
|
|
20
|
+
* tokenProvider: () => getFirebaseToken()
|
|
21
|
+
* })
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Make authenticated requests
|
|
25
|
+
* const data = await client.get('/users/me');
|
|
26
|
+
* ```
|
|
3
27
|
*/
|
|
4
28
|
import { HttpClient } from './abstractions/http-client';
|
|
5
29
|
import { PersConfig, mergeWithDefaults } from './pers-config';
|
|
@@ -11,7 +35,24 @@ export declare class PersApiClient {
|
|
|
11
35
|
private readonly mergedConfig;
|
|
12
36
|
private readonly authApi;
|
|
13
37
|
private readonly authService;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new PERS API Client instance
|
|
40
|
+
*
|
|
41
|
+
* @param httpClient - Platform-specific HTTP client implementation
|
|
42
|
+
* @param config - Configuration options for the API client
|
|
43
|
+
*/
|
|
14
44
|
constructor(httpClient: HttpClient, config: PersConfig);
|
|
45
|
+
/**
|
|
46
|
+
* Ensures valid authentication token before making requests
|
|
47
|
+
*
|
|
48
|
+
* Implements intelligent refresh strategy:
|
|
49
|
+
* - Tokens with sufficient time remaining: Background refresh (non-blocking)
|
|
50
|
+
* - Tokens expiring soon or expired: Immediate refresh (blocking)
|
|
51
|
+
*
|
|
52
|
+
* @private
|
|
53
|
+
* @returns Promise that resolves when token validation is complete
|
|
54
|
+
*/
|
|
55
|
+
private ensureValidToken;
|
|
15
56
|
/**
|
|
16
57
|
* Get request headers including auth token and project key
|
|
17
58
|
*/
|
|
@@ -21,13 +62,42 @@ export declare class PersApiClient {
|
|
|
21
62
|
*/
|
|
22
63
|
private request;
|
|
23
64
|
/**
|
|
24
|
-
*
|
|
65
|
+
* Delegate token refresh to auth provider and handle the results
|
|
66
|
+
*/
|
|
67
|
+
private handleTokenRefreshDelegation;
|
|
68
|
+
/**
|
|
69
|
+
* Performs an authenticated GET request
|
|
70
|
+
*
|
|
71
|
+
* @template T - Expected response type
|
|
72
|
+
* @param endpoint - API endpoint path (without base URL)
|
|
73
|
+
* @param responseType - Expected response format
|
|
74
|
+
* @returns Promise resolving to typed response data
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const user = await client.get<User>('/users/123');
|
|
79
|
+
* const csvData = await client.get('/export/data', 'blob');
|
|
80
|
+
* ```
|
|
25
81
|
*/
|
|
26
82
|
get<T>(endpoint: string, responseType?: 'json' | 'blob' | 'text' | 'arraybuffer'): Promise<T>;
|
|
27
83
|
/**
|
|
28
|
-
*
|
|
84
|
+
* Performs an authenticated POST request
|
|
85
|
+
*
|
|
86
|
+
* @template T - Expected response type
|
|
87
|
+
* @param endpoint - API endpoint path (without base URL)
|
|
88
|
+
* @param body - Request payload data
|
|
89
|
+
* @param options - Request options including auth bypass
|
|
90
|
+
* @returns Promise resolving to typed response data
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const user = await client.post<User>('/users', userData);
|
|
95
|
+
* const publicData = await client.post('/public/contact', formData, { bypassAuth: true });
|
|
96
|
+
* ```
|
|
29
97
|
*/
|
|
30
|
-
post<T>(endpoint: string, body?: unknown
|
|
98
|
+
post<T>(endpoint: string, body?: unknown, options?: {
|
|
99
|
+
bypassAuth?: boolean;
|
|
100
|
+
}): Promise<T>;
|
|
31
101
|
/**
|
|
32
102
|
* Generic PUT request
|
|
33
103
|
*/
|
|
@@ -37,27 +107,128 @@ export declare class PersApiClient {
|
|
|
37
107
|
*/
|
|
38
108
|
delete<T>(endpoint: string): Promise<T>;
|
|
39
109
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
110
|
+
* Get request headers WITHOUT auth token (for auth operations like refresh/login)
|
|
111
|
+
*/
|
|
112
|
+
private getHeadersWithoutAuth;
|
|
113
|
+
/**
|
|
114
|
+
* Authenticates an admin user using external JWT token
|
|
115
|
+
*
|
|
116
|
+
* Exchanges external provider token (Firebase, Auth0, etc.) for PERS access tokens.
|
|
117
|
+
* Automatically stores received tokens for subsequent requests.
|
|
118
|
+
*
|
|
119
|
+
* @param externalJwt - JWT token from external authentication provider
|
|
120
|
+
* @returns Promise resolving to session context with admin permissions
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* const firebaseToken = await getIdToken();
|
|
125
|
+
* const session = await client.loginAdmin(firebaseToken);
|
|
126
|
+
* console.log('Admin authenticated:', session.user.email);
|
|
127
|
+
* ```
|
|
42
128
|
*/
|
|
43
129
|
loginAdmin(externalJwt: string): Promise<SessionAuthContextResponseDTO>;
|
|
44
130
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
131
|
+
* Authenticates a regular user using external JWT token
|
|
132
|
+
*
|
|
133
|
+
* Exchanges external provider token for PERS access tokens with user-level permissions.
|
|
134
|
+
* Automatically stores received tokens for subsequent requests.
|
|
135
|
+
*
|
|
136
|
+
* @param externalJwt - JWT token from external authentication provider
|
|
137
|
+
* @returns Promise resolving to session context with user permissions
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const firebaseToken = await getIdToken();
|
|
142
|
+
* const session = await client.loginUser(firebaseToken);
|
|
143
|
+
* console.log('User authenticated:', session.user.email);
|
|
144
|
+
* ```
|
|
47
145
|
*/
|
|
48
146
|
loginUser(externalJwt: string): Promise<SessionAuthContextResponseDTO>;
|
|
49
147
|
/**
|
|
50
|
-
*
|
|
148
|
+
* Authenticates a user using raw login data (no external JWT)
|
|
149
|
+
*
|
|
150
|
+
* Useful for custom authentication flows where user data is provided directly.
|
|
151
|
+
* Automatically stores received tokens for subsequent requests.
|
|
152
|
+
*
|
|
153
|
+
* @param rawLoginData - Object containing user login data (email, name, etc.)
|
|
154
|
+
* @return Promise resolving to session context with user permissions
|
|
51
155
|
*/
|
|
52
|
-
|
|
156
|
+
loginUserWithRawData(rawLoginData: {
|
|
157
|
+
externalId?: string | undefined;
|
|
158
|
+
email?: string | undefined;
|
|
159
|
+
firstName?: string | undefined;
|
|
160
|
+
lastName?: string | undefined;
|
|
161
|
+
customData?: Record<string, any> | undefined;
|
|
162
|
+
}): Promise<SessionAuthContextResponseDTO>;
|
|
53
163
|
/**
|
|
54
|
-
*
|
|
164
|
+
* Checks if current user has a valid authentication token
|
|
165
|
+
*
|
|
166
|
+
* Performs basic token availability check without network requests.
|
|
167
|
+
* For comprehensive validation including expiry, use isTokenExpired().
|
|
168
|
+
*
|
|
169
|
+
* @returns True if valid token exists, false otherwise
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* if (client.hasValidAuth()) {
|
|
174
|
+
* // User is authenticated, proceed with API calls
|
|
175
|
+
* const data = await client.get('/protected-data');
|
|
176
|
+
* } else {
|
|
177
|
+
* // Redirect to login
|
|
178
|
+
* redirectToLogin();
|
|
179
|
+
* }
|
|
180
|
+
* ```
|
|
55
181
|
*/
|
|
56
|
-
|
|
182
|
+
hasValidAuth(): boolean;
|
|
57
183
|
/**
|
|
58
|
-
*
|
|
184
|
+
* Checks if current access token is expired or expiring soon
|
|
185
|
+
*
|
|
186
|
+
* @param marginSeconds - Seconds before expiry to consider token as expired (default: 60)
|
|
187
|
+
* @returns Promise resolving to true if token is expired/expiring, false if valid
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* if (await client.isTokenExpired(120)) {
|
|
192
|
+
* console.log('Token expires within 2 minutes');
|
|
193
|
+
* // Optionally trigger manual refresh
|
|
194
|
+
* }
|
|
195
|
+
* ```
|
|
59
196
|
*/
|
|
60
|
-
|
|
197
|
+
isTokenExpired(marginSeconds?: number): Promise<boolean>;
|
|
198
|
+
/**
|
|
199
|
+
* Checks if both access and refresh tokens are expired
|
|
200
|
+
*
|
|
201
|
+
* Useful for determining if full re-authentication is required.
|
|
202
|
+
*
|
|
203
|
+
* @param marginSeconds - Seconds before expiry to consider tokens as expired (default: 60)
|
|
204
|
+
* @returns Promise resolving to true if both tokens expired, false otherwise
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* if (await client.areAllTokensExpired()) {
|
|
209
|
+
* // Full re-authentication required
|
|
210
|
+
* await redirectToLogin();
|
|
211
|
+
* }
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
areAllTokensExpired(marginSeconds?: number): Promise<boolean>;
|
|
215
|
+
/**
|
|
216
|
+
* Refresh access token using stored refresh token
|
|
217
|
+
*
|
|
218
|
+
* @param refreshToken - Optional refresh token, uses stored token if not provided
|
|
219
|
+
* @returns Promise resolving to new auth tokens
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```typescript
|
|
223
|
+
* try {
|
|
224
|
+
* const tokens = await client.refreshTokens();
|
|
225
|
+
* console.log('Tokens refreshed successfully');
|
|
226
|
+
* } catch (error) {
|
|
227
|
+
* console.error('Token refresh failed:', error);
|
|
228
|
+
* }
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
refreshTokens(refreshToken?: string): Promise<SessionAuthResponseDTO>;
|
|
61
232
|
/**
|
|
62
233
|
* Get current configuration (returns merged config)
|
|
63
234
|
*/
|
|
@@ -67,10 +238,4 @@ export declare class PersApiClient {
|
|
|
67
238
|
*/
|
|
68
239
|
getOriginalConfig(): PersConfig;
|
|
69
240
|
}
|
|
70
|
-
export declare class PersApiError extends Error {
|
|
71
|
-
endpoint: string;
|
|
72
|
-
method: string;
|
|
73
|
-
statusCode?: number | undefined;
|
|
74
|
-
constructor(message: string, endpoint: string, method: string, statusCode?: number | undefined);
|
|
75
|
-
}
|
|
76
241
|
//# sourceMappingURL=pers-api-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pers-api-client.d.ts","sourceRoot":"","sources":["../../src/core/pers-api-client.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"pers-api-client.d.ts","sourceRoot":"","sources":["../../src/core/pers-api-client.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,UAAU,EAAkB,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAgB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAoB,MAAM,iDAAiD,CAAC;AAW1I,qBAAa,aAAa;IAatB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAbhB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C;;;;;OAKG;gBAEO,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU;IAsB5B;;;;;;;;;OASG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,UAAU;IA2BxB;;OAEG;YACW,OAAO;IAqFrB;;OAEG;YACW,4BAA4B;IA8B1C;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAInG;;;;;;;;;;;;;;OAcG;IACG,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/F;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;KAEC;YACW,qBAAqB;IAsBjC;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAI7E;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAI5E;;;;;;;;OAQG;IACG,oBAAoB,CAAC,YAAY,EAAE;QACvC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KAC9C,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;;;;;;;;OAaG;IACG,cAAc,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlE;;;;;;;;;;;;;;;OAeG;IACG,mBAAmB,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IASvE;;;;;;;;;;;;;;;OAeG;IACG,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI3E;;OAEG;IACH,SAAS,IAAI,UAAU,CAAC,OAAO,iBAAiB,CAAC;IAIjD;;OAEG;IACH,iBAAiB,IAAI,UAAU;CAGhC"}
|
|
@@ -1,16 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PERS SDK Configuration interfaces
|
|
2
|
+
* PERS SDK Configuration interfaces and utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe configuration options for the PERS SDK
|
|
5
|
+
* with sensible defaults for production environments.
|
|
3
6
|
*/
|
|
4
7
|
import { PersAuthProvider } from './auth/auth-provider.interface';
|
|
8
|
+
/** PERS API environment targets */
|
|
5
9
|
export type PersEnvironment = 'development' | 'staging' | 'production';
|
|
10
|
+
/** Supported PERS API versions */
|
|
6
11
|
export type PersApiVersion = 'v1' | 'v1.8' | 'v1.9' | 'v2';
|
|
12
|
+
/**
|
|
13
|
+
* PERS SDK Configuration
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const config: PersConfig = {
|
|
18
|
+
* environment: 'production',
|
|
19
|
+
* apiProjectKey: 'your-project-key',
|
|
20
|
+
* apiVersion: 'v2',
|
|
21
|
+
* authProvider: createAuthProvider({
|
|
22
|
+
* tokenProvider: () => getFirebaseToken()
|
|
23
|
+
* }),
|
|
24
|
+
* tokenRefreshMargin: 120,
|
|
25
|
+
* timeout: 30000
|
|
26
|
+
* };
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
7
29
|
export interface PersConfig {
|
|
30
|
+
/** Target environment (default: 'production') */
|
|
8
31
|
environment?: PersEnvironment;
|
|
32
|
+
/** Project key for API authentication */
|
|
9
33
|
apiProjectKey?: string;
|
|
34
|
+
/** API version to use (default: 'v2') */
|
|
10
35
|
apiVersion?: PersApiVersion;
|
|
36
|
+
/** Request timeout in milliseconds (default: 30000) */
|
|
11
37
|
timeout?: number;
|
|
38
|
+
/** Number of retry attempts (default: 3) */
|
|
12
39
|
retries?: number;
|
|
40
|
+
/** Authentication provider instance */
|
|
13
41
|
authProvider?: PersAuthProvider;
|
|
42
|
+
/** Seconds before expiry to refresh token proactively (default: 60) */
|
|
43
|
+
tokenRefreshMargin?: number;
|
|
44
|
+
/** Seconds threshold for background vs blocking refresh (default: 30) */
|
|
45
|
+
backgroundRefreshThreshold?: number;
|
|
46
|
+
/** Internal - API root URL constructed automatically */
|
|
14
47
|
readonly apiRoot?: string;
|
|
15
48
|
}
|
|
16
49
|
export interface PersAuthConfig {
|
|
@@ -25,6 +58,8 @@ export declare const DEFAULT_PERS_CONFIG: {
|
|
|
25
58
|
readonly apiVersion: PersApiVersion;
|
|
26
59
|
readonly timeout: 30000;
|
|
27
60
|
readonly retries: 3;
|
|
61
|
+
readonly tokenRefreshMargin: 60;
|
|
62
|
+
readonly backgroundRefreshThreshold: 30;
|
|
28
63
|
};
|
|
29
64
|
/**
|
|
30
65
|
* Internal function to construct API root from environment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pers-config.d.ts","sourceRoot":"","sources":["../../src/core/pers-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pers-config.d.ts","sourceRoot":"","sources":["../../src/core/pers-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,mCAAmC;AACnC,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAEvE,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAE9B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,yEAAyE;IACzE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;0BACD,eAAe;yBACxB,cAAc;;;;;CAK1B,CAAC;AAEX;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,WAAW,GAAE,eAA8B,EAC3C,OAAO,GAAE,cAAqB,GAC7B,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CASnJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.function.d.ts","sourceRoot":"","sources":["../../../src/core/utils/jwt.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAAQ,MAAW,KAAG,
|
|
1
|
+
{"version":3,"file":"jwt.function.d.ts","sourceRoot":"","sources":["../../../src/core/utils/jwt.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAAQ,MAAW,KAAG,OAmBnE,CAAC"}
|