mirror of
				https://github.com/Yidadaa/ChatGPT-Next-Web.git
				synced 2025-11-04 16:57:27 +08:00 
			
		
		
		
	Merge branch 'main' of https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web
This commit is contained in:
		@@ -348,7 +348,11 @@ export class ClaudeApi implements LLMApi {
 | 
				
			|||||||
  path(path: string): string {
 | 
					  path(path: string): string {
 | 
				
			||||||
    const accessStore = useAccessStore.getState();
 | 
					    const accessStore = useAccessStore.getState();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let baseUrl: string = accessStore.anthropicUrl;
 | 
					    let baseUrl: string = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (accessStore.useCustomConfig) {
 | 
				
			||||||
 | 
					      baseUrl = accessStore.anthropicUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // if endpoint is empty, use default endpoint
 | 
					    // if endpoint is empty, use default endpoint
 | 
				
			||||||
    if (baseUrl.trim().length === 0) {
 | 
					    if (baseUrl.trim().length === 0) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,13 @@ export class GeminiProApi implements LLMApi {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const accessStore = useAccessStore.getState();
 | 
					    const accessStore = useAccessStore.getState();
 | 
				
			||||||
    let baseUrl = accessStore.googleUrl;
 | 
					
 | 
				
			||||||
 | 
					    let baseUrl = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (accessStore.useCustomConfig) {
 | 
				
			||||||
 | 
					      baseUrl = accessStore.googleUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const isApp = !!getClientConfig()?.isApp;
 | 
					    const isApp = !!getClientConfig()?.isApp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let shouldStream = !!options.config.stream;
 | 
					    let shouldStream = !!options.config.stream;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,9 @@ export class ChatGPTApi implements LLMApi {
 | 
				
			|||||||
  path(path: string): string {
 | 
					  path(path: string): string {
 | 
				
			||||||
    const accessStore = useAccessStore.getState();
 | 
					    const accessStore = useAccessStore.getState();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let baseUrl = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (accessStore.useCustomConfig) {
 | 
				
			||||||
      const isAzure = accessStore.provider === ServiceProvider.Azure;
 | 
					      const isAzure = accessStore.provider === ServiceProvider.Azure;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (isAzure && !accessStore.isValidAzure()) {
 | 
					      if (isAzure && !accessStore.isValidAzure()) {
 | 
				
			||||||
@@ -68,7 +71,12 @@ export class ChatGPTApi implements LLMApi {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let baseUrl = isAzure ? accessStore.azureUrl : accessStore.openaiUrl;
 | 
					      if (isAzure) {
 | 
				
			||||||
 | 
					        path = makeAzurePath(path, accessStore.azureApiVersion);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      baseUrl = isAzure ? accessStore.azureUrl : accessStore.openaiUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (baseUrl.length === 0) {
 | 
					    if (baseUrl.length === 0) {
 | 
				
			||||||
      const isApp = !!getClientConfig()?.isApp;
 | 
					      const isApp = !!getClientConfig()?.isApp;
 | 
				
			||||||
@@ -84,10 +92,6 @@ export class ChatGPTApi implements LLMApi {
 | 
				
			|||||||
      baseUrl = "https://" + baseUrl;
 | 
					      baseUrl = "https://" + baseUrl;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (isAzure) {
 | 
					 | 
				
			||||||
      path = makeAzurePath(path, accessStore.azureApiVersion);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    console.log("[Proxy Endpoint] ", baseUrl, path);
 | 
					    console.log("[Proxy Endpoint] ", baseUrl, path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return [baseUrl, path].join("/");
 | 
					    return [baseUrl, path].join("/");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										280
									
								
								app/constant.ts
									
									
									
									
									
								
							
							
						
						
									
										280
									
								
								app/constant.ts
									
									
									
									
									
								
							@@ -137,259 +137,71 @@ export const KnowledgeCutOffDate: Record<string, string> = {
 | 
				
			|||||||
  "gemini-pro-vision": "2023-12",
 | 
					  "gemini-pro-vision": "2023-12",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const openaiModels = [
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-0301",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-0613",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-1106",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-0125",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-16k",
 | 
				
			||||||
 | 
					  "gpt-3.5-turbo-16k-0613",
 | 
				
			||||||
 | 
					  "gpt-4",
 | 
				
			||||||
 | 
					  "gpt-4-0314",
 | 
				
			||||||
 | 
					  "gpt-4-0613",
 | 
				
			||||||
 | 
					  "gpt-4-1106-preview",
 | 
				
			||||||
 | 
					  "gpt-4-0125-preview",
 | 
				
			||||||
 | 
					  "gpt-4-32k",
 | 
				
			||||||
 | 
					  "gpt-4-32k-0314",
 | 
				
			||||||
 | 
					  "gpt-4-32k-0613",
 | 
				
			||||||
 | 
					  "gpt-4-turbo",
 | 
				
			||||||
 | 
					  "gpt-4-turbo-preview",
 | 
				
			||||||
 | 
					  "gpt-4-vision-preview",
 | 
				
			||||||
 | 
					  "gpt-4-turbo-2024-04-09",
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const googleModels = [
 | 
				
			||||||
 | 
					  "gemini-1.0-pro",
 | 
				
			||||||
 | 
					  "gemini-1.5-pro-latest",
 | 
				
			||||||
 | 
					  "gemini-pro-vision",
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const anthropicModels = [
 | 
				
			||||||
 | 
					  "claude-instant-1.2",
 | 
				
			||||||
 | 
					  "claude-2.0",
 | 
				
			||||||
 | 
					  "claude-2.1",
 | 
				
			||||||
 | 
					  "claude-3-sonnet-20240229",
 | 
				
			||||||
 | 
					  "claude-3-opus-20240229",
 | 
				
			||||||
 | 
					  "claude-3-haiku-20240307",
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const DEFAULT_MODELS = [
 | 
					export const DEFAULT_MODELS = [
 | 
				
			||||||
  {
 | 
					  ...openaiModels.map((name) => ({
 | 
				
			||||||
    name: "gpt-4",
 | 
					    name,
 | 
				
			||||||
    available: true,
 | 
					    available: true,
 | 
				
			||||||
    provider: {
 | 
					    provider: {
 | 
				
			||||||
      id: "openai",
 | 
					      id: "openai",
 | 
				
			||||||
      providerName: "OpenAI",
 | 
					      providerName: "OpenAI",
 | 
				
			||||||
      providerType: "openai",
 | 
					      providerType: "openai",
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  })),
 | 
				
			||||||
  {
 | 
					  ...googleModels.map((name) => ({
 | 
				
			||||||
    name: "gpt-4-0314",
 | 
					    name,
 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-0613",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-32k",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-32k-0314",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-32k-0613",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-turbo",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-turbo-2024-04-09",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-turbo-preview",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-1106-preview",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-0125-preview",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-4-vision-preview",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-0125",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-0301",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-0613",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-1106",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-16k",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gpt-3.5-turbo-16k-0613",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "openai",
 | 
					 | 
				
			||||||
      providerName: "OpenAI",
 | 
					 | 
				
			||||||
      providerType: "openai",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gemini-1.0-pro",
 | 
					 | 
				
			||||||
    available: true,
 | 
					    available: true,
 | 
				
			||||||
    provider: {
 | 
					    provider: {
 | 
				
			||||||
      id: "google",
 | 
					      id: "google",
 | 
				
			||||||
      providerName: "Google",
 | 
					      providerName: "Google",
 | 
				
			||||||
      providerType: "google",
 | 
					      providerType: "google",
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  })),
 | 
				
			||||||
  {
 | 
					  ...anthropicModels.map((name) => ({
 | 
				
			||||||
    name: "gemini-1.5-pro-latest",
 | 
					    name,
 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "google",
 | 
					 | 
				
			||||||
      providerName: "Google",
 | 
					 | 
				
			||||||
      providerType: "google",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "gemini-pro-vision",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "google",
 | 
					 | 
				
			||||||
      providerName: "Google",
 | 
					 | 
				
			||||||
      providerType: "google",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-instant-1.2",
 | 
					 | 
				
			||||||
    available: true,
 | 
					    available: true,
 | 
				
			||||||
    provider: {
 | 
					    provider: {
 | 
				
			||||||
      id: "anthropic",
 | 
					      id: "anthropic",
 | 
				
			||||||
      providerName: "Anthropic",
 | 
					      providerName: "Anthropic",
 | 
				
			||||||
      providerType: "anthropic",
 | 
					      providerType: "anthropic",
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  })),
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-2.0",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "anthropic",
 | 
					 | 
				
			||||||
      providerName: "Anthropic",
 | 
					 | 
				
			||||||
      providerType: "anthropic",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-2.1",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "anthropic",
 | 
					 | 
				
			||||||
      providerName: "Anthropic",
 | 
					 | 
				
			||||||
      providerType: "anthropic",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-3-opus-20240229",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "anthropic",
 | 
					 | 
				
			||||||
      providerName: "Anthropic",
 | 
					 | 
				
			||||||
      providerType: "anthropic",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-3-sonnet-20240229",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "anthropic",
 | 
					 | 
				
			||||||
      providerName: "Anthropic",
 | 
					 | 
				
			||||||
      providerType: "anthropic",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    name: "claude-3-haiku-20240307",
 | 
					 | 
				
			||||||
    available: true,
 | 
					 | 
				
			||||||
    provider: {
 | 
					 | 
				
			||||||
      id: "anthropic",
 | 
					 | 
				
			||||||
      providerName: "Anthropic",
 | 
					 | 
				
			||||||
      providerType: "anthropic",
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
] as const;
 | 
					] as const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const CHAT_PAGE_SIZE = 15;
 | 
					export const CHAT_PAGE_SIZE = 15;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,26 +63,26 @@ export function createWebDavClient(store: SyncStore) {
 | 
				
			|||||||
      };
 | 
					      };
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    path(path: string, proxyUrl: string = "") {
 | 
					    path(path: string, proxyUrl: string = "") {
 | 
				
			||||||
      // if (!path.endsWith("/")) {
 | 
					 | 
				
			||||||
      //   path += "/";
 | 
					 | 
				
			||||||
      // }
 | 
					 | 
				
			||||||
      if (path.startsWith("/")) {
 | 
					      if (path.startsWith("/")) {
 | 
				
			||||||
        path = path.slice(1);
 | 
					        path = path.slice(1);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (proxyUrl.length > 0 && !proxyUrl.endsWith("/")) {
 | 
					      if (proxyUrl.endsWith("/")) {
 | 
				
			||||||
        proxyUrl += "/";
 | 
					        proxyUrl = proxyUrl.slice(0, -1);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      let url;
 | 
					      let url;
 | 
				
			||||||
      if (proxyUrl.length > 0 || proxyUrl === "/") {
 | 
					      const pathPrefix = "/api/webdav/";
 | 
				
			||||||
        let u = new URL(proxyUrl + "api/webdav/" + path);
 | 
					
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        let u = new URL(proxyUrl + pathPrefix + path);
 | 
				
			||||||
        // add query params
 | 
					        // add query params
 | 
				
			||||||
        u.searchParams.append("endpoint", config.endpoint);
 | 
					        u.searchParams.append("endpoint", config.endpoint);
 | 
				
			||||||
        url = u.toString();
 | 
					        url = u.toString();
 | 
				
			||||||
      } else {
 | 
					      } catch (e) {
 | 
				
			||||||
        url = "/api/upstash/" + path + "?endpoint=" + config.endpoint;
 | 
					        url = pathPrefix + path + "?endpoint=" + config.endpoint;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return url;
 | 
					      return url;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user