kunkun/packages/api/src/version.ts
Huakun Shen e21bef154e
Feature: install extension from JSR (#53)
* chore: upgrade many dependencies

* fix: @kksh/svelte, migrate 5

* refactor: move dialog plugin code out of ui package

* chore: disable check-types in api build.ts

Causing build error in kunkun-services

* feat: add jsr package

* feat: implement jsr package with API and parsers for jsr

* feat: modify API, add function to extract linked github repo from html

* perf: improve jsr package API with @hk/jsr-client

* feat: add jsr package version table for publishing extension

* fix: dependency and type incompatibility in ui package

* feat: add validateJsrPackageAsKunkunExtension function in jsr package

* feat: improve jsr table

* feat: add a ElementAlert component

* feat: update ElementAlert UI

* chore: update deno.lock

* chore: enable submodule support in jsr-publish workflow

* chore: bump version to 0.0.48 in jsr.json

* feat: regenerate supabase types, add author_id

* Move @kksh/jsr package to @kksh/api

* update deno.lock

* chore: change @tauri-plugin/plugin-upload version from git url to version

* feat: add rounded corner for ElementAlert

* chore: update deno.lock

* chore: bump version to 0.0.51 in jsr.json and update import paths for ExtPackageJson

* feat: add publishExtJSR API to SupabaseAPI

* refactor: replace "@hk/jsr-client" from jsr with @huakunshen/jsr-client from npm

* chore: update  deno.lock

* feat: update validateJsrPackageAsKunkunExtension return type

* refactor: improve error message

* feat: add metadata to ext_publish, update database.types.ts

* feat: add models module for Supabase with ExtPublishMetadata and source type enumeration

* feat: support installing JSR package as extension

Since JSR overwrites package.json with its own code to be compatible with npm, causing manifest parsing to be impossible. I add metadata field to ext_publish.
When extension comes from jsr, kunkun app will fetch the original package.json from jsr and overwrite the one modified by jsr.

* fix: add missing dep @tauri-apps/plugin-upload to @kksh/extension

* chore: update version to 0.0.52 in version.ts
2025-01-10 08:23:18 -05:00

41 lines
1.3 KiB
TypeScript

import { clean, gte, parse, satisfies, sort } from "semver"
import * as v from "valibot"
export const breakingChangesVersionCheckpoints = [
{ version: "0.0.1", changelog: "" },
{ version: "0.0.12-beta.0", changelog: "" },
{ version: "0.0.12-beta.1", changelog: "" },
{
version: "0.0.17",
changelog: "New Custom UI loading method, remove base url config requirement."
},
{
version: "0.0.34",
changelog: "Replace comlink with kkrpc, extensions using comlink won't work anymore."
},
{
version: "0.0.45",
changelog: "Upgrade valibot to 1.0.0-beta.8; incompatible with previous version 0.40.0"
}
]
const checkpointVersions = breakingChangesVersionCheckpoints.map((c) => c.version)
const sortedCheckpointVersions = sort(checkpointVersions)
export const version = "0.0.52"
export function isVersionBetween(v: string, start: string, end: string) {
const vCleaned = clean(v)
const startCleaned = clean(start)
const endCleaned = clean(end)
return satisfies(vCleaned!, `${startCleaned} - ${endCleaned}`)
}
/**
* Check if a given version is compatible with this API version
* Basically, this checks if the version is greater than or equal to the last checkpoint version
* @param version
*/
export function isCompatible(version: string) {
return gte(version, v.parse(v.string(), sortedCheckpointVersions.at(-1)))
}