win-portal-auth-sdk 1.0.3 → 1.1.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.
- package/README.md +146 -1
- package/TYPE_SAFETY.md +97 -0
- package/dist/client/api/auth.api.d.ts +58 -4
- package/dist/client/api/auth.api.d.ts.map +1 -1
- package/dist/client/api/auth.api.js +64 -2
- package/dist/client/api/files.api.d.ts +5 -5
- package/dist/client/api/files.api.d.ts.map +1 -1
- package/dist/client/api/index.d.ts +5 -0
- package/dist/client/api/index.d.ts.map +1 -1
- package/dist/client/api/index.js +8 -1
- package/dist/client/api/line.api.d.ts +150 -0
- package/dist/client/api/line.api.d.ts.map +1 -0
- package/dist/client/api/line.api.js +114 -0
- package/dist/client/api/oauth.api.d.ts +221 -0
- package/dist/client/api/oauth.api.d.ts.map +1 -0
- package/dist/client/api/oauth.api.js +258 -0
- package/dist/client/api/system-config.api.d.ts +4 -14
- package/dist/client/api/system-config.api.d.ts.map +1 -1
- package/dist/client/api/system-config.api.js +0 -8
- package/dist/client/auth-client.d.ts +16 -1
- package/dist/client/auth-client.d.ts.map +1 -1
- package/dist/client/auth-client.js +16 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/middleware/express.middleware.d.ts +62 -0
- package/dist/middleware/express.middleware.d.ts.map +1 -0
- package/dist/middleware/express.middleware.js +185 -0
- package/dist/middleware/express.types.d.ts +28 -0
- package/dist/middleware/express.types.d.ts.map +1 -0
- package/dist/middleware/express.types.js +7 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +26 -0
- package/dist/middleware/nestjs.decorators.d.ts +31 -0
- package/dist/middleware/nestjs.decorators.d.ts.map +1 -0
- package/dist/middleware/nestjs.decorators.js +56 -0
- package/dist/middleware/nestjs.guard.d.ts +55 -0
- package/dist/middleware/nestjs.guard.d.ts.map +1 -0
- package/dist/middleware/nestjs.guard.js +188 -0
- package/dist/middleware/types.d.ts +59 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +5 -0
- package/dist/types/auth.types.d.ts +16 -13
- package/dist/types/auth.types.d.ts.map +1 -1
- package/dist/types/auth.types.js +2 -2
- package/dist/types/file.types.d.ts +13 -9
- package/dist/types/file.types.d.ts.map +1 -1
- package/dist/types/file.types.js +2 -2
- package/dist/types/system-config.types.d.ts +8 -18
- package/dist/types/system-config.types.d.ts.map +1 -1
- package/dist/types/system-config.types.js +2 -2
- package/package.json +2 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LINE Messaging API
|
|
3
|
+
*
|
|
4
|
+
* ส่ง LINE messages ไปยัง users ผ่าน backend API
|
|
5
|
+
*/
|
|
6
|
+
import { AuthClient } from '../auth-client';
|
|
7
|
+
export interface SendTextMessageRequest {
|
|
8
|
+
userId: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SendStickerRequest {
|
|
12
|
+
userId: string;
|
|
13
|
+
packageId: string;
|
|
14
|
+
stickerId: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SendImageRequest {
|
|
17
|
+
userId: string;
|
|
18
|
+
originalContentUrl: string;
|
|
19
|
+
previewImageUrl: string;
|
|
20
|
+
}
|
|
21
|
+
export interface LineMessagePayload {
|
|
22
|
+
type: 'text' | 'image' | 'video' | 'audio' | 'file' | 'location' | 'sticker';
|
|
23
|
+
text?: string;
|
|
24
|
+
originalContentUrl?: string;
|
|
25
|
+
previewImageUrl?: string;
|
|
26
|
+
title?: string;
|
|
27
|
+
address?: string;
|
|
28
|
+
latitude?: number;
|
|
29
|
+
longitude?: number;
|
|
30
|
+
packageId?: string;
|
|
31
|
+
stickerId?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SendMessagesRequest {
|
|
34
|
+
userId: string;
|
|
35
|
+
messages: LineMessagePayload[];
|
|
36
|
+
}
|
|
37
|
+
export interface SendNotificationRequest {
|
|
38
|
+
userId: string;
|
|
39
|
+
title: string;
|
|
40
|
+
message: string;
|
|
41
|
+
type?: 'info' | 'success' | 'warning' | 'error';
|
|
42
|
+
action_url?: string;
|
|
43
|
+
priority?: 'low' | 'normal' | 'high';
|
|
44
|
+
}
|
|
45
|
+
export interface LineMessageResponse {
|
|
46
|
+
success: boolean;
|
|
47
|
+
data?: {
|
|
48
|
+
messageSent: boolean;
|
|
49
|
+
};
|
|
50
|
+
message?: string;
|
|
51
|
+
errors?: string[];
|
|
52
|
+
timestamp: string;
|
|
53
|
+
}
|
|
54
|
+
export interface LineMessagingAvailabilityResponse {
|
|
55
|
+
success: boolean;
|
|
56
|
+
data?: {
|
|
57
|
+
canReceiveMessages: boolean;
|
|
58
|
+
lineUserId?: string;
|
|
59
|
+
};
|
|
60
|
+
message?: string;
|
|
61
|
+
errors?: string[];
|
|
62
|
+
timestamp: string;
|
|
63
|
+
}
|
|
64
|
+
export declare class LineAPI {
|
|
65
|
+
private client;
|
|
66
|
+
constructor(client: AuthClient);
|
|
67
|
+
/**
|
|
68
|
+
* ส่งข้อความ text ไปยัง user
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const result = await authClient.line.sendTextMessage({
|
|
73
|
+
* userId: 'user-123',
|
|
74
|
+
* message: 'สวัสดีครับ! ยินดีต้อนรับ'
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
sendTextMessage(request: SendTextMessageRequest): Promise<LineMessageResponse>;
|
|
79
|
+
/**
|
|
80
|
+
* ส่ง sticker ไปยัง user
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const result = await authClient.line.sendSticker({
|
|
85
|
+
* userId: 'user-123',
|
|
86
|
+
* packageId: '11537',
|
|
87
|
+
* stickerId: '52002734'
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
sendSticker(request: SendStickerRequest): Promise<LineMessageResponse>;
|
|
92
|
+
/**
|
|
93
|
+
* ส่งรูปภาพไปยัง user
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const result = await authClient.line.sendImage({
|
|
98
|
+
* userId: 'user-123',
|
|
99
|
+
* originalContentUrl: 'https://example.com/image.jpg',
|
|
100
|
+
* previewImageUrl: 'https://example.com/preview.jpg'
|
|
101
|
+
* });
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
sendImage(request: SendImageRequest): Promise<LineMessageResponse>;
|
|
105
|
+
/**
|
|
106
|
+
* ส่งหลายข้อความพร้อมกัน (สูงสุด 5 ข้อความ)
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const result = await authClient.line.sendMessages({
|
|
111
|
+
* userId: 'user-123',
|
|
112
|
+
* messages: [
|
|
113
|
+
* { type: 'text', text: 'ข้อความแรก' },
|
|
114
|
+
* { type: 'sticker', packageId: '11537', stickerId: '52002734' },
|
|
115
|
+
* { type: 'text', text: 'ข้อความสุดท้าย' }
|
|
116
|
+
* ]
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
sendMessages(request: SendMessagesRequest): Promise<LineMessageResponse>;
|
|
121
|
+
/**
|
|
122
|
+
* ส่ง notification แบบ high-level (มี title, icon และ action URL)
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const result = await authClient.line.sendNotification({
|
|
127
|
+
* userId: 'user-123',
|
|
128
|
+
* title: 'งานใหม่ได้รับมอบหมาย',
|
|
129
|
+
* message: 'คุณได้รับมอบหมายงาน: ทำรายงานประจำเดือน',
|
|
130
|
+
* type: 'info',
|
|
131
|
+
* action_url: 'https://app.example.com/tasks/123',
|
|
132
|
+
* priority: 'high'
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
sendNotification(request: SendNotificationRequest): Promise<LineMessageResponse>;
|
|
137
|
+
/**
|
|
138
|
+
* ตรวจสอบว่า user สามารถรับข้อความ LINE ได้หรือไม่
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const result = await authClient.line.checkMessagingAvailability('user-123');
|
|
143
|
+
* if (result.data?.canReceiveMessages) {
|
|
144
|
+
* console.log('User can receive LINE messages');
|
|
145
|
+
* }
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
checkMessagingAvailability(userId: string): Promise<LineMessagingAvailabilityResponse>;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=line.api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.api.d.ts","sourceRoot":"","sources":["../../../src/client/api/line.api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,kBAAkB,EAAE,OAAO,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;;;;;;;;;OAUG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAKpF;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK5E;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAKxE;;;;;;;;;;;;;;OAcG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK9E;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAKtF;;;;;;;;;;OAUG;IACG,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iCAAiC,CAAC;CAM7F"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LINE Messaging API
|
|
4
|
+
*
|
|
5
|
+
* ส่ง LINE messages ไปยัง users ผ่าน backend API
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LineAPI = void 0;
|
|
9
|
+
class LineAPI {
|
|
10
|
+
constructor(client) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ส่งข้อความ text ไปยัง user
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const result = await authClient.line.sendTextMessage({
|
|
19
|
+
* userId: 'user-123',
|
|
20
|
+
* message: 'สวัสดีครับ! ยินดีต้อนรับ'
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
async sendTextMessage(request) {
|
|
25
|
+
const response = await this.client.post('/api/line/send-text', request);
|
|
26
|
+
return response.data;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* ส่ง sticker ไปยัง user
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const result = await authClient.line.sendSticker({
|
|
34
|
+
* userId: 'user-123',
|
|
35
|
+
* packageId: '11537',
|
|
36
|
+
* stickerId: '52002734'
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
async sendSticker(request) {
|
|
41
|
+
const response = await this.client.post('/api/line/send-sticker', request);
|
|
42
|
+
return response.data;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* ส่งรูปภาพไปยัง user
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const result = await authClient.line.sendImage({
|
|
50
|
+
* userId: 'user-123',
|
|
51
|
+
* originalContentUrl: 'https://example.com/image.jpg',
|
|
52
|
+
* previewImageUrl: 'https://example.com/preview.jpg'
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
async sendImage(request) {
|
|
57
|
+
const response = await this.client.post('/api/line/send-image', request);
|
|
58
|
+
return response.data;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* ส่งหลายข้อความพร้อมกัน (สูงสุด 5 ข้อความ)
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const result = await authClient.line.sendMessages({
|
|
66
|
+
* userId: 'user-123',
|
|
67
|
+
* messages: [
|
|
68
|
+
* { type: 'text', text: 'ข้อความแรก' },
|
|
69
|
+
* { type: 'sticker', packageId: '11537', stickerId: '52002734' },
|
|
70
|
+
* { type: 'text', text: 'ข้อความสุดท้าย' }
|
|
71
|
+
* ]
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
async sendMessages(request) {
|
|
76
|
+
const response = await this.client.post('/api/line/send-messages', request);
|
|
77
|
+
return response.data;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* ส่ง notification แบบ high-level (มี title, icon และ action URL)
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const result = await authClient.line.sendNotification({
|
|
85
|
+
* userId: 'user-123',
|
|
86
|
+
* title: 'งานใหม่ได้รับมอบหมาย',
|
|
87
|
+
* message: 'คุณได้รับมอบหมายงาน: ทำรายงานประจำเดือน',
|
|
88
|
+
* type: 'info',
|
|
89
|
+
* action_url: 'https://app.example.com/tasks/123',
|
|
90
|
+
* priority: 'high'
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
async sendNotification(request) {
|
|
95
|
+
const response = await this.client.post('/api/line/send-notification', request);
|
|
96
|
+
return response.data;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* ตรวจสอบว่า user สามารถรับข้อความ LINE ได้หรือไม่
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const result = await authClient.line.checkMessagingAvailability('user-123');
|
|
104
|
+
* if (result.data?.canReceiveMessages) {
|
|
105
|
+
* console.log('User can receive LINE messages');
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
async checkMessagingAvailability(userId) {
|
|
110
|
+
const response = await this.client.get(`/api/line/messaging-availability/${userId}`);
|
|
111
|
+
return response.data;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.LineAPI = LineAPI;
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.0 & OpenID Connect API
|
|
3
|
+
*
|
|
4
|
+
* Client methods for OAuth 2.0 Authorization Code Flow with PKCE
|
|
5
|
+
* and OpenID Connect authentication
|
|
6
|
+
*/
|
|
7
|
+
import { AuthClient } from '../auth-client';
|
|
8
|
+
export interface OAuthConfig {
|
|
9
|
+
clientId: string;
|
|
10
|
+
clientSecret?: string;
|
|
11
|
+
redirectUri: string;
|
|
12
|
+
scope?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AuthorizationUrlOptions {
|
|
15
|
+
state?: string;
|
|
16
|
+
scope?: string;
|
|
17
|
+
codeChallenge?: string;
|
|
18
|
+
codeChallengeMethod?: 'S256' | 'plain';
|
|
19
|
+
responseType?: 'code';
|
|
20
|
+
}
|
|
21
|
+
export interface TokenResponse {
|
|
22
|
+
access_token: string;
|
|
23
|
+
token_type: string;
|
|
24
|
+
expires_in: number;
|
|
25
|
+
refresh_token?: string;
|
|
26
|
+
id_token?: string;
|
|
27
|
+
scope: string;
|
|
28
|
+
}
|
|
29
|
+
export interface UserInfo {
|
|
30
|
+
sub: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
given_name?: string;
|
|
33
|
+
family_name?: string;
|
|
34
|
+
middle_name?: string;
|
|
35
|
+
nickname?: string;
|
|
36
|
+
preferred_username?: string;
|
|
37
|
+
profile?: string;
|
|
38
|
+
picture?: string;
|
|
39
|
+
website?: string;
|
|
40
|
+
email?: string;
|
|
41
|
+
email_verified?: boolean;
|
|
42
|
+
gender?: string;
|
|
43
|
+
birthdate?: string;
|
|
44
|
+
zoneinfo?: string;
|
|
45
|
+
locale?: string;
|
|
46
|
+
phone_number?: string;
|
|
47
|
+
phone_number_verified?: boolean;
|
|
48
|
+
address?: {
|
|
49
|
+
formatted?: string;
|
|
50
|
+
street_address?: string;
|
|
51
|
+
locality?: string;
|
|
52
|
+
region?: string;
|
|
53
|
+
postal_code?: string;
|
|
54
|
+
country?: string;
|
|
55
|
+
};
|
|
56
|
+
updated_at?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface DiscoveryDocument {
|
|
59
|
+
issuer: string;
|
|
60
|
+
authorization_endpoint: string;
|
|
61
|
+
token_endpoint: string;
|
|
62
|
+
userinfo_endpoint: string;
|
|
63
|
+
jwks_uri: string;
|
|
64
|
+
registration_endpoint?: string;
|
|
65
|
+
scopes_supported: string[];
|
|
66
|
+
response_types_supported: string[];
|
|
67
|
+
response_modes_supported?: string[];
|
|
68
|
+
grant_types_supported: string[];
|
|
69
|
+
token_endpoint_auth_methods_supported: string[];
|
|
70
|
+
id_token_signing_alg_values_supported: string[];
|
|
71
|
+
subject_types_supported: string[];
|
|
72
|
+
code_challenge_methods_supported?: string[];
|
|
73
|
+
claims_supported?: string[];
|
|
74
|
+
}
|
|
75
|
+
export declare class OAuthAPI {
|
|
76
|
+
private client;
|
|
77
|
+
private config;
|
|
78
|
+
constructor(client: AuthClient, config: OAuthConfig);
|
|
79
|
+
/**
|
|
80
|
+
* Generate authorization URL for OAuth 2.0 Authorization Code Flow
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const pkce = generatePKCE(); // Helper function (implement separately)
|
|
85
|
+
* const authUrl = oauth.getAuthorizationUrl({
|
|
86
|
+
* state: 'random_state_string',
|
|
87
|
+
* codeChallenge: pkce.codeChallenge,
|
|
88
|
+
* codeChallengeMethod: 'S256',
|
|
89
|
+
* scope: 'openid profile email'
|
|
90
|
+
* });
|
|
91
|
+
* // Redirect user to authUrl
|
|
92
|
+
* window.location.href = authUrl;
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
getAuthorizationUrl(options?: AuthorizationUrlOptions): string;
|
|
96
|
+
/**
|
|
97
|
+
* Exchange authorization code for access token
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // After user is redirected back with code
|
|
102
|
+
* const urlParams = new URLSearchParams(window.location.search);
|
|
103
|
+
* const code = urlParams.get('code');
|
|
104
|
+
*
|
|
105
|
+
* const tokens = await oauth.exchangeCodeForToken(code, {
|
|
106
|
+
* codeVerifier: pkce.codeVerifier // From PKCE generation
|
|
107
|
+
* });
|
|
108
|
+
*
|
|
109
|
+
* console.log('Access Token:', tokens.access_token);
|
|
110
|
+
* console.log('ID Token:', tokens.id_token);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
exchangeCodeForToken(code: string, options?: {
|
|
114
|
+
codeVerifier?: string;
|
|
115
|
+
}): Promise<TokenResponse>;
|
|
116
|
+
/**
|
|
117
|
+
* Refresh access token using refresh token
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const newTokens = await oauth.refreshAccessToken(refreshToken);
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
refreshAccessToken(refreshToken: string): Promise<TokenResponse>;
|
|
125
|
+
/**
|
|
126
|
+
* Get user information from UserInfo endpoint (OIDC)
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const userInfo = await oauth.getUserInfo(accessToken);
|
|
131
|
+
* console.log('User:', userInfo.name, userInfo.email);
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
getUserInfo(accessToken: string): Promise<UserInfo>;
|
|
135
|
+
/**
|
|
136
|
+
* Revoke access or refresh token
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* await oauth.revokeToken(accessToken, 'access_token');
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
revokeToken(token: string, tokenTypeHint?: 'access_token' | 'refresh_token'): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Introspect token to check if it's valid
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const result = await oauth.introspectToken(accessToken);
|
|
150
|
+
* if (result.active) {
|
|
151
|
+
* console.log('Token is valid, expires at:', result.exp);
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
introspectToken(token: string): Promise<{
|
|
156
|
+
active: boolean;
|
|
157
|
+
scope?: string;
|
|
158
|
+
client_id?: string;
|
|
159
|
+
username?: string;
|
|
160
|
+
token_type?: string;
|
|
161
|
+
exp?: number;
|
|
162
|
+
iat?: number;
|
|
163
|
+
sub?: string;
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* Get OpenID Connect Discovery Document
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const discovery = await oauth.getDiscoveryDocument();
|
|
171
|
+
* console.log('Issuer:', discovery.issuer);
|
|
172
|
+
* console.log('Authorization Endpoint:', discovery.authorization_endpoint);
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
176
|
+
/**
|
|
177
|
+
* Get JSON Web Key Set (JWKS) for token verification
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* const jwks = await oauth.getJWKS();
|
|
182
|
+
* // Use jwks to verify ID tokens
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
getJWKS(): Promise<{
|
|
186
|
+
keys: Array<{
|
|
187
|
+
kid: string;
|
|
188
|
+
kty: string;
|
|
189
|
+
alg: string;
|
|
190
|
+
use: string;
|
|
191
|
+
n: string;
|
|
192
|
+
e: string;
|
|
193
|
+
}>;
|
|
194
|
+
}>;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Generate PKCE code verifier and challenge
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const pkce = await generatePKCE();
|
|
202
|
+
* // Store pkce.codeVerifier in sessionStorage
|
|
203
|
+
* // Use pkce.codeChallenge in authorization URL
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export declare function generatePKCE(): Promise<{
|
|
207
|
+
codeVerifier: string;
|
|
208
|
+
codeChallenge: string;
|
|
209
|
+
codeChallengeMethod: 'S256';
|
|
210
|
+
}>;
|
|
211
|
+
/**
|
|
212
|
+
* Generate random state parameter
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```typescript
|
|
216
|
+
* const state = generateState();
|
|
217
|
+
* // Store in sessionStorage for CSRF protection
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export declare function generateState(): string;
|
|
221
|
+
//# sourceMappingURL=oauth.api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.api.d.ts","sourceRoot":"","sources":["../../../src/client/api/oauth.api.ts"],"names":[],"mappings":"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"}
|