generalized the boards and the libraries views.

Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
Akos Kitta
2019-07-30 16:45:04 +02:00
committed by jbicker
parent b24d440e22
commit 3fcf5a6ac9
24 changed files with 303 additions and 443 deletions

View File

@@ -1,5 +1,7 @@
import { ArduinoComponent } from "./arduino-component";
import { JsonRpcServer } from "@theia/core";
import { JsonRpcServer } from '@theia/core';
import { Searchable } from './searchable';
import { Installable } from './installable';
import { ArduinoComponent } from './arduino-component';
export interface AttachedBoardsChangeEvent {
readonly oldState: Readonly<{ boards: Board[] }>;
@@ -18,10 +20,8 @@ export interface BoardsServiceClient {
export const BoardsServicePath = '/services/boards-service';
export const BoardsService = Symbol('BoardsService');
export interface BoardsService extends JsonRpcServer<BoardsServiceClient> {
export interface BoardsService extends Installable<BoardPackage>, Searchable<BoardPackage>, JsonRpcServer<BoardsServiceClient> {
getAttachedBoards(): Promise<{ boards: Board[] }>;
search(options: { query?: string }): Promise<{ items: BoardPackage[] }>;
install(item: BoardPackage): Promise<void>;
}
export interface BoardPackage extends ArduinoComponent {

View File

@@ -0,0 +1,3 @@
export interface Installable<T> {
install(item: T): Promise<void>;
}

View File

@@ -1,20 +1,13 @@
import { ArduinoComponent } from "./arduino-component";
import { Searchable } from './searchable';
import { Installable } from './installable';
import { ArduinoComponent } from './arduino-component';
export const LibraryServicePath = '/services/library-service';
export const LibraryService = Symbol('LibraryService');
export interface LibraryService {
search(options: { query?: string, props?: LibraryService.Search.Props }): Promise<{ items: Library[] }>;
export interface LibraryService extends Installable<Library>, Searchable<Library> {
install(library: Library): Promise<void>;
}
export namespace LibraryService {
export namespace Search {
export interface Props {
[key: string]: string | undefined;
}
}
}
export interface Library extends ArduinoComponent {
readonly builtIn?: boolean;
}

View File

@@ -0,0 +1,11 @@
export interface Searchable<T> {
search(options: Searchable.Options): Promise<{ items: T[] }>;
}
export namespace Searchable {
export interface Options {
/**
* Defaults to empty an empty string.
*/
readonly query?: string;
}
}