57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type { Schema } from './common'
|
|
import { AppService, FlowService, type Flow, type Script } from './gen'
|
|
import { encodeState } from './utils'
|
|
|
|
export function scriptToHubUrl(
|
|
content: string,
|
|
summary: string,
|
|
description: string,
|
|
kind: Script.kind,
|
|
language: Script.language,
|
|
schema: Schema | any,
|
|
lock: string | undefined
|
|
): URL {
|
|
const url = new URL('https://hub.windmill.dev/scripts/add')
|
|
url.hash = encodeState({ content, summary, description, kind, language, schema, lock })
|
|
|
|
return url
|
|
}
|
|
|
|
export async function loadHubFlows() {
|
|
try {
|
|
const flows = (await FlowService.listHubFlows()).flows ?? []
|
|
const processed = flows.sort((a, b) => b.votes - a.votes)
|
|
return processed
|
|
} catch {
|
|
console.error('Hub is not available')
|
|
}
|
|
}
|
|
|
|
export async function loadHubApps() {
|
|
try {
|
|
const apps = (await AppService.listHubApps()).apps ?? []
|
|
const processed = apps.sort((a, b) => b.votes - a.votes)
|
|
return processed
|
|
} catch {
|
|
console.error('Hub is not available')
|
|
}
|
|
}
|
|
|
|
export function flowToHubUrl(flow: Flow): URL {
|
|
const url = new URL('https://hub.windmill.dev/flows/add')
|
|
const openFlow = {
|
|
value: flow.value,
|
|
summary: flow.summary,
|
|
description: flow.description,
|
|
schema: flow.schema
|
|
}
|
|
url.searchParams.append('flow', encodeState(openFlow))
|
|
return url
|
|
}
|
|
|
|
export function appToHubUrl(staticApp: any): URL {
|
|
const url = new URL('https://hub.windmill.dev/apps/add')
|
|
url.searchParams.append('app', encodeState(staticApp))
|
|
return url
|
|
}
|