Files
dify/web/service/plugins.ts
Stephen Zhou a84c2d36a3 style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

95 lines
2.7 KiB
TypeScript

import type { PluginInfoFromMarketPlace } from '@dify/contracts/marketplace'
import type {
Dependency,
InstallPackageResponse,
PluginManifestInMarket,
TaskStatusResponse,
UninstallPluginResponse,
updatePackageResponse,
uploadGitHubResponse,
} from '@/app/components/plugins/types'
import { get, getMarketplace, post, upload } from './base'
export const uploadFile = async (file: File, isBundle: boolean) => {
const formData = new FormData()
formData.append(isBundle ? 'bundle' : 'pkg', file)
return upload(
{
xhr: new XMLHttpRequest(),
data: formData,
},
false,
`/workspaces/current/plugin/upload/${isBundle ? 'bundle' : 'pkg'}`,
)
}
export const updateFromMarketPlace = async (body: Record<string, string>) => {
return post<InstallPackageResponse>('/workspaces/current/plugin/upgrade/marketplace', {
body,
})
}
export const updateFromGitHub = async (
repoUrl: string,
selectedVersion: string,
selectedPackage: string,
originalPlugin: string,
newPlugin: string,
) => {
return post<updatePackageResponse>('/workspaces/current/plugin/upgrade/github', {
body: {
repo: repoUrl,
version: selectedVersion,
package: selectedPackage,
original_plugin_unique_identifier: originalPlugin,
new_plugin_unique_identifier: newPlugin,
},
})
}
export const uploadGitHub = async (
repoUrl: string,
selectedVersion: string,
selectedPackage: string,
) => {
return post<uploadGitHubResponse>('/workspaces/current/plugin/upload/github', {
body: {
repo: repoUrl,
version: selectedVersion,
package: selectedPackage,
},
})
}
export const fetchManifestFromMarketPlace = async (uniqueIdentifier: string) => {
return getMarketplace<{ data: { plugin: PluginManifestInMarket; version: { version: string } } }>(
`/plugins/identifier?unique_identifier=${uniqueIdentifier}`,
)
}
export const fetchBundleInfoFromMarketPlace = async ({
org,
name,
version,
}: Record<string, string>) => {
return getMarketplace<{ data: { version: { dependencies: Dependency[] } } }>(
`/bundles/${org}/${name}/${version}`,
)
}
export const fetchPluginInfoFromMarketPlace = async ({ org, name }: Record<string, string>) => {
return getMarketplace<{
data: { plugin: PluginInfoFromMarketPlace; version: { version: string } }
}>(`/plugins/${org}/${name}`)
}
export const checkTaskStatus = async (taskId: string) => {
return get<TaskStatusResponse>(`/workspaces/current/plugin/tasks/${taskId}`)
}
export const uninstallPlugin = async (pluginId: string) => {
return post<UninstallPluginResponse>('/workspaces/current/plugin/uninstall', {
body: { plugin_installation_id: pluginId },
})
}