integrate-sdk 0.3.13 → 0.3.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/dist/index.js +43 -0
- package/dist/oauth.js +41 -1
- package/dist/server.js +43 -0
- package/dist/src/adapters/auto-routes.d.ts +1 -1
- package/dist/src/adapters/auto-routes.d.ts.map +1 -1
- package/dist/src/adapters/base-handler.d.ts +25 -0
- package/dist/src/adapters/base-handler.d.ts.map +1 -1
- package/dist/src/adapters/nextjs.d.ts +46 -2
- package/dist/src/adapters/nextjs.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -245,6 +245,28 @@ class OAuthHandler {
|
|
|
245
245
|
const data = await response.json();
|
|
246
246
|
return data;
|
|
247
247
|
}
|
|
248
|
+
async handleDisconnect(request, sessionToken) {
|
|
249
|
+
if (!sessionToken) {
|
|
250
|
+
throw new Error("No session token provided. Cannot disconnect provider.");
|
|
251
|
+
}
|
|
252
|
+
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
253
|
+
const response = await fetch(url.toString(), {
|
|
254
|
+
method: "POST",
|
|
255
|
+
headers: {
|
|
256
|
+
"Content-Type": "application/json",
|
|
257
|
+
"X-Session-Token": sessionToken
|
|
258
|
+
},
|
|
259
|
+
body: JSON.stringify({
|
|
260
|
+
provider: request.provider
|
|
261
|
+
})
|
|
262
|
+
});
|
|
263
|
+
if (!response.ok) {
|
|
264
|
+
const error = await response.text();
|
|
265
|
+
throw new Error(`MCP server failed to disconnect provider: ${error}`);
|
|
266
|
+
}
|
|
267
|
+
const data = await response.json();
|
|
268
|
+
return data;
|
|
269
|
+
}
|
|
248
270
|
}
|
|
249
271
|
var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
250
272
|
|
|
@@ -293,6 +315,24 @@ function createNextOAuthHandler(config) {
|
|
|
293
315
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
294
316
|
}
|
|
295
317
|
},
|
|
318
|
+
async disconnect(req) {
|
|
319
|
+
try {
|
|
320
|
+
const sessionToken = req.headers.get("x-session-token");
|
|
321
|
+
if (!sessionToken) {
|
|
322
|
+
return Response.json({ error: "Missing X-Session-Token header" }, { status: 400 });
|
|
323
|
+
}
|
|
324
|
+
const body = await req.json();
|
|
325
|
+
const { provider } = body;
|
|
326
|
+
if (!provider) {
|
|
327
|
+
return Response.json({ error: "Missing provider in request body" }, { status: 400 });
|
|
328
|
+
}
|
|
329
|
+
const result = await handler.handleDisconnect({ provider }, sessionToken);
|
|
330
|
+
return Response.json(result);
|
|
331
|
+
} catch (error) {
|
|
332
|
+
console.error("[OAuth Disconnect] Error:", error);
|
|
333
|
+
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
334
|
+
}
|
|
335
|
+
},
|
|
296
336
|
createRoutes() {
|
|
297
337
|
return {
|
|
298
338
|
async POST(req, context) {
|
|
@@ -304,6 +344,9 @@ function createNextOAuthHandler(config) {
|
|
|
304
344
|
if (action === "callback") {
|
|
305
345
|
return handlers.callback(req);
|
|
306
346
|
}
|
|
347
|
+
if (action === "disconnect") {
|
|
348
|
+
return handlers.disconnect(req);
|
|
349
|
+
}
|
|
307
350
|
return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
|
|
308
351
|
},
|
|
309
352
|
async GET(req, context) {
|
package/dist/oauth.js
CHANGED
|
@@ -107,6 +107,28 @@ class OAuthHandler {
|
|
|
107
107
|
const data = await response.json();
|
|
108
108
|
return data;
|
|
109
109
|
}
|
|
110
|
+
async handleDisconnect(request, sessionToken) {
|
|
111
|
+
if (!sessionToken) {
|
|
112
|
+
throw new Error("No session token provided. Cannot disconnect provider.");
|
|
113
|
+
}
|
|
114
|
+
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
115
|
+
const response = await fetch(url.toString(), {
|
|
116
|
+
method: "POST",
|
|
117
|
+
headers: {
|
|
118
|
+
"Content-Type": "application/json",
|
|
119
|
+
"X-Session-Token": sessionToken
|
|
120
|
+
},
|
|
121
|
+
body: JSON.stringify({
|
|
122
|
+
provider: request.provider
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
if (!response.ok) {
|
|
126
|
+
const error = await response.text();
|
|
127
|
+
throw new Error(`MCP server failed to disconnect provider: ${error}`);
|
|
128
|
+
}
|
|
129
|
+
const data = await response.json();
|
|
130
|
+
return data;
|
|
131
|
+
}
|
|
110
132
|
}
|
|
111
133
|
var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
|
|
112
134
|
|
|
@@ -132,6 +154,18 @@ async function POST(req, context) {
|
|
|
132
154
|
const result = await handler.handleCallback(body);
|
|
133
155
|
return createSuccessResponse(result);
|
|
134
156
|
}
|
|
157
|
+
if (action === "disconnect") {
|
|
158
|
+
const body = await parseRequestBody(req);
|
|
159
|
+
const sessionToken = extractSessionToken(req);
|
|
160
|
+
if (!sessionToken) {
|
|
161
|
+
return createErrorResponse("Missing X-Session-Token header", 400);
|
|
162
|
+
}
|
|
163
|
+
if (!body.provider) {
|
|
164
|
+
return createErrorResponse("Missing provider in request body", 400);
|
|
165
|
+
}
|
|
166
|
+
const result = await handler.handleDisconnect({ provider: body.provider }, sessionToken);
|
|
167
|
+
return createSuccessResponse(result);
|
|
168
|
+
}
|
|
135
169
|
return createErrorResponse(`Unknown action: ${action}`, 404);
|
|
136
170
|
} catch (error) {
|
|
137
171
|
console.error(`[OAuth ${action}] Error:`, error);
|
|
@@ -168,6 +202,12 @@ async function parseRequestBody(req) {
|
|
|
168
202
|
}
|
|
169
203
|
throw new Error("Unable to parse request body");
|
|
170
204
|
}
|
|
205
|
+
function extractSessionToken(req) {
|
|
206
|
+
if (req.headers?.get) {
|
|
207
|
+
return req.headers.get("x-session-token") || undefined;
|
|
208
|
+
}
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
171
211
|
function parseQueryParams(req) {
|
|
172
212
|
let url;
|
|
173
213
|
if (req.nextUrl) {
|
|
@@ -178,7 +218,7 @@ function parseQueryParams(req) {
|
|
|
178
218
|
return {};
|
|
179
219
|
}
|
|
180
220
|
const provider = url.searchParams.get("provider") || undefined;
|
|
181
|
-
const sessionToken = req
|
|
221
|
+
const sessionToken = extractSessionToken(req);
|
|
182
222
|
return { provider, sessionToken };
|
|
183
223
|
}
|
|
184
224
|
function createSuccessResponse(data) {
|
package/dist/server.js
CHANGED
|
@@ -245,6 +245,28 @@ class OAuthHandler {
|
|
|
245
245
|
const data = await response.json();
|
|
246
246
|
return data;
|
|
247
247
|
}
|
|
248
|
+
async handleDisconnect(request, sessionToken) {
|
|
249
|
+
if (!sessionToken) {
|
|
250
|
+
throw new Error("No session token provided. Cannot disconnect provider.");
|
|
251
|
+
}
|
|
252
|
+
const url = new URL("/oauth/disconnect", this.serverUrl);
|
|
253
|
+
const response = await fetch(url.toString(), {
|
|
254
|
+
method: "POST",
|
|
255
|
+
headers: {
|
|
256
|
+
"Content-Type": "application/json",
|
|
257
|
+
"X-Session-Token": sessionToken
|
|
258
|
+
},
|
|
259
|
+
body: JSON.stringify({
|
|
260
|
+
provider: request.provider
|
|
261
|
+
})
|
|
262
|
+
});
|
|
263
|
+
if (!response.ok) {
|
|
264
|
+
const error = await response.text();
|
|
265
|
+
throw new Error(`MCP server failed to disconnect provider: ${error}`);
|
|
266
|
+
}
|
|
267
|
+
const data = await response.json();
|
|
268
|
+
return data;
|
|
269
|
+
}
|
|
248
270
|
}
|
|
249
271
|
var MCP_SERVER_URL2 = "https://mcp.integrate.dev/api/v1/mcp";
|
|
250
272
|
|
|
@@ -293,6 +315,24 @@ function createNextOAuthHandler(config) {
|
|
|
293
315
|
return Response.json({ error: error.message || "Failed to check authorization status" }, { status: 500 });
|
|
294
316
|
}
|
|
295
317
|
},
|
|
318
|
+
async disconnect(req) {
|
|
319
|
+
try {
|
|
320
|
+
const sessionToken = req.headers.get("x-session-token");
|
|
321
|
+
if (!sessionToken) {
|
|
322
|
+
return Response.json({ error: "Missing X-Session-Token header" }, { status: 400 });
|
|
323
|
+
}
|
|
324
|
+
const body = await req.json();
|
|
325
|
+
const { provider } = body;
|
|
326
|
+
if (!provider) {
|
|
327
|
+
return Response.json({ error: "Missing provider in request body" }, { status: 400 });
|
|
328
|
+
}
|
|
329
|
+
const result = await handler.handleDisconnect({ provider }, sessionToken);
|
|
330
|
+
return Response.json(result);
|
|
331
|
+
} catch (error) {
|
|
332
|
+
console.error("[OAuth Disconnect] Error:", error);
|
|
333
|
+
return Response.json({ error: error.message || "Failed to disconnect provider" }, { status: 500 });
|
|
334
|
+
}
|
|
335
|
+
},
|
|
296
336
|
createRoutes() {
|
|
297
337
|
return {
|
|
298
338
|
async POST(req, context) {
|
|
@@ -304,6 +344,9 @@ function createNextOAuthHandler(config) {
|
|
|
304
344
|
if (action === "callback") {
|
|
305
345
|
return handlers.callback(req);
|
|
306
346
|
}
|
|
347
|
+
if (action === "disconnect") {
|
|
348
|
+
return handlers.disconnect(req);
|
|
349
|
+
}
|
|
307
350
|
return Response.json({ error: `Unknown action: ${action}` }, { status: 404 });
|
|
308
351
|
},
|
|
309
352
|
async GET(req, context) {
|
|
@@ -32,7 +32,7 @@ export declare function getGlobalOAuthConfig(): OAuthHandlerConfig | null;
|
|
|
32
32
|
*/
|
|
33
33
|
/**
|
|
34
34
|
* Universal POST handler
|
|
35
|
-
* Handles authorize and
|
|
35
|
+
* Handles authorize, callback, and disconnect actions
|
|
36
36
|
*/
|
|
37
37
|
export declare function POST(req: any, context?: {
|
|
38
38
|
params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-routes.d.ts","sourceRoot":"","sources":["../../../src/adapters/auto-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,GAAG,IAAI,CAEhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AAkBH;;;GAGG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACvC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-routes.d.ts","sourceRoot":"","sources":["../../../src/adapters/auto-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,GAAG,IAAI,CAEhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AAkBH;;;GAGG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACvC,OAAO,CAAC,GAAG,CAAC,CAgDd;AAED;;;GAGG;AACH,wBAAsB,GAAG,CACvB,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACvC,OAAO,CAAC,GAAG,CAAC,CAkCd"}
|
|
@@ -61,6 +61,19 @@ export interface StatusResponse {
|
|
|
61
61
|
scopes?: string[];
|
|
62
62
|
expiresAt?: number;
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Request body for disconnect endpoint
|
|
66
|
+
*/
|
|
67
|
+
export interface DisconnectRequest {
|
|
68
|
+
provider: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Response from disconnect endpoint
|
|
72
|
+
*/
|
|
73
|
+
export interface DisconnectResponse {
|
|
74
|
+
success: boolean;
|
|
75
|
+
provider: string;
|
|
76
|
+
}
|
|
64
77
|
/**
|
|
65
78
|
* OAuth Handler
|
|
66
79
|
* Handles OAuth authorization flows by proxying requests to MCP server
|
|
@@ -102,5 +115,17 @@ export declare class OAuthHandler {
|
|
|
102
115
|
* @throws Error if MCP server request fails
|
|
103
116
|
*/
|
|
104
117
|
handleStatus(provider: string, sessionToken: string): Promise<StatusResponse>;
|
|
118
|
+
/**
|
|
119
|
+
* Handle provider disconnection
|
|
120
|
+
* Revokes authorization for a specific provider
|
|
121
|
+
*
|
|
122
|
+
* @param request - Disconnect request with provider name
|
|
123
|
+
* @param sessionToken - Session token from client
|
|
124
|
+
* @returns Disconnect response
|
|
125
|
+
*
|
|
126
|
+
* @throws Error if no session token provided
|
|
127
|
+
* @throws Error if MCP server request fails
|
|
128
|
+
*/
|
|
129
|
+
handleDisconnect(request: DisconnectRequest, sessionToken: string): Promise<DisconnectResponse>;
|
|
105
130
|
}
|
|
106
131
|
//# sourceMappingURL=base-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,iDAAiD;QACjD,QAAQ,EAAE,MAAM,CAAC;QACjB,qDAAqD;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAExB,MAAM,EAAE,kBAAkB;IAE9C;;;;;;;;;OASG;IACG,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0C5E;;;;;;;;OAQG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BzE;;;;;;;;;OASG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,iDAAiD;QACjD,QAAQ,EAAE,MAAM,CAAC;QACjB,qDAAqD;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAExB,MAAM,EAAE,kBAAkB;IAE9C;;;;;;;;;OASG;IACG,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0C5E;;;;;;;;OAQG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BzE;;;;;;;;;OASG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6BnF;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2BtG"}
|
|
@@ -15,7 +15,7 @@ type NextResponse = any;
|
|
|
15
15
|
* that handle authorization with server-side secrets.
|
|
16
16
|
*
|
|
17
17
|
* @param config - OAuth handler configuration with provider credentials
|
|
18
|
-
* @returns Object with authorize, callback, and
|
|
18
|
+
* @returns Object with authorize, callback, status, and disconnect route handlers, plus a unified handler
|
|
19
19
|
*
|
|
20
20
|
* @example
|
|
21
21
|
* **Simple Setup (Recommended)** - One route file handles everything:
|
|
@@ -48,6 +48,9 @@ type NextResponse = any;
|
|
|
48
48
|
*
|
|
49
49
|
* // app/api/integrate/oauth/status/route.ts
|
|
50
50
|
* export const GET = handler.status;
|
|
51
|
+
*
|
|
52
|
+
* // app/api/integrate/oauth/disconnect/route.ts
|
|
53
|
+
* export const POST = handler.disconnect;
|
|
51
54
|
* ```
|
|
52
55
|
*/
|
|
53
56
|
export declare function createNextOAuthHandler(config: OAuthHandlerConfig): {
|
|
@@ -175,6 +178,47 @@ export declare function createNextOAuthHandler(config: OAuthHandlerConfig): {
|
|
|
175
178
|
* ```
|
|
176
179
|
*/
|
|
177
180
|
status(req: NextRequest): Promise<NextResponse>;
|
|
181
|
+
/**
|
|
182
|
+
* POST /api/integrate/oauth/disconnect
|
|
183
|
+
*
|
|
184
|
+
* Revoke authorization for a specific provider
|
|
185
|
+
*
|
|
186
|
+
* Request headers:
|
|
187
|
+
* - X-Session-Token: Session token from previous authorization
|
|
188
|
+
*
|
|
189
|
+
* Request body:
|
|
190
|
+
* ```json
|
|
191
|
+
* {
|
|
192
|
+
* "provider": "github"
|
|
193
|
+
* }
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* Response:
|
|
197
|
+
* ```json
|
|
198
|
+
* {
|
|
199
|
+
* "success": true,
|
|
200
|
+
* "provider": "github"
|
|
201
|
+
* }
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* // app/api/integrate/oauth/disconnect/route.ts
|
|
207
|
+
* import { createNextOAuthHandler } from 'integrate-sdk';
|
|
208
|
+
*
|
|
209
|
+
* const handler = createNextOAuthHandler({
|
|
210
|
+
* providers: {
|
|
211
|
+
* github: {
|
|
212
|
+
* clientId: process.env.GITHUB_CLIENT_ID!,
|
|
213
|
+
* clientSecret: process.env.GITHUB_CLIENT_SECRET!,
|
|
214
|
+
* },
|
|
215
|
+
* },
|
|
216
|
+
* });
|
|
217
|
+
*
|
|
218
|
+
* export const POST = handler.disconnect;
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
disconnect(req: NextRequest): Promise<NextResponse>;
|
|
178
222
|
/**
|
|
179
223
|
* Create unified route handlers for catch-all route
|
|
180
224
|
*
|
|
@@ -202,7 +246,7 @@ export declare function createNextOAuthHandler(config: OAuthHandlerConfig): {
|
|
|
202
246
|
*/
|
|
203
247
|
createRoutes(): {
|
|
204
248
|
/**
|
|
205
|
-
* POST handler for authorize and
|
|
249
|
+
* POST handler for authorize, callback, and disconnect actions
|
|
206
250
|
*/
|
|
207
251
|
POST(req: NextRequest, context: {
|
|
208
252
|
params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,KAAK,WAAW,GAAG,GAAG,CAAC;AACvB,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,KAAK,WAAW,GAAG,GAAG,CAAC;AACvB,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB;IAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;mBACkB,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAcxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;kBACiB,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAcvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;gBACe,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;oBACmB,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCzD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;;QAGC;;WAEG;kBAEI,WAAW,WACP;YAAE,MAAM,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,GACpE,OAAO,CAAC,YAAY,CAAC;QAuBxB;;WAEG;iBAEI,WAAW,WACP;YAAE,MAAM,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,GACpE,OAAO,CAAC,YAAY,CAAC;;EAmB/B"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { OAuthWindowManager, sendCallbackToOpener } from "./oauth/window-manager
|
|
|
9
9
|
export { generateCodeVerifier, generateCodeChallenge, generateState } from "./oauth/pkce.js";
|
|
10
10
|
export type { OAuthFlowConfig, PopupOptions, AuthStatus, PendingAuth, AuthorizationUrlResponse, OAuthCallbackResponse, OAuthCallbackParams, OAuthEventType, OAuthEventHandler, AuthStartedEvent, AuthCompleteEvent, AuthErrorEvent, AuthDisconnectEvent, AuthLogoutEvent, } from "./oauth/types.js";
|
|
11
11
|
export { OAuthHandler } from "./adapters/base-handler.js";
|
|
12
|
-
export type { OAuthHandlerConfig, AuthorizeRequest, AuthorizeResponse, CallbackRequest, CallbackResponse, StatusResponse, } from "./adapters/base-handler.js";
|
|
12
|
+
export type { OAuthHandlerConfig, AuthorizeRequest, AuthorizeResponse, CallbackRequest, CallbackResponse, StatusResponse, DisconnectRequest, DisconnectResponse, } from "./adapters/base-handler.js";
|
|
13
13
|
export { createNextOAuthHandler } from "./adapters/nextjs.js";
|
|
14
14
|
export { createOAuthRedirectHandler } from "./adapters/nextjs-oauth-redirect.js";
|
|
15
15
|
export type { OAuthRedirectConfig } from "./adapters/nextjs-oauth-redirect.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,YAAY,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,cAAc,EACd,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC"}
|