mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-20 21:49:16 +00:00

* chore: add check-types * refactor: api package file structure update * feat: add headless worker extension API * feat: add HeadlessCmd to manifest schema * feat: make each type of cmds optional in manifest There may be more types of cmds in the future, this makes backward compatibility easier. * feat: implement headless extension command in app A demo cmd implemented as well. * refactor: move api package's API server files * refactor: reformat all
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import {
|
|
CmdTypeEnum,
|
|
CustomUiCmd,
|
|
ExtPackageJsonExtra,
|
|
HeadlessCmd,
|
|
TemplateUiCmd
|
|
} from "@kksh/api/models"
|
|
import type { CommandLaunchers, OnExtCmdSelect } from "@kksh/ui/types"
|
|
import * as v from "valibot"
|
|
import { onCustomUiCmdSelect, onHeadlessCmdSelect, onTemplateUiCmdSelect } from "./ext"
|
|
import { onQuickLinkSelect } from "./quick-links"
|
|
|
|
const onExtCmdSelect: OnExtCmdSelect = (
|
|
ext: ExtPackageJsonExtra,
|
|
cmd: CustomUiCmd | TemplateUiCmd,
|
|
{ isDev, hmr }: { isDev: boolean; hmr: boolean }
|
|
) => {
|
|
switch (cmd.type) {
|
|
case CmdTypeEnum.UiIframe:
|
|
onCustomUiCmdSelect(ext, v.parse(CustomUiCmd, cmd), { isDev, hmr })
|
|
break
|
|
case CmdTypeEnum.UiWorker:
|
|
onTemplateUiCmdSelect(ext, v.parse(TemplateUiCmd, cmd), { isDev, hmr })
|
|
break
|
|
case CmdTypeEnum.HeadlessWorker:
|
|
onHeadlessCmdSelect(ext, v.parse(HeadlessCmd, cmd), { isDev, hmr })
|
|
break
|
|
default:
|
|
console.error("Unknown command type", cmd.type)
|
|
}
|
|
}
|
|
|
|
export const commandLaunchers = { onExtCmdSelect, onQuickLinkSelect } satisfies CommandLaunchers
|