integrate-sdk 0.8.12 → 0.8.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/adapters/auto-routes.js +28 -0
- package/dist/adapters/base-handler.d.ts.map +1 -1
- package/dist/adapters/index.js +28 -0
- package/dist/adapters/nextjs.js +28 -0
- package/dist/adapters/node.js +28 -0
- package/dist/adapters/session-detector.js +28 -0
- package/dist/adapters/svelte-kit.js +28 -0
- package/dist/adapters/tanstack-start.js +28 -0
- package/dist/index.js +28 -0
- package/dist/oauth.js +28 -0
- package/dist/server.js +28 -0
- package/dist/src/adapters/base-handler.d.ts.map +1 -1
- package/dist/src/oauth/manager.d.ts +12 -0
- package/dist/src/oauth/manager.d.ts.map +1 -1
- package/dist/src/oauth/window-manager.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
package/dist/adapters/nextjs.js
CHANGED
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
package/dist/adapters/node.js
CHANGED
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7202,6 +7224,12 @@ class OAuthHandler {
|
|
|
7202
7224
|
}
|
|
7203
7225
|
const data = await response.json();
|
|
7204
7226
|
const result = data;
|
|
7227
|
+
if (!result.authorizationUrl) {
|
|
7228
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7229
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7230
|
+
}
|
|
7231
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7232
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7205
7233
|
if (authorizeRequest.codeVerifier) {
|
|
7206
7234
|
try {
|
|
7207
7235
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
package/dist/index.js
CHANGED
|
@@ -534,6 +534,7 @@ class OAuthWindowManager {
|
|
|
534
534
|
if (!isBrowser()) {
|
|
535
535
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
536
536
|
}
|
|
537
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
537
538
|
window.location.href = url;
|
|
538
539
|
}
|
|
539
540
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -718,7 +719,13 @@ class OAuthManager {
|
|
|
718
719
|
};
|
|
719
720
|
this.pendingAuths.set(state, pendingAuth);
|
|
720
721
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
722
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
721
723
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
724
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
725
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
726
|
+
throw new Error("Received empty authorization URL from server");
|
|
727
|
+
}
|
|
728
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
722
729
|
if (this.flowConfig.mode === "popup") {
|
|
723
730
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
724
731
|
try {
|
|
@@ -729,6 +736,7 @@ class OAuthManager {
|
|
|
729
736
|
throw error;
|
|
730
737
|
}
|
|
731
738
|
} else {
|
|
739
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
732
740
|
this.windowManager.openRedirect(authUrl);
|
|
733
741
|
}
|
|
734
742
|
}
|
|
@@ -923,6 +931,7 @@ class OAuthManager {
|
|
|
923
931
|
return;
|
|
924
932
|
}
|
|
925
933
|
if (this.skipLocalStorage) {
|
|
934
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
926
935
|
return;
|
|
927
936
|
}
|
|
928
937
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -943,6 +952,9 @@ class OAuthManager {
|
|
|
943
952
|
return;
|
|
944
953
|
}
|
|
945
954
|
}
|
|
955
|
+
if (this.skipLocalStorage) {
|
|
956
|
+
return;
|
|
957
|
+
}
|
|
946
958
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
947
959
|
try {
|
|
948
960
|
const key = `integrate_token_${provider}`;
|
|
@@ -1089,6 +1101,16 @@ class OAuthManager {
|
|
|
1089
1101
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1090
1102
|
}
|
|
1091
1103
|
const data = await response.json();
|
|
1104
|
+
if (!data.authorizationUrl) {
|
|
1105
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1106
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1107
|
+
}
|
|
1108
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1109
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1110
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1111
|
+
}
|
|
1112
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1113
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1092
1114
|
return data.authorizationUrl;
|
|
1093
1115
|
}
|
|
1094
1116
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7573,6 +7595,12 @@ class OAuthHandler {
|
|
|
7573
7595
|
}
|
|
7574
7596
|
const data = await response.json();
|
|
7575
7597
|
const result = data;
|
|
7598
|
+
if (!result.authorizationUrl) {
|
|
7599
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7600
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7601
|
+
}
|
|
7602
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7603
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7576
7604
|
if (authorizeRequest.codeVerifier) {
|
|
7577
7605
|
try {
|
|
7578
7606
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
package/dist/oauth.js
CHANGED
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -7391,6 +7413,12 @@ class OAuthHandler {
|
|
|
7391
7413
|
}
|
|
7392
7414
|
const data = await response.json();
|
|
7393
7415
|
const result = data;
|
|
7416
|
+
if (!result.authorizationUrl) {
|
|
7417
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
7418
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
7419
|
+
}
|
|
7420
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
7421
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
7394
7422
|
if (authorizeRequest.codeVerifier) {
|
|
7395
7423
|
try {
|
|
7396
7424
|
const { storeCodeVerifier: storeCodeVerifier2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
package/dist/server.js
CHANGED
|
@@ -518,6 +518,7 @@ class OAuthWindowManager {
|
|
|
518
518
|
if (!isBrowser()) {
|
|
519
519
|
throw new Error("OAuthWindowManager.openRedirect() can only be used in browser environments");
|
|
520
520
|
}
|
|
521
|
+
console.log("[OAuthWindowManager] Redirecting to:", url.substring(0, 100) + (url.length > 100 ? "..." : ""));
|
|
521
522
|
window.location.href = url;
|
|
522
523
|
}
|
|
523
524
|
listenForCallback(mode, timeoutMs = 5 * 60 * 1000) {
|
|
@@ -685,7 +686,13 @@ class OAuthManager {
|
|
|
685
686
|
};
|
|
686
687
|
this.pendingAuths.set(state, pendingAuth);
|
|
687
688
|
this.savePendingAuthToStorage(state, pendingAuth);
|
|
689
|
+
console.log("[OAuth] Requesting authorization URL, flow mode:", this.flowConfig.mode);
|
|
688
690
|
const authUrl = await this.getAuthorizationUrl(provider, state, codeChallenge, config.redirectUri, codeVerifier);
|
|
691
|
+
console.log("[OAuth] Received authorization URL, length:", authUrl?.length);
|
|
692
|
+
if (!authUrl || authUrl.trim() === "") {
|
|
693
|
+
throw new Error("Received empty authorization URL from server");
|
|
694
|
+
}
|
|
695
|
+
console.log("[OAuth] Opening authorization URL, mode:", this.flowConfig.mode);
|
|
689
696
|
if (this.flowConfig.mode === "popup") {
|
|
690
697
|
this.windowManager.openPopup(authUrl, this.flowConfig.popupOptions);
|
|
691
698
|
try {
|
|
@@ -696,6 +703,7 @@ class OAuthManager {
|
|
|
696
703
|
throw error;
|
|
697
704
|
}
|
|
698
705
|
} else {
|
|
706
|
+
console.log("[OAuth] Redirecting to authorization URL:", authUrl.substring(0, 100) + (authUrl.length > 100 ? "..." : ""));
|
|
699
707
|
this.windowManager.openRedirect(authUrl);
|
|
700
708
|
}
|
|
701
709
|
}
|
|
@@ -890,6 +898,7 @@ class OAuthManager {
|
|
|
890
898
|
return;
|
|
891
899
|
}
|
|
892
900
|
if (this.skipLocalStorage) {
|
|
901
|
+
console.log(`[OAuth] Token for ${provider} stored in memory only (skipLocalStorage: true). Configure setProviderToken/getProviderToken callbacks for persistence.`);
|
|
893
902
|
return;
|
|
894
903
|
}
|
|
895
904
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
@@ -910,6 +919,9 @@ class OAuthManager {
|
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (this.skipLocalStorage) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
913
925
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
914
926
|
try {
|
|
915
927
|
const key = `integrate_token_${provider}`;
|
|
@@ -1056,6 +1068,16 @@ class OAuthManager {
|
|
|
1056
1068
|
throw new Error(`Failed to get authorization URL: ${error}`);
|
|
1057
1069
|
}
|
|
1058
1070
|
const data = await response.json();
|
|
1071
|
+
if (!data.authorizationUrl) {
|
|
1072
|
+
console.error("[OAuth] Authorization URL is missing from response:", data);
|
|
1073
|
+
throw new Error("Authorization URL is missing from server response");
|
|
1074
|
+
}
|
|
1075
|
+
if (typeof data.authorizationUrl !== "string" || data.authorizationUrl.trim() === "") {
|
|
1076
|
+
console.error("[OAuth] Invalid authorization URL received:", data.authorizationUrl);
|
|
1077
|
+
throw new Error("Invalid authorization URL received from server");
|
|
1078
|
+
}
|
|
1079
|
+
const urlPreview = data.authorizationUrl.length > 100 ? data.authorizationUrl.substring(0, 100) + "..." : data.authorizationUrl;
|
|
1080
|
+
console.log("[OAuth] Received authorization URL from API route:", urlPreview);
|
|
1059
1081
|
return data.authorizationUrl;
|
|
1060
1082
|
}
|
|
1061
1083
|
async exchangeCodeForToken(provider, code, codeVerifier, state) {
|
|
@@ -2041,6 +2063,12 @@ class OAuthHandler {
|
|
|
2041
2063
|
}
|
|
2042
2064
|
const data = await response.json();
|
|
2043
2065
|
const result = data;
|
|
2066
|
+
if (!result.authorizationUrl) {
|
|
2067
|
+
console.error("[OAuth] MCP server did not return authorizationUrl:", data);
|
|
2068
|
+
throw new Error("MCP server failed to return authorization URL");
|
|
2069
|
+
}
|
|
2070
|
+
const urlPreview = result.authorizationUrl.length > 100 ? result.authorizationUrl.substring(0, 100) + "..." : result.authorizationUrl;
|
|
2071
|
+
console.log("[OAuth] Generated authorization URL:", urlPreview);
|
|
2044
2072
|
if (authorizeRequest.codeVerifier) {
|
|
2045
2073
|
try {
|
|
2046
2074
|
const { storeCodeVerifier } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -187,6 +187,12 @@ export declare class OAuthManager {
|
|
|
187
187
|
clearAllPendingAuths(): void;
|
|
188
188
|
/**
|
|
189
189
|
* Save provider token to database (via callback) or localStorage
|
|
190
|
+
*
|
|
191
|
+
* Storage decision logic:
|
|
192
|
+
* 1. If setTokenCallback is configured → use callback exclusively (no localStorage)
|
|
193
|
+
* 2. If skipLocalStorage is true → skip localStorage (token only in memory)
|
|
194
|
+
* 3. Otherwise → use localStorage (when callbacks are NOT configured AND skipLocalStorage is false)
|
|
195
|
+
*
|
|
190
196
|
* @param provider - Provider name (e.g., 'github', 'gmail')
|
|
191
197
|
* @param tokenData - Token data to store, or null to delete
|
|
192
198
|
* @param context - Optional user context (userId, organizationId, etc.) for multi-tenant apps
|
|
@@ -194,6 +200,12 @@ export declare class OAuthManager {
|
|
|
194
200
|
private saveProviderToken;
|
|
195
201
|
/**
|
|
196
202
|
* Load provider token from database (via callback) or localStorage
|
|
203
|
+
*
|
|
204
|
+
* Loading decision logic (mirrors saveProviderToken):
|
|
205
|
+
* 1. If getTokenCallback is configured → use callback exclusively (no localStorage)
|
|
206
|
+
* 2. If skipLocalStorage is true → skip localStorage (return undefined)
|
|
207
|
+
* 3. Otherwise → use localStorage (when callbacks are NOT configured AND skipLocalStorage is false)
|
|
208
|
+
*
|
|
197
209
|
* Returns undefined if not found or invalid
|
|
198
210
|
*/
|
|
199
211
|
private loadProviderToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/oauth/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EACV,eAAe,EAEf,UAAU,EAGV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAqH;IAC9I,OAAO,CAAC,gBAAgB,CAAC,CAAwG;IACjI,OAAO,CAAC,mBAAmB,CAAC,CAAmE;IAC/F,OAAO,CAAC,gBAAgB,CAAU;gBAGhC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACrC,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE;QACf,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAAC;QACtI,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACzH,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACvF,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/oauth/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-manager.d.ts","sourceRoot":"","sources":["../../../src/oauth/window-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASpE;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,iBAAiB,CAA8C;IAEvE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IA6C7D;;;;;;;;;;OAUG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"window-manager.d.ts","sourceRoot":"","sources":["../../../src/oauth/window-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASpE;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,iBAAiB,CAA8C;IAEvE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IA6C7D;;;;;;;;;;OAUG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAS/B;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CACf,IAAI,EAAE,OAAO,GAAG,UAAU,EAC1B,SAAS,GAAE,MAAsB,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAQ/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkE9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiEjC;;OAEG;IACH,OAAO,CAAC,OAAO;IAiBf;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAwBP"}
|