mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-11 17:29:44 +00:00
fix: install and upgrade in store for jsr packages
This commit is contained in:
parent
130608cd92
commit
7e811440b8
@ -22,7 +22,11 @@ function createExtensionsStore(): Writable<ExtPackageJsonExtra[]> & {
|
|||||||
registerNewExtensionByPath: (extPath: string) => Promise<ExtPackageJsonExtra>
|
registerNewExtensionByPath: (extPath: string) => Promise<ExtPackageJsonExtra>
|
||||||
uninstallStoreExtensionByIdentifier: (identifier: string) => Promise<ExtPackageJsonExtra>
|
uninstallStoreExtensionByIdentifier: (identifier: string) => Promise<ExtPackageJsonExtra>
|
||||||
uninstallDevExtensionByIdentifier: (identifier: string) => Promise<ExtPackageJsonExtra>
|
uninstallDevExtensionByIdentifier: (identifier: string) => Promise<ExtPackageJsonExtra>
|
||||||
upgradeStoreExtension: (identifier: string, tarballUrl: string) => Promise<ExtPackageJsonExtra>
|
upgradeStoreExtension: (
|
||||||
|
identifier: string,
|
||||||
|
tarballUrl: string,
|
||||||
|
extras?: { overwritePackageJson?: string }
|
||||||
|
) => Promise<ExtPackageJsonExtra>
|
||||||
} {
|
} {
|
||||||
const store = writable<ExtPackageJsonExtra[]>([])
|
const store = writable<ExtPackageJsonExtra[]>([])
|
||||||
|
|
||||||
@ -176,12 +180,13 @@ function createExtensionsStore(): Writable<ExtPackageJsonExtra[]> & {
|
|||||||
|
|
||||||
async function upgradeStoreExtension(
|
async function upgradeStoreExtension(
|
||||||
identifier: string,
|
identifier: string,
|
||||||
tarballUrl: string
|
tarballUrl: string,
|
||||||
|
extras?: { overwritePackageJson?: string }
|
||||||
): Promise<ExtPackageJsonExtra> {
|
): Promise<ExtPackageJsonExtra> {
|
||||||
const extsDir = get(appConfig).extensionsInstallDir
|
const extsDir = get(appConfig).extensionsInstallDir
|
||||||
if (!extsDir) throw new Error("Extension path not set")
|
if (!extsDir) throw new Error("Extension path not set")
|
||||||
return uninstallStoreExtensionByIdentifier(identifier).then(() =>
|
return uninstallStoreExtensionByIdentifier(identifier).then(() =>
|
||||||
installFromTarballUrl(tarballUrl, extsDir)
|
installFromTarballUrl(tarballUrl, extsDir, extras)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
import { supabaseAPI } from "@/supabase"
|
import { supabaseAPI } from "@/supabase"
|
||||||
import { goBackOnEscapeClearSearchTerm, goHomeOnEscapeClearSearchTerm } from "@/utils/key"
|
import { goBackOnEscapeClearSearchTerm, goHomeOnEscapeClearSearchTerm } from "@/utils/key"
|
||||||
import { goBack, goHome } from "@/utils/route"
|
import { goBack, goHome } from "@/utils/route"
|
||||||
import { SBExt } from "@kksh/api/supabase"
|
import { SBExt, type Tables } from "@kksh/api/supabase"
|
||||||
import { isUpgradable } from "@kksh/extension"
|
import { isUpgradable } from "@kksh/extension"
|
||||||
|
import type { ExtPublishMetadata } from "@kksh/supabase/models"
|
||||||
import { Button, Command } from "@kksh/svelte5"
|
import { Button, Command } from "@kksh/svelte5"
|
||||||
import { Constants } from "@kksh/ui"
|
import { Constants } from "@kksh/ui"
|
||||||
import { ExtListItem } from "@kksh/ui/extension"
|
import { ExtListItem } from "@kksh/ui/extension"
|
||||||
@ -14,6 +15,7 @@
|
|||||||
import { ArrowLeft } from "lucide-svelte"
|
import { ArrowLeft } from "lucide-svelte"
|
||||||
import type { Snippet } from "svelte"
|
import type { Snippet } from "svelte"
|
||||||
import { toast } from "svelte-sonner"
|
import { toast } from "svelte-sonner"
|
||||||
|
import { getInstallExtras } from "./[identifier]/helper.js"
|
||||||
|
|
||||||
let { data } = $props()
|
let { data } = $props()
|
||||||
const { storeExtList, installedStoreExts, installedExtsMap, upgradableExpsMap } = data
|
const { storeExtList, installedStoreExts, installedExtsMap, upgradableExpsMap } = data
|
||||||
@ -38,10 +40,17 @@
|
|||||||
return toast.error("Fail to get latest extension", {
|
return toast.error("Fail to get latest extension", {
|
||||||
description: res.error.message
|
description: res.error.message
|
||||||
})
|
})
|
||||||
const tarballUrl = supabaseAPI.translateExtensionFilePathToUrl(res.data.tarball_path)
|
const tarballUrl = res.data.tarball_path.startsWith("http")
|
||||||
return extensions.upgradeStoreExtension(ext.identifier, tarballUrl).then((newExt) => {
|
? res.data.tarball_path
|
||||||
toast.success(`${ext.name} Upgraded to ${newExt.version}`)
|
: supabaseAPI.translateExtensionFilePathToUrl(res.data.tarball_path)
|
||||||
})
|
const installExtras = await getInstallExtras(
|
||||||
|
res.data as Tables<"ext_publish"> & { metadata: ExtPublishMetadata }
|
||||||
|
)
|
||||||
|
return extensions
|
||||||
|
.upgradeStoreExtension(ext.identifier, tarballUrl, installExtras)
|
||||||
|
.then((newExt) => {
|
||||||
|
toast.success(`${ext.name} Upgraded to ${newExt.version}`)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function onExtItemInstall(ext: SBExt) {
|
async function onExtItemInstall(ext: SBExt) {
|
||||||
@ -51,10 +60,15 @@
|
|||||||
description: res.error.message
|
description: res.error.message
|
||||||
})
|
})
|
||||||
|
|
||||||
const tarballUrl = supabaseAPI.translateExtensionFilePathToUrl(res.data.tarball_path)
|
const tarballUrl = res.data.tarball_path.startsWith("http")
|
||||||
|
? res.data.tarball_path
|
||||||
|
: supabaseAPI.translateExtensionFilePathToUrl(res.data.tarball_path)
|
||||||
|
const installExtras = await getInstallExtras(
|
||||||
|
res.data as Tables<"ext_publish"> & { metadata: ExtPublishMetadata }
|
||||||
|
)
|
||||||
const installDir = await getExtensionsFolder()
|
const installDir = await getExtensionsFolder()
|
||||||
return extensions
|
return extensions
|
||||||
.installFromTarballUrl(tarballUrl, installDir)
|
.installFromTarballUrl(tarballUrl, installDir, installExtras)
|
||||||
.then(() => toast.success(`Plugin ${ext.name} Installed`))
|
.then(() => toast.success(`Plugin ${ext.name} Installed`))
|
||||||
.then(() =>
|
.then(() =>
|
||||||
supabaseAPI.incrementDownloads({
|
supabaseAPI.incrementDownloads({
|
||||||
|
@ -8,7 +8,7 @@ export async function getInstallExtras(
|
|||||||
if (ext.metadata.sourceType) {
|
if (ext.metadata.sourceType) {
|
||||||
if (ext.metadata.sourceType === "jsr") {
|
if (ext.metadata.sourceType === "jsr") {
|
||||||
if (ext.metadata.source) {
|
if (ext.metadata.source) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${ext.metadata.source}/package.json`)
|
const res = await fetch(`${ext.metadata.source}/package.json`)
|
||||||
const pkgJsonContent = await res.text()
|
const pkgJsonContent = await res.text()
|
||||||
extras.overwritePackageJson = pkgJsonContent
|
extras.overwritePackageJson = pkgJsonContent
|
||||||
|
Loading…
x
Reference in New Issue
Block a user