187 lines
3.8 KiB
TypeScript
187 lines
3.8 KiB
TypeScript
import HTML from './HTML'
|
|
import Kernel from './kernel'
|
|
import FlowWindow from './structures/FlowWindow'
|
|
import LibraryLib from './structures/LibraryLib'
|
|
import ProcessLib from './structures/ProcessLib'
|
|
import Components from './system/lib/Components'
|
|
import MIMETypes from './system/lib/MIMETypes'
|
|
|
|
export interface AppClosedEvent extends CustomEvent {
|
|
detail: {
|
|
token: string
|
|
}
|
|
}
|
|
|
|
export enum Errors {
|
|
ENOENT = 'ENOENT',
|
|
EISDIR = 'EISDIR',
|
|
EEXIST = 'EEXIST',
|
|
EPERM = 'EPERM',
|
|
ENOTDIR = 'ENOTDIR',
|
|
EACCES = 'EACCES'
|
|
}
|
|
|
|
export enum Permission {
|
|
USER,
|
|
ELEVATED,
|
|
SYSTEM
|
|
}
|
|
|
|
export interface Directory {
|
|
type: 'directory'
|
|
permission: Permission
|
|
deleteable: boolean
|
|
children: {
|
|
[key: string]: Directory | File
|
|
}
|
|
}
|
|
|
|
export interface File {
|
|
type: 'file'
|
|
permission: Permission
|
|
deleteable: boolean
|
|
content: Buffer
|
|
}
|
|
|
|
export interface FileSystemObject {
|
|
root: Directory
|
|
}
|
|
|
|
export interface AppOpenedEvent extends CustomEvent {
|
|
detail: {
|
|
proc: Process
|
|
token: string
|
|
win: FlowWindow
|
|
}
|
|
}
|
|
|
|
export interface Package {
|
|
url: string
|
|
executable: Executable
|
|
}
|
|
|
|
export interface Executable {
|
|
config: {
|
|
name: string
|
|
type: 'process' | 'library'
|
|
icon?: string
|
|
targetVer: string
|
|
}
|
|
}
|
|
|
|
export type LibraryData = any
|
|
export interface Library extends Executable {
|
|
config: {
|
|
name: string
|
|
type: 'library'
|
|
targetVer: string
|
|
}
|
|
|
|
init: (library: LibraryLib, kernel: Kernel, process: ProcessLib) => void
|
|
data: LibraryData
|
|
}
|
|
|
|
export interface Process extends Executable {
|
|
config: {
|
|
name: string
|
|
type: 'process'
|
|
icon?: string
|
|
targetVer: string
|
|
}
|
|
|
|
run: (process: ProcessLib) => Promise<any>
|
|
}
|
|
|
|
export interface RepoAppMeta {
|
|
name: string
|
|
icon?: string
|
|
targetVer: string
|
|
url: string
|
|
}
|
|
|
|
export interface FlowWindowConfig {
|
|
title: string
|
|
icon: string
|
|
|
|
width?: number
|
|
height?: number
|
|
|
|
canResize?: boolean
|
|
|
|
minWidth?: number
|
|
minHeight?: number
|
|
}
|
|
export interface RepoData {
|
|
name: string
|
|
id: string
|
|
apps: RepoAppMeta[]
|
|
}
|
|
|
|
export interface ProcessInfo {
|
|
pid: number
|
|
name: string
|
|
token: string
|
|
}
|
|
|
|
export interface KernelConfig {
|
|
SERVER: string
|
|
[key: string]: any
|
|
}
|
|
|
|
export interface Stats {
|
|
isDirectory: () => boolean
|
|
isFile: () => boolean
|
|
}
|
|
|
|
export interface FileSystem {
|
|
unlink: (path: string) => Promise<void>
|
|
readFile: (path: string) => Promise<Buffer>
|
|
writeFile: (path: string, content: string | Buffer) => Promise<void>
|
|
mkdir: (path: string) => Promise<void>
|
|
rmdir: (path: string) => Promise<void>
|
|
readdir: (path: string) => Promise<string[]>
|
|
stat: (path: string) => Promise<Stats>
|
|
rename: (oldPath: string, newPath: string) => Promise<void>
|
|
exists: (path: string) => Promise<boolean>
|
|
}
|
|
|
|
export interface ModalData {
|
|
value: boolean
|
|
win: FlowWindow
|
|
}
|
|
export interface WindowManager {
|
|
windowArea: HTML
|
|
windows: FlowWindow[]
|
|
getHighestZIndex: () => number
|
|
createWindow: (config: FlowWindowConfig, process: ProcessLib) => FlowWindow
|
|
createModal: (title: string, text: string, process: ProcessLib) => Promise<ModalData>
|
|
}
|
|
|
|
export interface Launcher {
|
|
element: HTML
|
|
toggle: () => void
|
|
}
|
|
|
|
export interface XOR {
|
|
encode: (str: string) => string
|
|
decode: (str: string) => string
|
|
}
|
|
|
|
export interface StatusBar {
|
|
element: HTML
|
|
updateBatteryIcon: (battery: any) => void
|
|
updateIcon: (ms: number) => void
|
|
}
|
|
|
|
export type LoadedLibrary<T> =
|
|
T extends 'lib/VirtualFS' ? FileSystem :
|
|
T extends 'lib/WindowManager' ? WindowManager :
|
|
T extends 'lib/HTML' ? typeof HTML :
|
|
T extends 'lib/Launcher' ? Launcher :
|
|
T extends 'lib/XOR' ? XOR :
|
|
T extends 'lib/StatusBar' ? StatusBar :
|
|
T extends 'lib/MIMETypes' ? typeof MIMETypes.data :
|
|
T extends 'lib/Components' ? typeof Components.data :
|
|
any
|
|
|
|
export type LibraryPath = 'lib/VirtualFS' | 'lib/WindowManager' | string
|