win-portal-auth-sdk 1.1.2 → 1.3.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.
@@ -7,18 +7,90 @@
7
7
  */
8
8
  import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
9
9
  import { AuthSdkConfig } from '../types';
10
- import { AuthAPI, HealthAPI, SystemConfigAPI, FilesAPI, EventLogApi, OAuthAPI, OAuthConfig, LineAPI } from './api';
10
+ import { AuthAPI, HealthAPI, SystemConfigAPI, FilesAPI, EventLogApi, LicenseAPI, OAuthAPI, OAuthConfig, LineAPI } from './api';
11
+ export interface RefreshTokenCallbacks {
12
+ /**
13
+ * Get refresh token from storage
14
+ */
15
+ getRefreshToken: () => string | null | Promise<string | null>;
16
+ /**
17
+ * Save refresh token to storage
18
+ */
19
+ setRefreshToken: (token: string) => void | Promise<void>;
20
+ /**
21
+ * Clear refresh token from storage
22
+ */
23
+ clearRefreshToken?: () => void | Promise<void>;
24
+ /**
25
+ * Optional: Callback when refresh fails (for logout handling)
26
+ */
27
+ onRefreshFailure?: () => void | Promise<void>;
28
+ }
29
+ export interface SessionExpirationCallbacks {
30
+ /**
31
+ * Callback เมื่อ session ใกล้หมดอายุ (ตาม warning_minutes จาก config)
32
+ * @param remainingMinutes - จำนวนนาทีที่เหลือก่อน session หมดอายุ
33
+ * @param expirationType - ประเภทการหมดอายุ: 'inactivity' หรือ 'lifetime'
34
+ */
35
+ onSessionExpiring?: (remainingMinutes: number, expirationType: 'inactivity' | 'lifetime') => void | Promise<void>;
36
+ /**
37
+ * Callback เมื่อ session หมดอายุแล้ว
38
+ */
39
+ onSessionExpired?: () => void | Promise<void>;
40
+ }
41
+ export interface SessionExpirationOptions {
42
+ /**
43
+ * Callbacks สำหรับ session expiration events
44
+ */
45
+ callbacks: SessionExpirationCallbacks;
46
+ /**
47
+ * Optional: ตรวจสอบ session expiration อัตโนมัติทุก N วินาที (default: 30)
48
+ */
49
+ checkIntervalSeconds?: number;
50
+ }
51
+ export interface AutomaticRefreshOptions {
52
+ /**
53
+ * Storage key for refresh token (SDK will manage localStorage automatically)
54
+ * If provided, SDK will handle localStorage operations automatically
55
+ */
56
+ refreshTokenKey?: string;
57
+ /**
58
+ * Custom callbacks (use if you need custom storage or want to override default behavior)
59
+ * If refreshTokenKey is provided, these will be ignored
60
+ */
61
+ callbacks?: RefreshTokenCallbacks;
62
+ /**
63
+ * Optional: Callback when refresh fails (for logout handling)
64
+ * This will be called even if refreshTokenKey is provided
65
+ */
66
+ onRefreshFailure?: () => void | Promise<void>;
67
+ }
11
68
  export declare class AuthClient {
12
69
  private client;
13
70
  private apiKey;
14
71
  private apiKeyHeader;
15
72
  private token;
16
73
  private authType;
74
+ private refreshTokenCallbacks;
75
+ private jwtConfigPromise;
76
+ private refreshThresholdMinutes;
77
+ private automaticRefreshEnabled;
78
+ private lastRefreshAttempt;
79
+ private refreshPromise;
80
+ private readonly REFRESH_COOLDOWN_MS;
81
+ private sessionExpirationCallbacks;
82
+ private sessionManagementConfig;
83
+ private sessionManagementConfigPromise;
84
+ private sessionExpirationCheckInterval;
85
+ private sessionExpirationCheckIntervalSeconds;
86
+ private lastWarningTime;
87
+ private readonly WARNING_COOLDOWN_MS;
17
88
  readonly auth: AuthAPI;
18
89
  readonly health: HealthAPI;
19
90
  readonly systemConfig: SystemConfigAPI;
20
91
  readonly files: FilesAPI;
21
92
  readonly eventLog: EventLogApi;
93
+ readonly license: LicenseAPI;
22
94
  readonly line: LineAPI;
23
95
  oauth?: OAuthAPI;
24
96
  constructor(config: AuthSdkConfig);
@@ -104,5 +176,115 @@ export declare class AuthClient {
104
176
  * Get axios instance for advanced usage
105
177
  */
106
178
  getAxiosInstance(): AxiosInstance;
179
+ /**
180
+ * Enable automatic token refresh
181
+ * Call this after user is authenticated to enable automatic refresh
182
+ *
183
+ * @param options - Options for automatic refresh
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Simple: SDK manages localStorage automatically
188
+ * await authClient.enableAutomaticRefresh({
189
+ * refreshTokenKey: 'refresh_token',
190
+ * onRefreshFailure: () => window.location.href = '/login'
191
+ * });
192
+ *
193
+ * // Advanced: Custom callbacks
194
+ * await authClient.enableAutomaticRefresh({
195
+ * callbacks: {
196
+ * getRefreshToken: () => customStorage.get('refresh_token'),
197
+ * setRefreshToken: (token) => customStorage.set('refresh_token', token),
198
+ * clearRefreshToken: () => customStorage.remove('refresh_token'),
199
+ * onRefreshFailure: () => window.location.href = '/login'
200
+ * }
201
+ * });
202
+ * ```
203
+ */
204
+ enableAutomaticRefresh(options: AutomaticRefreshOptions): Promise<void>;
205
+ /**
206
+ * Disable automatic token refresh
207
+ */
208
+ disableAutomaticRefresh(): void;
209
+ /**
210
+ * Load JWT config from API
211
+ */
212
+ private loadJwtConfig;
213
+ /**
214
+ * Perform JWT config load
215
+ */
216
+ private performJwtConfigLoad;
217
+ /**
218
+ * Perform token refresh
219
+ */
220
+ private performRefresh;
221
+ /**
222
+ * Execute refresh token request
223
+ */
224
+ private doRefresh;
225
+ /**
226
+ * Reload JWT config (for when config changes)
227
+ */
228
+ reloadJwtConfig(): Promise<void>;
229
+ /**
230
+ * Enable session expiration monitoring
231
+ * จะตรวจสอบ session expiration ตาม config จาก settings/sessions และเรียก callback เมื่อใกล้หมดอายุ
232
+ *
233
+ * @param options - Options for session expiration monitoring
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * await authClient.enableSessionExpirationMonitoring({
238
+ * callbacks: {
239
+ * onSessionExpiring: (remainingMinutes, expirationType) => {
240
+ * console.log(`Session will expire in ${remainingMinutes} minutes (${expirationType})`);
241
+ * // แสดง notification หรือ dialog
242
+ * },
243
+ * onSessionExpired: () => {
244
+ * console.log('Session expired');
245
+ * // Redirect to login
246
+ * }
247
+ * },
248
+ * checkIntervalSeconds: 30 // ตรวจสอบทุก 30 วินาที
249
+ * });
250
+ * ```
251
+ */
252
+ enableSessionExpirationMonitoring(options: SessionExpirationOptions): Promise<void>;
253
+ /**
254
+ * Disable session expiration monitoring
255
+ */
256
+ disableSessionExpirationMonitoring(): void;
257
+ /**
258
+ * Load session management config from API
259
+ */
260
+ private loadSessionManagementConfig;
261
+ /**
262
+ * Perform session management config load
263
+ */
264
+ private performSessionManagementConfigLoad;
265
+ /**
266
+ * Start session expiration monitoring interval
267
+ */
268
+ private startSessionExpirationMonitoring;
269
+ /**
270
+ * Stop session expiration monitoring interval
271
+ */
272
+ private stopSessionExpirationMonitoring;
273
+ /**
274
+ * Check session expiration and trigger callbacks if needed
275
+ *
276
+ * Note: ใช้ token expiration time เป็นตัวประมาณ session expiration
277
+ * เพราะเราไม่มี session creation time หรือ last activity time ใน SDK
278
+ * Token expiration จะถูก refresh อัตโนมัติเมื่อมีการใช้งาน (extend_on_activity)
279
+ */
280
+ private checkSessionExpiration;
281
+ /**
282
+ * Trigger expiring warning callback with cooldown
283
+ */
284
+ private triggerExpiringWarning;
285
+ /**
286
+ * Reload session management config (for when config changes)
287
+ */
288
+ reloadSessionManagementConfig(): Promise<void>;
107
289
  }
108
290
  //# sourceMappingURL=auth-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEnH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAwC;IAGxD,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,YAAY,EAAE,eAAe,CAAC;IAC9C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,QAAQ,EAAE,WAAW,CAAC;IACtC,SAAgB,IAAI,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;gBAEZ,MAAM,EAAE,aAAa;IA4DjC;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAW1C;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAIvF;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAIpG;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAInG;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAIrG;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAI1F;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,eAAe,IAAI,MAAM;IAMzB;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,KAAK,GAAG,OAAO,GAAG,QAAgB,GAAG,IAAI;IAMvE;;OAEG;IACH,WAAW,IAAI,KAAK,GAAG,OAAO,GAAG,QAAQ;IAIzC;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI;IAKnD;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,gBAAgB,IAAI,aAAa;CAGlC"}
1
+ {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":"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"}