@gmod/gff
Version:
read and write GFF3 data as streams
231 lines (230 loc) • 8.44 kB
TypeScript
import { GFF3Comment, GFF3Directive, GFF3Feature, GFF3Sequence, GFF3Item } from './util';
/** Parser options */
export interface ParseOptions {
/** Whether to resolve references to derives from features */
disableDerivesFromReferences?: boolean;
/** Whether to parse features, default true */
parseFeatures?: boolean;
/** Whether to parse directives, default false */
parseDirectives?: boolean;
/** Whether to parse comments, default false */
parseComments?: boolean;
/** Whether to parse sequences, default true */
parseSequences?: boolean;
/** Maximum number of GFF3 lines to buffer, default Infinity */
bufferSize?: number;
/** What to do when a feature can't be parsed, defaults to throwing an error */
errorCallback?(errorMessage: string): void;
}
/**
* Parse a stream of text data into a stream of feature, directive, comment,
* an sequence objects.
*/
export declare class GFFTransformer<O extends ParseOptions, T = O extends {
parseFeatures: true;
} ? O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item : GFF3Feature | GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Sequence | GFF3Comment : GFF3Feature | GFF3Sequence : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Feature | GFF3Directive | GFF3Comment : GFF3Feature | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Comment : GFF3Feature : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item : GFF3Feature | GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Sequence | GFF3Comment : GFF3Feature | GFF3Sequence : O extends {
parseFeatures: false;
} ? O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Sequence | GFF3Directive | GFF3Comment : GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Sequence | GFF3Comment : GFF3Sequence : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Directive | GFF3Comment : GFF3Directive : O extends {
parseComments: true;
} ? GFF3Comment : never : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Sequence | GFF3Directive | GFF3Comment : GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Sequence | GFF3Comment : GFF3Sequence : O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item : GFF3Feature | GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Sequence | GFF3Comment : GFF3Feature | GFF3Sequence : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Feature | GFF3Directive | GFF3Comment : GFF3Feature | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Comment : GFF3Feature : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item : GFF3Feature | GFF3Sequence | GFF3Directive : O extends {
parseComments: true;
} ? GFF3Feature | GFF3Sequence | GFF3Comment : GFF3Feature | GFF3Sequence> implements Transformer<Uint8Array, T> {
private decoder;
private parser;
private lastString;
private parseFeatures;
private parseDirectives;
private parseComments;
private parseSequences;
private errorCallback;
/**
* Options for how the text stream is parsed
* @param options - Parser options
*/
constructor(options?: O);
private makeCallbacks;
private emitErrorMessage;
transform(chunk: Uint8Array, controller: TransformStreamDefaultController<T>): void;
flush(controller: TransformStreamDefaultController<T>): void;
}
/**
* Synchronously parse a string containing GFF3 and return an array of the
* parsed items.
*
* @param str - GFF3 string
* @param inputOptions - Parsing options
* @returns array of parsed features, directives, comments and/or sequences
*/
export declare function parseStringSync<O extends ParseOptions>(str: string, inputOptions?: O): O extends {
parseFeatures: true;
} ? O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item[] : (GFF3Feature | GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Sequence | GFF3Comment)[] : (GFF3Feature | GFF3Sequence)[] : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Directive | GFF3Comment)[] : (GFF3Feature | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Comment)[] : GFF3Feature[] : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item[] : (GFF3Feature | GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Sequence | GFF3Comment)[] : (GFF3Feature | GFF3Sequence)[] : O extends {
parseFeatures: false;
} ? O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? (GFF3Sequence | GFF3Directive | GFF3Comment)[] : (GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Sequence | GFF3Comment)[] : GFF3Sequence[] : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? (GFF3Directive | GFF3Comment)[] : GFF3Directive[] : O extends {
parseComments: true;
} ? GFF3Comment[] : never[] : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? (GFF3Sequence | GFF3Directive | GFF3Comment)[] : (GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Sequence | GFF3Comment)[] : GFF3Sequence[] : O extends {
parseSequences: true;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item[] : (GFF3Feature | GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Sequence | GFF3Comment)[] : (GFF3Feature | GFF3Sequence)[] : O extends {
parseSequences: false;
} ? O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Directive | GFF3Comment)[] : (GFF3Feature | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Comment)[] : GFF3Feature[] : O extends {
parseDirectives: true;
} ? O extends {
parseComments: true;
} ? GFF3Item[] : (GFF3Feature | GFF3Sequence | GFF3Directive)[] : O extends {
parseComments: true;
} ? (GFF3Feature | GFF3Sequence | GFF3Comment)[] : (GFF3Feature | GFF3Sequence)[];
/**
* Format an array of GFF3 items (features,directives,comments) into string of
* GFF3. Does not insert synchronization (###) marks.
*
* @param items - Array of features, directives, comments and/or sequences
* @returns the formatted GFF3
*/
export declare function formatSync(items: GFF3Item[]): string;
/** Formatter options */
export interface FormatOptions {
/**
* The minimum number of lines to emit between sync (###) directives, default
* 100
*/
minSyncLines?: number;
/**
* Whether to insert a version directive at the beginning of a formatted
* stream if one does not exist already, default true
*/
insertVersionDirective?: boolean;
}
/**
* Transform a stream of features, directives, comments and/or sequences into a
* stream of GFF3 text.
*
* Inserts synchronization (###) marks automatically.
*/
export declare class GFFFormattingTransformer implements Transformer<GFF3Item, string> {
linesSinceLastSyncMark: number;
haveWeEmittedData: boolean;
fastaMode: boolean;
minLinesBetweenSyncMarks: number;
insertVersionDirective: boolean;
/**
* Options for how the output text stream is formatted
* @param options - Formatter options
*/
constructor(options?: FormatOptions);
transform(chunk: GFF3Item, controller: TransformStreamDefaultController<string>): void;
}