mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
|
/**
|
||
|
* API definitions for ImportSource plugins.
|
||
|
*/
|
||
|
|
||
|
import { GristTable } from './GristTable';
|
||
|
|
||
|
export interface ImportSourceAPI {
|
||
|
/**
|
||
|
* Returns a promise that resolves to an `ImportSource` which is then passed for import to the
|
||
|
* import modal dialog. `undefined` interrupts the workflow and prevent the modal from showing up,
|
||
|
* but not an empty list of `ImportSourceItem`. Which is a valid import source and is used in
|
||
|
* cases where only options are to be sent to an `ImportProcessAPI` implementation.
|
||
|
*/
|
||
|
getImportSource(): Promise<ImportSource|undefined>;
|
||
|
}
|
||
|
|
||
|
export interface ImportProcessorAPI {
|
||
|
processImport(source: ImportSource): Promise<GristTable[]>;
|
||
|
}
|
||
|
|
||
|
export interface FileContent {
|
||
|
content: any;
|
||
|
name: string;
|
||
|
}
|
||
|
|
||
|
export interface FileListItem {
|
||
|
kind: "fileList";
|
||
|
// TODO: there're might be a better way to send file content. In particular for electron where
|
||
|
// file will then be send from client to server where it shouldn't be really. An idea could be to
|
||
|
// expose something similar to `client/lib/upload.ts` to let plugins create upload entries, and
|
||
|
// then send only uploads ids over the rpc.
|
||
|
files: FileContent[];
|
||
|
}
|
||
|
|
||
|
export interface URL {
|
||
|
kind: "url";
|
||
|
url: string;
|
||
|
}
|
||
|
|
||
|
export interface ImportSource {
|
||
|
item: FileListItem | URL;
|
||
|
|
||
|
/**
|
||
|
* The options are only passed within this plugin, nothing else needs to know how they are
|
||
|
* serialized. Using JSON.stringify/JSON.parse is a simple approach.
|
||
|
*/
|
||
|
options?: string|Buffer;
|
||
|
|
||
|
/**
|
||
|
* The short description that shows in the import dialog after source have been selected.
|
||
|
*/
|
||
|
description?: string;
|
||
|
}
|