mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-01 21:13:09 +00:00
* store, properties, manifest * interfaces * init and backups * fix init and backups * file models * more versions * dependencies * config except dynamic types * clean up config * remove disabled from non-dynamic vaues * actions * standardize example code block formats * wip: actions refactor Co-authored-by: Jade <Blu-J@users.noreply.github.com> * commit types * fix types * update types * update action request type * update apis * add description to actionrequest * clean up imports * revert package json * chore: Remove the recursive to the index * chore: Remove the other thing I was testing * flatten action requests * update container runtime with new config paradigm * new actions strategy * seems to be working * misc backend fixes * fix fe bugs * only show breakages if breakages * only show success modal if result * don't panic on failed removal * hide config from actions page * polyfill autoconfig * use metadata strategy for actions instead of prev * misc fixes * chore: split the sdk into 2 libs (#2736) * follow sideload progress (#2718) * follow sideload progress * small bugfix * shareReplay with no refcount false * don't wrap sideload progress in RPCResult * dont present toast --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> * chore: Add the initial of the creation of the two sdk * chore: Add in the baseDist * chore: Add in the baseDist * chore: Get the web and the runtime-container running * chore: Remove the empty file * chore: Fix it so the container-runtime works --------- Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com> Co-authored-by: Aiden McClelland <me@drbonez.dev> * misc fixes * update todos * minor clean up * fix link script * update node version in CI test * fix node version syntax in ci build * wip: fixing callbacks * fix sdk makefile dependencies * add support for const outside of main * update apis * don't panic! * Chore: Capture weird case on rpc, and log that * fix procedure id issue * pass input value for dep auto config * handle disabled and warning for actions * chore: Fix for link not having node_modules * sdk fixes * fix build * fix build * fix build --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Jade <Blu-J@users.noreply.github.com> Co-authored-by: J H <dragondef@gmail.com> Co-authored-by: Jade <2364004+Blu-J@users.noreply.github.com> Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
import { PatchDB } from 'patch-db-client'
|
|
import {
|
|
DataModel,
|
|
InstalledState,
|
|
InstallingState,
|
|
PackageDataEntry,
|
|
UpdatingState,
|
|
} from 'src/app/services/patch-db/data-model'
|
|
import { firstValueFrom } from 'rxjs'
|
|
import { T } from '@start9labs/start-sdk'
|
|
|
|
export async function getPackage(
|
|
patch: PatchDB<DataModel>,
|
|
id: string,
|
|
): Promise<PackageDataEntry | undefined> {
|
|
return firstValueFrom(patch.watch$('packageData', id))
|
|
}
|
|
|
|
export async function getAllPackages(
|
|
patch: PatchDB<DataModel>,
|
|
): Promise<DataModel['packageData']> {
|
|
return firstValueFrom(patch.watch$('packageData'))
|
|
}
|
|
|
|
export function getManifest(pkg: PackageDataEntry): T.Manifest {
|
|
if (isInstalled(pkg) || isRemoving(pkg)) return pkg.stateInfo.manifest
|
|
|
|
return (pkg.stateInfo as InstallingState).installingInfo.newManifest
|
|
}
|
|
|
|
export function needsConfig(
|
|
pkgId: string,
|
|
requestedActions: PackageDataEntry['requestedActions'],
|
|
): boolean {
|
|
return Object.values(requestedActions).some(
|
|
r =>
|
|
r.active &&
|
|
r.request.packageId === pkgId &&
|
|
r.request.actionId === 'config',
|
|
)
|
|
}
|
|
|
|
export function isInstalled(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstalledState> {
|
|
return pkg.stateInfo.state === 'installed'
|
|
}
|
|
|
|
export function isRemoving(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstalledState> {
|
|
return pkg.stateInfo.state === 'removing'
|
|
}
|
|
|
|
export function isInstalling(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstallingState> {
|
|
return pkg.stateInfo.state === 'installing'
|
|
}
|
|
|
|
export function isRestoring(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<InstallingState> {
|
|
return pkg.stateInfo.state === 'restoring'
|
|
}
|
|
|
|
export function isUpdating(
|
|
pkg: PackageDataEntry,
|
|
): pkg is PackageDataEntry<UpdatingState> {
|
|
return pkg.stateInfo.state === 'updating'
|
|
}
|