UNPKG

@gmod/gff

Version:

read and write GFF3 data as streams

231 lines (230 loc) 8.44 kB
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; }