integrate-sdk 0.8.15 → 0.8.19

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.
@@ -1,20 +1,4 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
1
  var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
2
  var __export = (target, all) => {
19
3
  for (var name in all)
20
4
  __defProp(target, name, {
@@ -25,7 +9,6 @@ var __export = (target, all) => {
25
9
  });
26
10
  };
27
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
12
 
30
13
  // ../protocol/jsonrpc.ts
31
14
  function parseMessage(message) {
@@ -1732,6 +1715,49 @@ function getEnv(key) {
1732
1715
  return;
1733
1716
  }
1734
1717
 
1718
+ // node.ts
1719
+ function fromNodeHeaders(nodeHeaders) {
1720
+ const webHeaders = new Headers;
1721
+ for (const [key, value] of Object.entries(nodeHeaders)) {
1722
+ if (value !== undefined) {
1723
+ if (Array.isArray(value)) {
1724
+ value.forEach((v) => webHeaders.append(key, v));
1725
+ } else {
1726
+ webHeaders.set(key, value);
1727
+ }
1728
+ }
1729
+ }
1730
+ return webHeaders;
1731
+ }
1732
+ async function toWebRequest(req) {
1733
+ const protocol = req.socket?.encrypted ? "https" : "http";
1734
+ const host = req.headers.host || "localhost";
1735
+ const url = `${protocol}://${host}${req.url || ""}`;
1736
+ const headers = fromNodeHeaders(req.headers);
1737
+ let body;
1738
+ if (req.method && ["POST", "PUT", "PATCH"].includes(req.method)) {
1739
+ body = await new Promise((resolve, reject) => {
1740
+ let data = "";
1741
+ req.on("data", (chunk) => data += chunk);
1742
+ req.on("end", () => resolve(data));
1743
+ req.on("error", reject);
1744
+ });
1745
+ }
1746
+ return new Request(url, {
1747
+ method: req.method,
1748
+ headers,
1749
+ body: body || undefined
1750
+ });
1751
+ }
1752
+ async function sendWebResponse(webRes, nodeRes) {
1753
+ nodeRes.statusCode = webRes.status;
1754
+ webRes.headers.forEach((value, key) => {
1755
+ nodeRes.setHeader(key, value);
1756
+ });
1757
+ const body = await webRes.text();
1758
+ nodeRes.end(body);
1759
+ }
1760
+
1735
1761
  // ../integrations/github.ts
1736
1762
  function githubIntegration(config = {}) {
1737
1763
  const oauth = {
@@ -5858,7 +5884,11 @@ async function getProviderTokens(manualTokens) {
5858
5884
  let tokensString = null;
5859
5885
  if (!tokensString) {
5860
5886
  try {
5861
- const nextHeaders = await import("next/headers").catch(() => null);
5887
+ const getNextHeadersPath = () => {
5888
+ const parts = ["next", "/headers"];
5889
+ return parts.join("");
5890
+ };
5891
+ const nextHeaders = await import(getNextHeadersPath()).catch(() => null);
5862
5892
  if (nextHeaders && typeof nextHeaders.headers === "function") {
5863
5893
  const headersList = await Promise.resolve(nextHeaders.headers());
5864
5894
  tokensString = headersList.get("x-integrate-tokens");
@@ -6471,14 +6501,30 @@ function createMCPServer(config) {
6471
6501
  setProviderToken: config.setProviderToken,
6472
6502
  removeProviderToken: config.removeProviderToken
6473
6503
  });
6474
- const handler = async (request, context) => {
6475
- const method = request.method.toUpperCase();
6504
+ const handler = async (request, contextOrRes, context) => {
6505
+ let nodeRes;
6506
+ let handlerContext;
6507
+ if (contextOrRes && "write" in contextOrRes && "end" in contextOrRes && "setHeader" in contextOrRes) {
6508
+ nodeRes = contextOrRes;
6509
+ handlerContext = context;
6510
+ } else {
6511
+ handlerContext = contextOrRes;
6512
+ }
6513
+ let webRequest;
6514
+ if (request instanceof Request) {
6515
+ webRequest = request;
6516
+ } else if (typeof request.url === "string" && typeof request.method === "string" && typeof request.headers?.get === "function") {
6517
+ webRequest = request;
6518
+ } else {
6519
+ webRequest = await toWebRequest(request);
6520
+ }
6521
+ const method = webRequest.method.toUpperCase();
6476
6522
  let action;
6477
6523
  let segments = [];
6478
- if (context?.params?.action) {
6479
- action = context.params.action;
6480
- } else if (context?.params?.all) {
6481
- const all = context.params.all;
6524
+ if (handlerContext?.params?.action) {
6525
+ action = handlerContext.params.action;
6526
+ } else if (handlerContext?.params?.all) {
6527
+ const all = handlerContext.params.all;
6482
6528
  if (Array.isArray(all)) {
6483
6529
  segments = all;
6484
6530
  } else if (typeof all === "string") {
@@ -6496,7 +6542,7 @@ function createMCPServer(config) {
6496
6542
  action = segments[segments.length - 1];
6497
6543
  }
6498
6544
  } else {
6499
- const url = new URL(request.url);
6545
+ const url = new URL(webRequest.url);
6500
6546
  const pathParts = url.pathname.split("/").filter(Boolean);
6501
6547
  segments = pathParts;
6502
6548
  const oauthIndex = pathParts.indexOf("oauth");
@@ -6510,8 +6556,8 @@ function createMCPServer(config) {
6510
6556
  }
6511
6557
  if (action === "mcp" && method === "POST") {
6512
6558
  try {
6513
- const body = await request.json();
6514
- const authHeader = request.headers.get("authorization");
6559
+ const body = await webRequest.json();
6560
+ const authHeader = webRequest.headers.get("authorization");
6515
6561
  const { OAuthHandler } = await Promise.resolve().then(() => exports_base_handler);
6516
6562
  const oauthHandler = new OAuthHandler({
6517
6563
  providers,
@@ -6534,7 +6580,7 @@ function createMCPServer(config) {
6534
6580
  }
6535
6581
  }
6536
6582
  if (method === "GET" && action === "callback") {
6537
- const url = new URL(request.url);
6583
+ const url = new URL(webRequest.url);
6538
6584
  const searchParams = url.searchParams;
6539
6585
  const code = searchParams.get("code");
6540
6586
  const state = searchParams.get("state");
@@ -6545,11 +6591,11 @@ function createMCPServer(config) {
6545
6591
  if (error) {
6546
6592
  const errorMsg = errorDescription || error;
6547
6593
  console.error("[OAuth Redirect] Error:", errorMsg);
6548
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, request.url));
6594
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
6549
6595
  }
6550
6596
  if (!code || !state) {
6551
6597
  console.error("[OAuth Redirect] Missing code or state parameter");
6552
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, request.url));
6598
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
6553
6599
  }
6554
6600
  let returnUrl = defaultRedirectUrl;
6555
6601
  let frontendOrigin;
@@ -6566,10 +6612,10 @@ function createMCPServer(config) {
6566
6612
  }
6567
6613
  } catch (e) {
6568
6614
  try {
6569
- const referrer = request.headers.get("referer") || request.headers.get("referrer");
6615
+ const referrer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6570
6616
  if (referrer) {
6571
6617
  const referrerUrl = new URL(referrer);
6572
- const currentUrl = new URL(request.url);
6618
+ const currentUrl = new URL(webRequest.url);
6573
6619
  if (referrerUrl.origin === currentUrl.origin) {
6574
6620
  returnUrl = referrerUrl.pathname + referrerUrl.search;
6575
6621
  }
@@ -6604,7 +6650,7 @@ function createMCPServer(config) {
6604
6650
  if (storedFrontendOrigin) {
6605
6651
  frontendOrigin = storedFrontendOrigin;
6606
6652
  } else {
6607
- const referer = request.headers.get("referer") || request.headers.get("referrer");
6653
+ const referer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6608
6654
  if (referer) {
6609
6655
  try {
6610
6656
  const refererUrl = new URL(referer);
@@ -6630,7 +6676,7 @@ function createMCPServer(config) {
6630
6676
  return Response.redirect(frontendUrl);
6631
6677
  } catch (error2) {
6632
6678
  console.error("[OAuth Backend Callback] Error:", error2);
6633
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, request.url));
6679
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
6634
6680
  }
6635
6681
  } else {
6636
6682
  let targetOrigin = frontendOrigin;
@@ -6640,7 +6686,7 @@ function createMCPServer(config) {
6640
6686
  targetOrigin = returnUrlObj.origin;
6641
6687
  returnUrl = returnUrlObj.pathname + returnUrlObj.search;
6642
6688
  } catch {
6643
- const referer = request.headers.get("referer") || request.headers.get("referrer");
6689
+ const referer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6644
6690
  if (referer) {
6645
6691
  try {
6646
6692
  const refererUrl = new URL(referer);
@@ -6651,21 +6697,28 @@ function createMCPServer(config) {
6651
6697
  }
6652
6698
  if (!targetOrigin) {
6653
6699
  console.warn("[OAuth] Could not determine frontend origin for redirect. Using request origin as fallback.");
6654
- targetOrigin = new URL(request.url).origin;
6700
+ targetOrigin = new URL(webRequest.url).origin;
6655
6701
  }
6656
6702
  const targetUrl = new URL(returnUrl, targetOrigin);
6657
6703
  targetUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state }))}`;
6658
6704
  return Response.redirect(targetUrl);
6659
6705
  }
6660
6706
  }
6661
- const handlerContext = { params: { action: action || "callback" } };
6707
+ const finalAction = action || "callback";
6708
+ const finalContext = { params: { action: finalAction } };
6709
+ let response;
6662
6710
  if (method === "POST") {
6663
- return POST(request, handlerContext);
6711
+ response = await POST(webRequest, finalContext);
6664
6712
  } else if (method === "GET") {
6665
- return GET(request, handlerContext);
6713
+ response = await GET(webRequest, finalContext);
6666
6714
  } else {
6667
- return Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
6715
+ response = Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
6668
6716
  }
6717
+ if (nodeRes) {
6718
+ await sendWebResponse(response, nodeRes);
6719
+ return;
6720
+ }
6721
+ return response;
6669
6722
  };
6670
6723
  const serverClient = client;
6671
6724
  serverClient.handler = handler;
@@ -1,20 +1,4 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
1
  var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
2
  var __export = (target, all) => {
19
3
  for (var name in all)
20
4
  __defProp(target, name, {
@@ -25,7 +9,6 @@ var __export = (target, all) => {
25
9
  });
26
10
  };
27
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
12
 
30
13
  // context-cookie.ts
31
14
  var exports_context_cookie = {};
@@ -1,20 +1,4 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
1
  var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
2
  var __export = (target, all) => {
19
3
  for (var name in all)
20
4
  __defProp(target, name, {
@@ -25,7 +9,6 @@ var __export = (target, all) => {
25
9
  });
26
10
  };
27
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
12
 
30
13
  // ../protocol/jsonrpc.ts
31
14
  function parseMessage(message) {
@@ -1732,6 +1715,49 @@ function getEnv(key) {
1732
1715
  return;
1733
1716
  }
1734
1717
 
1718
+ // node.ts
1719
+ function fromNodeHeaders(nodeHeaders) {
1720
+ const webHeaders = new Headers;
1721
+ for (const [key, value] of Object.entries(nodeHeaders)) {
1722
+ if (value !== undefined) {
1723
+ if (Array.isArray(value)) {
1724
+ value.forEach((v) => webHeaders.append(key, v));
1725
+ } else {
1726
+ webHeaders.set(key, value);
1727
+ }
1728
+ }
1729
+ }
1730
+ return webHeaders;
1731
+ }
1732
+ async function toWebRequest(req) {
1733
+ const protocol = req.socket?.encrypted ? "https" : "http";
1734
+ const host = req.headers.host || "localhost";
1735
+ const url = `${protocol}://${host}${req.url || ""}`;
1736
+ const headers = fromNodeHeaders(req.headers);
1737
+ let body;
1738
+ if (req.method && ["POST", "PUT", "PATCH"].includes(req.method)) {
1739
+ body = await new Promise((resolve, reject) => {
1740
+ let data = "";
1741
+ req.on("data", (chunk) => data += chunk);
1742
+ req.on("end", () => resolve(data));
1743
+ req.on("error", reject);
1744
+ });
1745
+ }
1746
+ return new Request(url, {
1747
+ method: req.method,
1748
+ headers,
1749
+ body: body || undefined
1750
+ });
1751
+ }
1752
+ async function sendWebResponse(webRes, nodeRes) {
1753
+ nodeRes.statusCode = webRes.status;
1754
+ webRes.headers.forEach((value, key) => {
1755
+ nodeRes.setHeader(key, value);
1756
+ });
1757
+ const body = await webRes.text();
1758
+ nodeRes.end(body);
1759
+ }
1760
+
1735
1761
  // ../integrations/github.ts
1736
1762
  function githubIntegration(config = {}) {
1737
1763
  const oauth = {
@@ -5858,7 +5884,11 @@ async function getProviderTokens(manualTokens) {
5858
5884
  let tokensString = null;
5859
5885
  if (!tokensString) {
5860
5886
  try {
5861
- const nextHeaders = await import("next/headers").catch(() => null);
5887
+ const getNextHeadersPath = () => {
5888
+ const parts = ["next", "/headers"];
5889
+ return parts.join("");
5890
+ };
5891
+ const nextHeaders = await import(getNextHeadersPath()).catch(() => null);
5862
5892
  if (nextHeaders && typeof nextHeaders.headers === "function") {
5863
5893
  const headersList = await Promise.resolve(nextHeaders.headers());
5864
5894
  tokensString = headersList.get("x-integrate-tokens");
@@ -6471,14 +6501,30 @@ function createMCPServer(config) {
6471
6501
  setProviderToken: config.setProviderToken,
6472
6502
  removeProviderToken: config.removeProviderToken
6473
6503
  });
6474
- const handler = async (request, context) => {
6475
- const method = request.method.toUpperCase();
6504
+ const handler = async (request, contextOrRes, context) => {
6505
+ let nodeRes;
6506
+ let handlerContext;
6507
+ if (contextOrRes && "write" in contextOrRes && "end" in contextOrRes && "setHeader" in contextOrRes) {
6508
+ nodeRes = contextOrRes;
6509
+ handlerContext = context;
6510
+ } else {
6511
+ handlerContext = contextOrRes;
6512
+ }
6513
+ let webRequest;
6514
+ if (request instanceof Request) {
6515
+ webRequest = request;
6516
+ } else if (typeof request.url === "string" && typeof request.method === "string" && typeof request.headers?.get === "function") {
6517
+ webRequest = request;
6518
+ } else {
6519
+ webRequest = await toWebRequest(request);
6520
+ }
6521
+ const method = webRequest.method.toUpperCase();
6476
6522
  let action;
6477
6523
  let segments = [];
6478
- if (context?.params?.action) {
6479
- action = context.params.action;
6480
- } else if (context?.params?.all) {
6481
- const all = context.params.all;
6524
+ if (handlerContext?.params?.action) {
6525
+ action = handlerContext.params.action;
6526
+ } else if (handlerContext?.params?.all) {
6527
+ const all = handlerContext.params.all;
6482
6528
  if (Array.isArray(all)) {
6483
6529
  segments = all;
6484
6530
  } else if (typeof all === "string") {
@@ -6496,7 +6542,7 @@ function createMCPServer(config) {
6496
6542
  action = segments[segments.length - 1];
6497
6543
  }
6498
6544
  } else {
6499
- const url = new URL(request.url);
6545
+ const url = new URL(webRequest.url);
6500
6546
  const pathParts = url.pathname.split("/").filter(Boolean);
6501
6547
  segments = pathParts;
6502
6548
  const oauthIndex = pathParts.indexOf("oauth");
@@ -6510,8 +6556,8 @@ function createMCPServer(config) {
6510
6556
  }
6511
6557
  if (action === "mcp" && method === "POST") {
6512
6558
  try {
6513
- const body = await request.json();
6514
- const authHeader = request.headers.get("authorization");
6559
+ const body = await webRequest.json();
6560
+ const authHeader = webRequest.headers.get("authorization");
6515
6561
  const { OAuthHandler } = await Promise.resolve().then(() => exports_base_handler);
6516
6562
  const oauthHandler = new OAuthHandler({
6517
6563
  providers,
@@ -6534,7 +6580,7 @@ function createMCPServer(config) {
6534
6580
  }
6535
6581
  }
6536
6582
  if (method === "GET" && action === "callback") {
6537
- const url = new URL(request.url);
6583
+ const url = new URL(webRequest.url);
6538
6584
  const searchParams = url.searchParams;
6539
6585
  const code = searchParams.get("code");
6540
6586
  const state = searchParams.get("state");
@@ -6545,11 +6591,11 @@ function createMCPServer(config) {
6545
6591
  if (error) {
6546
6592
  const errorMsg = errorDescription || error;
6547
6593
  console.error("[OAuth Redirect] Error:", errorMsg);
6548
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, request.url));
6594
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
6549
6595
  }
6550
6596
  if (!code || !state) {
6551
6597
  console.error("[OAuth Redirect] Missing code or state parameter");
6552
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, request.url));
6598
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
6553
6599
  }
6554
6600
  let returnUrl = defaultRedirectUrl;
6555
6601
  let frontendOrigin;
@@ -6566,10 +6612,10 @@ function createMCPServer(config) {
6566
6612
  }
6567
6613
  } catch (e) {
6568
6614
  try {
6569
- const referrer = request.headers.get("referer") || request.headers.get("referrer");
6615
+ const referrer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6570
6616
  if (referrer) {
6571
6617
  const referrerUrl = new URL(referrer);
6572
- const currentUrl = new URL(request.url);
6618
+ const currentUrl = new URL(webRequest.url);
6573
6619
  if (referrerUrl.origin === currentUrl.origin) {
6574
6620
  returnUrl = referrerUrl.pathname + referrerUrl.search;
6575
6621
  }
@@ -6604,7 +6650,7 @@ function createMCPServer(config) {
6604
6650
  if (storedFrontendOrigin) {
6605
6651
  frontendOrigin = storedFrontendOrigin;
6606
6652
  } else {
6607
- const referer = request.headers.get("referer") || request.headers.get("referrer");
6653
+ const referer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6608
6654
  if (referer) {
6609
6655
  try {
6610
6656
  const refererUrl = new URL(referer);
@@ -6630,7 +6676,7 @@ function createMCPServer(config) {
6630
6676
  return Response.redirect(frontendUrl);
6631
6677
  } catch (error2) {
6632
6678
  console.error("[OAuth Backend Callback] Error:", error2);
6633
- return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, request.url));
6679
+ return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
6634
6680
  }
6635
6681
  } else {
6636
6682
  let targetOrigin = frontendOrigin;
@@ -6640,7 +6686,7 @@ function createMCPServer(config) {
6640
6686
  targetOrigin = returnUrlObj.origin;
6641
6687
  returnUrl = returnUrlObj.pathname + returnUrlObj.search;
6642
6688
  } catch {
6643
- const referer = request.headers.get("referer") || request.headers.get("referrer");
6689
+ const referer = webRequest.headers.get("referer") || webRequest.headers.get("referrer");
6644
6690
  if (referer) {
6645
6691
  try {
6646
6692
  const refererUrl = new URL(referer);
@@ -6651,21 +6697,28 @@ function createMCPServer(config) {
6651
6697
  }
6652
6698
  if (!targetOrigin) {
6653
6699
  console.warn("[OAuth] Could not determine frontend origin for redirect. Using request origin as fallback.");
6654
- targetOrigin = new URL(request.url).origin;
6700
+ targetOrigin = new URL(webRequest.url).origin;
6655
6701
  }
6656
6702
  const targetUrl = new URL(returnUrl, targetOrigin);
6657
6703
  targetUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state }))}`;
6658
6704
  return Response.redirect(targetUrl);
6659
6705
  }
6660
6706
  }
6661
- const handlerContext = { params: { action: action || "callback" } };
6707
+ const finalAction = action || "callback";
6708
+ const finalContext = { params: { action: finalAction } };
6709
+ let response;
6662
6710
  if (method === "POST") {
6663
- return POST(request, handlerContext);
6711
+ response = await POST(webRequest, finalContext);
6664
6712
  } else if (method === "GET") {
6665
- return GET(request, handlerContext);
6713
+ response = await GET(webRequest, finalContext);
6666
6714
  } else {
6667
- return Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
6715
+ response = Response.json({ error: `Method ${method} not allowed` }, { status: 405 });
6716
+ }
6717
+ if (nodeRes) {
6718
+ await sendWebResponse(response, nodeRes);
6719
+ return;
6668
6720
  }
6721
+ return response;
6669
6722
  };
6670
6723
  const serverClient = client;
6671
6724
  serverClient.handler = handler;
@@ -7631,147 +7684,6 @@ function createNextOAuthHandler(config) {
7631
7684
  }
7632
7685
  var init_nextjs = () => {};
7633
7686
 
7634
- // node.ts
7635
- function fromNodeHeaders(nodeHeaders) {
7636
- const webHeaders = new Headers;
7637
- for (const [key, value] of Object.entries(nodeHeaders)) {
7638
- if (value !== undefined) {
7639
- if (Array.isArray(value)) {
7640
- value.forEach((v) => webHeaders.append(key, v));
7641
- } else {
7642
- webHeaders.set(key, value);
7643
- }
7644
- }
7645
- }
7646
- return webHeaders;
7647
- }
7648
- async function toWebRequest(req) {
7649
- const protocol = req.socket.encrypted ? "https" : "http";
7650
- const host = req.headers.host || "localhost";
7651
- const url = `${protocol}://${host}${req.url}`;
7652
- const headers = fromNodeHeaders(req.headers);
7653
- let body;
7654
- if (req.method && ["POST", "PUT", "PATCH"].includes(req.method)) {
7655
- body = await new Promise((resolve, reject) => {
7656
- let data = "";
7657
- req.on("data", (chunk) => data += chunk);
7658
- req.on("end", () => resolve(data));
7659
- req.on("error", reject);
7660
- });
7661
- }
7662
- return new Request(url, {
7663
- method: req.method,
7664
- headers,
7665
- body: body || undefined
7666
- });
7667
- }
7668
- async function sendWebResponse(webRes, nodeRes) {
7669
- nodeRes.statusCode = webRes.status;
7670
- webRes.headers.forEach((value, key) => {
7671
- nodeRes.setHeader(key, value);
7672
- });
7673
- const body = await webRes.text();
7674
- nodeRes.end(body);
7675
- }
7676
- function toNodeHandler(config) {
7677
- const oauthHandler = new OAuthHandler(config);
7678
- return async (req, res) => {
7679
- try {
7680
- const webReq = await toWebRequest(req);
7681
- const url = new URL(webReq.url);
7682
- const segments = url.pathname.split("/").filter(Boolean);
7683
- const action = segments[segments.length - 1];
7684
- let webRes;
7685
- if (req.method === "POST") {
7686
- if (action === "authorize") {
7687
- const result = await oauthHandler.handleAuthorize(webReq);
7688
- const headers = { "Content-Type": "application/json" };
7689
- if (result.setCookie) {
7690
- headers["Set-Cookie"] = result.setCookie;
7691
- }
7692
- webRes = new Response(JSON.stringify(result), {
7693
- status: 200,
7694
- headers
7695
- });
7696
- } else if (action === "callback") {
7697
- const result = await oauthHandler.handleCallback(webReq);
7698
- const headers = { "Content-Type": "application/json" };
7699
- if (result.clearCookie) {
7700
- headers["Set-Cookie"] = result.clearCookie;
7701
- }
7702
- webRes = new Response(JSON.stringify(result), {
7703
- status: 200,
7704
- headers
7705
- });
7706
- } else if (action === "disconnect") {
7707
- const authHeader = webReq.headers.get("authorization");
7708
- if (!authHeader || !authHeader.startsWith("Bearer ")) {
7709
- webRes = new Response(JSON.stringify({ error: "Missing or invalid Authorization header" }), {
7710
- status: 400,
7711
- headers: { "Content-Type": "application/json" }
7712
- });
7713
- } else {
7714
- const accessToken = authHeader.substring(7);
7715
- const body = await webReq.json();
7716
- const { provider } = body;
7717
- if (!provider) {
7718
- webRes = new Response(JSON.stringify({ error: "Missing provider in request body" }), {
7719
- status: 400,
7720
- headers: { "Content-Type": "application/json" }
7721
- });
7722
- } else {
7723
- const result = await oauthHandler.handleDisconnect({ provider }, accessToken, webReq);
7724
- webRes = new Response(JSON.stringify(result), {
7725
- status: 200,
7726
- headers: { "Content-Type": "application/json" }
7727
- });
7728
- }
7729
- }
7730
- } else {
7731
- webRes = new Response(JSON.stringify({ error: `Unknown action: ${action}` }), {
7732
- status: 404,
7733
- headers: { "Content-Type": "application/json" }
7734
- });
7735
- }
7736
- } else if (req.method === "GET" && action === "status") {
7737
- const provider = url.searchParams.get("provider");
7738
- const authHeader = webReq.headers.get("authorization");
7739
- if (!provider) {
7740
- webRes = new Response(JSON.stringify({ error: "Missing provider query parameter" }), {
7741
- status: 400,
7742
- headers: { "Content-Type": "application/json" }
7743
- });
7744
- } else if (!authHeader || !authHeader.startsWith("Bearer ")) {
7745
- webRes = new Response(JSON.stringify({ error: "Missing or invalid Authorization header" }), {
7746
- status: 400,
7747
- headers: { "Content-Type": "application/json" }
7748
- });
7749
- } else {
7750
- const accessToken = authHeader.substring(7);
7751
- const result = await oauthHandler.handleStatus(provider, accessToken);
7752
- webRes = new Response(JSON.stringify(result), {
7753
- status: 200,
7754
- headers: { "Content-Type": "application/json" }
7755
- });
7756
- }
7757
- } else {
7758
- webRes = new Response(JSON.stringify({ error: `Unknown action: ${action}` }), {
7759
- status: 404,
7760
- headers: { "Content-Type": "application/json" }
7761
- });
7762
- }
7763
- await sendWebResponse(webRes, res);
7764
- } catch (error) {
7765
- console.error("[OAuth Handler] Error:", error);
7766
- const errorRes = new Response(JSON.stringify({ error: error.message || "Internal server error" }), {
7767
- status: 500,
7768
- headers: { "Content-Type": "application/json" }
7769
- });
7770
- await sendWebResponse(errorRes, res);
7771
- }
7772
- };
7773
- }
7774
-
7775
7687
  // solid-start.ts
7776
7688
  init_server();
7777
7689
 
@@ -7806,11 +7718,12 @@ var createTanStackOAuthHandler = toTanStackStartHandler;
7806
7718
  // index.ts
7807
7719
  init_nextjs();
7808
7720
  export {
7721
+ toWebRequest,
7809
7722
  toTanStackStartHandler,
7810
7723
  toSvelteKitHandler,
7811
7724
  toSolidStartHandler,
7812
- toNodeHandler,
7813
7725
  svelteKitHandler,
7726
+ sendWebResponse,
7814
7727
  fromNodeHeaders,
7815
7728
  createTanStackOAuthHandler,
7816
7729
  createNextOAuthHandler,