gff-nostream 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Unescape a string value used in a GFF3 attribute.
3
+ *
4
+ * @param stringVal - Escaped GFF3 string value
5
+ * @returns An unescaped string value
6
+ */
7
+ export declare function unescape(stringVal: string): string;
8
+ /**
9
+ * Escape a value for use in a GFF3 attribute value.
10
+ *
11
+ * @param rawVal - Raw GFF3 attribute value
12
+ * @returns An escaped string value
13
+ */
14
+ export declare function escape(rawVal: string | number): string;
15
+ /**
16
+ * Escape a value for use in a GFF3 column value.
17
+ *
18
+ * @param rawVal - Raw GFF3 column value
19
+ * @returns An escaped column value
20
+ */
21
+ export declare function escapeColumn(rawVal: string | number): string;
22
+ /**
23
+ * Parse the 9th column (attributes) of a GFF3 feature line.
24
+ *
25
+ * @param attrString - String of GFF3 9th column
26
+ * @returns Parsed attributes
27
+ */
28
+ export declare function parseAttributes(attrString: string): GFF3Attributes;
29
+ /**
30
+ * Parse a GFF3 feature line
31
+ *
32
+ * @param line - GFF3 feature line
33
+ * @returns The parsed feature
34
+ */
35
+ export declare function parseFeature(line: string): GFF3FeatureLine;
36
+ /**
37
+ * Parse a GFF3 directive line.
38
+ *
39
+ * @param line - GFF3 directive line
40
+ * @returns The parsed directive
41
+ */
42
+ export declare function parseDirective(line: string): GFF3Directive | GFF3SequenceRegionDirective | GFF3GenomeBuildDirective | null;
43
+ /**
44
+ * Format an attributes object into a string suitable for the 9th column of GFF3.
45
+ *
46
+ * @param attrs - Attributes
47
+ * @returns GFF3 9th column string
48
+ */
49
+ export declare function formatAttributes(attrs: GFF3Attributes): string;
50
+ /**
51
+ * Format a feature object or array of feature objects into one or more lines of
52
+ * GFF3.
53
+ *
54
+ * @param featureOrFeatures - A feature object or array of feature objects
55
+ * @returns A string of one or more GFF3 lines
56
+ */
57
+ export declare function formatFeature(featureOrFeatures: GFF3FeatureLine | GFF3FeatureLineWithRefs | (GFF3FeatureLine | GFF3FeatureLineWithRefs)[]): string;
58
+ /**
59
+ * Format a directive into a line of GFF3.
60
+ *
61
+ * @param directive - A directive object
62
+ * @returns A directive line string
63
+ */
64
+ export declare function formatDirective(directive: GFF3Directive): string;
65
+ /**
66
+ * Format a comment into a GFF3 comment.
67
+ * Yes I know this is just adding a # and a newline.
68
+ *
69
+ * @param comment - A comment object
70
+ * @returns A comment line string
71
+ */
72
+ export declare function formatComment(comment: GFF3Comment): string;
73
+ /**
74
+ * Format a sequence object as FASTA
75
+ *
76
+ * @param seq - A sequence object
77
+ * @returns Formatted single FASTA sequence string
78
+ */
79
+ export declare function formatSequence(seq: GFF3Sequence): string;
80
+ /**
81
+ * Format a directive, comment, sequence, or feature, or array of such items,
82
+ * into one or more lines of GFF3.
83
+ *
84
+ * @param itemOrItems - A comment, sequence, or feature, or array of such items
85
+ * @returns A formatted string or array of strings
86
+ */
87
+ export declare function formatItem(itemOrItems: GFF3FeatureLineWithRefs | GFF3Directive | GFF3Comment | GFF3Sequence | (GFF3FeatureLineWithRefs | GFF3Directive | GFF3Comment | GFF3Sequence)[]): string | string[];
88
+ /** A record of GFF3 attribute identifiers and the values of those identifiers */
89
+ export type GFF3Attributes = Record<string, string[] | undefined>;
90
+ /** A representation of a single line of a GFF3 file */
91
+ export interface GFF3FeatureLine {
92
+ /** The ID of the landmark used to establish the coordinate system for the current feature */
93
+ seq_id: string | null;
94
+ /** A free text qualifier intended to describe the algorithm or operating procedure that generated this feature */
95
+ source: string | null;
96
+ /** The type of the feature */
97
+ type: string | null;
98
+ /** The start coordinates of the feature */
99
+ start: number | null;
100
+ /** The end coordinates of the feature */
101
+ end: number | null;
102
+ /** The score of the feature */
103
+ score: number | null;
104
+ /** The strand of the feature */
105
+ strand: string | null;
106
+ /** For features of type "CDS", the phase indicates where the next codon begins relative to the 5' end of the current CDS feature */
107
+ phase: string | null;
108
+ /** Feature attributes */
109
+ attributes: GFF3Attributes | null;
110
+ }
111
+ /**
112
+ * A GFF3 Feature line that includes references to other features defined in
113
+ * their "Parent" or "Derives_from" attributes
114
+ */
115
+ export interface GFF3FeatureLineWithRefs extends GFF3FeatureLine {
116
+ /** An array of child features */
117
+ child_features: GFF3Feature[];
118
+ /** An array of features derived from this feature */
119
+ derived_features: GFF3Feature[];
120
+ }
121
+ /**
122
+ * A GFF3 feature, which may include multiple individual feature lines
123
+ */
124
+ export type GFF3Feature = GFF3FeatureLineWithRefs[];
125
+ /** A GFF3 directive */
126
+ export interface GFF3Directive {
127
+ /** The name of the directive */
128
+ directive: string;
129
+ /** The string value of the directive */
130
+ value?: string;
131
+ }
132
+ /** A GFF3 sequence-region directive */
133
+ export interface GFF3SequenceRegionDirective extends GFF3Directive {
134
+ /** The string value of the directive */
135
+ value: string;
136
+ /** The sequence ID parsed from the directive */
137
+ seq_id: string;
138
+ /** The sequence start parsed from the directive */
139
+ start: string;
140
+ /** The sequence end parsed from the directive */
141
+ end: string;
142
+ }
143
+ /** A GFF3 genome-build directive */
144
+ export interface GFF3GenomeBuildDirective extends GFF3Directive {
145
+ /** The string value of the directive */
146
+ value: string;
147
+ /** The genome build source parsed from the directive */
148
+ source: string;
149
+ /** The genome build name parsed from the directive */
150
+ buildName: string;
151
+ }
152
+ /** A GFF3 comment */
153
+ export interface GFF3Comment {
154
+ /** The text of the comment */
155
+ comment: string;
156
+ }
157
+ /** A GFF3 FASTA single sequence */
158
+ export interface GFF3Sequence {
159
+ /** The ID of the sequence */
160
+ id: string;
161
+ /** The description of the sequence */
162
+ description?: string;
163
+ /** The sequence */
164
+ sequence: string;
165
+ }
166
+ export type GFF3Item = GFF3Feature | GFF3Directive | GFF3Comment | GFF3Sequence;
package/dist/util.js ADDED
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ // Fast, low-level functions for parsing and formatting GFF3.
3
+ // JavaScript port of Robert Buels's Bio::GFF3::LowLevel Perl module.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.unescape = unescape;
6
+ exports.escape = escape;
7
+ exports.escapeColumn = escapeColumn;
8
+ exports.parseAttributes = parseAttributes;
9
+ exports.parseFeature = parseFeature;
10
+ exports.parseDirective = parseDirective;
11
+ exports.formatAttributes = formatAttributes;
12
+ exports.formatFeature = formatFeature;
13
+ exports.formatDirective = formatDirective;
14
+ exports.formatComment = formatComment;
15
+ exports.formatSequence = formatSequence;
16
+ exports.formatItem = formatItem;
17
+ /**
18
+ * Unescape a string value used in a GFF3 attribute.
19
+ *
20
+ * @param stringVal - Escaped GFF3 string value
21
+ * @returns An unescaped string value
22
+ */
23
+ function unescape(stringVal) {
24
+ return stringVal.replaceAll(/%([0-9A-Fa-f]{2})/g, (_match, seq) => String.fromCharCode(parseInt(seq, 16)));
25
+ }
26
+ function _escape(regex, s) {
27
+ return String(s).replace(regex, ch => {
28
+ const hex = ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0');
29
+ return `%${hex}`;
30
+ });
31
+ }
32
+ /**
33
+ * Escape a value for use in a GFF3 attribute value.
34
+ *
35
+ * @param rawVal - Raw GFF3 attribute value
36
+ * @returns An escaped string value
37
+ */
38
+ function escape(rawVal) {
39
+ return _escape(/[\n;\r\t=%&,\u0000-\u001f\u007f-\u00ff]/g, rawVal);
40
+ }
41
+ /**
42
+ * Escape a value for use in a GFF3 column value.
43
+ *
44
+ * @param rawVal - Raw GFF3 column value
45
+ * @returns An escaped column value
46
+ */
47
+ function escapeColumn(rawVal) {
48
+ return _escape(/[\n\r\t%\u0000-\u001f\u007f-\u00ff]/g, rawVal);
49
+ }
50
+ /**
51
+ * Parse the 9th column (attributes) of a GFF3 feature line.
52
+ *
53
+ * @param attrString - String of GFF3 9th column
54
+ * @returns Parsed attributes
55
+ */
56
+ function parseAttributes(attrString) {
57
+ if (!attrString.length || attrString === '.') {
58
+ return {};
59
+ }
60
+ const attrs = {};
61
+ attrString
62
+ .replace(/\r?\n$/, '')
63
+ .split(';')
64
+ .forEach(a => {
65
+ var _a;
66
+ const nv = a.split('=', 2);
67
+ if (!((_a = nv[1]) === null || _a === void 0 ? void 0 : _a.length)) {
68
+ return;
69
+ }
70
+ nv[0] = nv[0].trim();
71
+ let arec = attrs[nv[0].trim()];
72
+ if (!arec) {
73
+ arec = [];
74
+ attrs[nv[0]] = arec;
75
+ }
76
+ arec.push(...nv[1]
77
+ .split(',')
78
+ .map(s => s.trim())
79
+ .map(unescape));
80
+ });
81
+ return attrs;
82
+ }
83
+ /**
84
+ * Parse a GFF3 feature line
85
+ *
86
+ * @param line - GFF3 feature line
87
+ * @returns The parsed feature
88
+ */
89
+ function parseFeature(line) {
90
+ // split the line into columns and replace '.' with null in each column
91
+ const f = line.split('\t').map(a => (a === '.' || a === '' ? null : a));
92
+ // unescape only the ref, source, and type columns
93
+ const parsed = {
94
+ seq_id: f[0] && unescape(f[0]),
95
+ source: f[1] && unescape(f[1]),
96
+ type: f[2] && unescape(f[2]),
97
+ start: f[3] === null ? null : parseInt(f[3], 10),
98
+ end: f[4] === null ? null : parseInt(f[4], 10),
99
+ score: f[5] === null ? null : parseFloat(f[5]),
100
+ strand: f[6],
101
+ phase: f[7],
102
+ attributes: f[8] === null ? null : parseAttributes(f[8]),
103
+ };
104
+ return parsed;
105
+ }
106
+ /**
107
+ * Parse a GFF3 directive line.
108
+ *
109
+ * @param line - GFF3 directive line
110
+ * @returns The parsed directive
111
+ */
112
+ function parseDirective(line) {
113
+ var _a, _b;
114
+ const match = /^\s*##\s*(\S+)\s*(.*)/.exec(line);
115
+ if (!match) {
116
+ return null;
117
+ }
118
+ const [, name] = match;
119
+ let [, , contents] = match;
120
+ const parsed = { directive: name };
121
+ if (contents.length) {
122
+ contents = contents.replace(/\r?\n$/, '');
123
+ parsed.value = contents;
124
+ }
125
+ // do a little additional parsing for sequence-region and genome-build directives
126
+ if (name === 'sequence-region') {
127
+ const c = contents.split(/\s+/, 3);
128
+ return Object.assign(Object.assign({}, parsed), { seq_id: c[0], start: (_a = c[1]) === null || _a === void 0 ? void 0 : _a.replaceAll(/\D/g, ''), end: (_b = c[2]) === null || _b === void 0 ? void 0 : _b.replaceAll(/\D/g, '') });
129
+ }
130
+ else if (name === 'genome-build') {
131
+ const [source, buildName] = contents.split(/\s+/, 2);
132
+ return Object.assign(Object.assign({}, parsed), { source,
133
+ buildName });
134
+ }
135
+ return parsed;
136
+ }
137
+ /**
138
+ * Format an attributes object into a string suitable for the 9th column of GFF3.
139
+ *
140
+ * @param attrs - Attributes
141
+ * @returns GFF3 9th column string
142
+ */
143
+ function formatAttributes(attrs) {
144
+ const attrOrder = [];
145
+ Object.entries(attrs).forEach(([tag, val]) => {
146
+ if (!val) {
147
+ return;
148
+ }
149
+ let valstring;
150
+ if (val.hasOwnProperty('toString')) {
151
+ valstring = escape(val.toString());
152
+ // } else if (Array.isArray(val.values)) {
153
+ // valstring = val.values.map(escape).join(',')
154
+ }
155
+ else if (Array.isArray(val)) {
156
+ valstring = val.map(escape).join(',');
157
+ }
158
+ else {
159
+ valstring = escape(val);
160
+ }
161
+ attrOrder.push(`${escape(tag)}=${valstring}`);
162
+ });
163
+ return attrOrder.length ? attrOrder.join(';') : '.';
164
+ }
165
+ function _formatSingleFeature(f, seenFeature) {
166
+ const attrString = f.attributes === null || f.attributes === undefined
167
+ ? '.'
168
+ : formatAttributes(f.attributes);
169
+ const fields = [
170
+ f.seq_id === null ? '.' : escapeColumn(f.seq_id),
171
+ f.source === null ? '.' : escapeColumn(f.source),
172
+ f.type === null ? '.' : escapeColumn(f.type),
173
+ f.start === null ? '.' : escapeColumn(f.start),
174
+ f.end === null ? '.' : escapeColumn(f.end),
175
+ f.score === null ? '.' : escapeColumn(f.score),
176
+ f.strand === null ? '.' : escapeColumn(f.strand),
177
+ f.phase === null ? '.' : escapeColumn(f.phase),
178
+ attrString,
179
+ ];
180
+ const formattedString = `${fields.join('\t')}\n`;
181
+ // if we have already output this exact feature, skip it
182
+ if (seenFeature[formattedString]) {
183
+ return '';
184
+ }
185
+ seenFeature[formattedString] = true;
186
+ return formattedString;
187
+ }
188
+ function _formatFeature(feature, seenFeature) {
189
+ if (Array.isArray(feature)) {
190
+ return feature.map(f => _formatFeature(f, seenFeature)).join('');
191
+ }
192
+ const strings = [_formatSingleFeature(feature, seenFeature)];
193
+ if (_isFeatureLineWithRefs(feature)) {
194
+ strings.push(...feature.child_features.map(f => _formatFeature(f, seenFeature)), ...feature.derived_features.map(f => _formatFeature(f, seenFeature)));
195
+ }
196
+ return strings.join('');
197
+ }
198
+ /**
199
+ * Format a feature object or array of feature objects into one or more lines of
200
+ * GFF3.
201
+ *
202
+ * @param featureOrFeatures - A feature object or array of feature objects
203
+ * @returns A string of one or more GFF3 lines
204
+ */
205
+ function formatFeature(featureOrFeatures) {
206
+ const seen = {};
207
+ return _formatFeature(featureOrFeatures, seen);
208
+ }
209
+ /**
210
+ * Format a directive into a line of GFF3.
211
+ *
212
+ * @param directive - A directive object
213
+ * @returns A directive line string
214
+ */
215
+ function formatDirective(directive) {
216
+ let str = `##${directive.directive}`;
217
+ if (directive.value) {
218
+ str += ` ${directive.value}`;
219
+ }
220
+ str += '\n';
221
+ return str;
222
+ }
223
+ /**
224
+ * Format a comment into a GFF3 comment.
225
+ * Yes I know this is just adding a # and a newline.
226
+ *
227
+ * @param comment - A comment object
228
+ * @returns A comment line string
229
+ */
230
+ function formatComment(comment) {
231
+ return `# ${comment.comment}\n`;
232
+ }
233
+ /**
234
+ * Format a sequence object as FASTA
235
+ *
236
+ * @param seq - A sequence object
237
+ * @returns Formatted single FASTA sequence string
238
+ */
239
+ function formatSequence(seq) {
240
+ return `>${seq.id}${seq.description ? ` ${seq.description}` : ''}\n${seq.sequence}\n`;
241
+ }
242
+ /**
243
+ * Format a directive, comment, sequence, or feature, or array of such items,
244
+ * into one or more lines of GFF3.
245
+ *
246
+ * @param itemOrItems - A comment, sequence, or feature, or array of such items
247
+ * @returns A formatted string or array of strings
248
+ */
249
+ function formatItem(itemOrItems) {
250
+ function formatSingleItem(item) {
251
+ if ('attributes' in item) {
252
+ return formatFeature(item);
253
+ }
254
+ if ('directive' in item) {
255
+ return formatDirective(item);
256
+ }
257
+ if ('sequence' in item) {
258
+ return formatSequence(item);
259
+ }
260
+ if ('comment' in item) {
261
+ return formatComment(item);
262
+ }
263
+ return '# (invalid item found during format)\n';
264
+ }
265
+ if (Array.isArray(itemOrItems)) {
266
+ return itemOrItems.map(formatSingleItem);
267
+ }
268
+ return formatSingleItem(itemOrItems);
269
+ }
270
+ function _isFeatureLineWithRefs(featureLine) {
271
+ return (featureLine.child_features !== undefined &&
272
+ featureLine.derived_features !== undefined);
273
+ }
274
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/esm/api.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { GFF3Item } from './util';
2
+ /** Parser options */
3
+ export interface ParseOptions {
4
+ /** Whether to resolve references to derives from features */
5
+ disableDerivesFromReferences?: boolean;
6
+ /** Text encoding of the input GFF3. default 'utf8' */
7
+ encoding?: BufferEncoding;
8
+ /** Whether to parse features, default true */
9
+ parseFeatures?: boolean;
10
+ /** Whether to parse directives, default false */
11
+ parseDirectives?: boolean;
12
+ /** Whether to parse comments, default false */
13
+ parseComments?: boolean;
14
+ /** Whether to parse sequences, default true */
15
+ parseSequences?: boolean;
16
+ /**
17
+ * Parse all features, directives, comments, and sequences. Overrides other
18
+ * parsing options. Default false.
19
+ */
20
+ parseAll?: boolean;
21
+ }
22
+ export declare function parseStringSync(str: string, inputOptions?: ParseOptions): GFF3Item[];
23
+ export { type GFF3FeatureLine, type GFF3Comment, type GFF3FeatureLineWithRefs, type GFF3Directive, type GFF3Sequence, type GFF3Feature, type GFF3Item, } from './util';
package/esm/api.js ADDED
@@ -0,0 +1,42 @@
1
+ import Parser from './parse';
2
+ // shared arg processing for the parse routines
3
+ function _processParseOptions(options) {
4
+ const out = {
5
+ encoding: 'utf8',
6
+ parseFeatures: true,
7
+ parseDirectives: false,
8
+ parseSequences: true,
9
+ parseComments: false,
10
+ disableDerivesFromReferences: false,
11
+ ...options,
12
+ };
13
+ if (options.parseAll) {
14
+ out.parseFeatures = true;
15
+ out.parseDirectives = true;
16
+ out.parseComments = true;
17
+ out.parseSequences = true;
18
+ }
19
+ return out;
20
+ }
21
+ export function parseStringSync(str, inputOptions = {}) {
22
+ if (!str) {
23
+ return [];
24
+ }
25
+ const options = _processParseOptions(inputOptions);
26
+ const items = [];
27
+ const push = items.push.bind(items);
28
+ const parser = new Parser({
29
+ featureCallback: options.parseFeatures ? push : undefined,
30
+ directiveCallback: options.parseDirectives ? push : undefined,
31
+ commentCallback: options.parseComments ? push : undefined,
32
+ sequenceCallback: options.parseSequences ? push : undefined,
33
+ disableDerivesFromReferences: options.disableDerivesFromReferences || false,
34
+ errorCallback: err => {
35
+ throw err;
36
+ },
37
+ });
38
+ str.split(/\r?\n/).forEach(parser.addLine.bind(parser));
39
+ parser.finish();
40
+ return items;
41
+ }
42
+ //# sourceMappingURL=api.js.map
package/esm/api.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAA;AA0B5B,+CAA+C;AAC/C,SAAS,oBAAoB,CAAC,OAAqB;IACjD,MAAM,GAAG,GAAG;QACV,QAAQ,EAAE,MAAe;QACzB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;QACpB,4BAA4B,EAAE,KAAK;QACnC,GAAG,OAAO;KACX,CAAA;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAA;QACxB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;QAC1B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAA;QACxB,GAAG,CAAC,cAAc,GAAG,IAAI,CAAA;IAC3B,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,eAA6B,EAAE;IAE/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAClD,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACzD,iBAAiB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC7D,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACzD,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,4BAA4B,EAAE,OAAO,CAAC,4BAA4B,IAAI,KAAK;QAC3E,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;KACF,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACvD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { parseStringSync } from './api';
2
+ export { parseStringSync };
3
+ export type { GFF3Comment, GFF3Feature, GFF3Directive, GFF3FeatureLineWithRefs, GFF3FeatureLine, GFF3Item, GFF3Sequence, } from './api';
package/esm/index.js ADDED
@@ -0,0 +1,3 @@
1
+ import { parseStringSync } from './api';
2
+ export { parseStringSync };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,CAAA"}
package/esm/parse.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ import * as GFF3 from './util';
2
+ export declare class FASTAParser {
3
+ seqCallback: (sequence: GFF3.GFF3Sequence) => void;
4
+ currentSequence: {
5
+ id: string;
6
+ sequence: string;
7
+ description?: string;
8
+ } | undefined;
9
+ constructor(seqCallback: (sequence: GFF3.GFF3Sequence) => void);
10
+ addLine(line: string): void;
11
+ private _flush;
12
+ finish(): void;
13
+ }
14
+ interface ParserArgs {
15
+ featureCallback?(feature: GFF3.GFF3Feature): void;
16
+ endCallback?(): void;
17
+ commentCallback?(comment: GFF3.GFF3Comment): void;
18
+ errorCallback?(error: string): void;
19
+ directiveCallback?(directive: GFF3.GFF3Directive): void;
20
+ sequenceCallback?(sequence: GFF3.GFF3Sequence): void;
21
+ bufferSize?: number;
22
+ disableDerivesFromReferences?: boolean;
23
+ }
24
+ export default class Parser {
25
+ featureCallback: (feature: GFF3.GFF3Feature) => void;
26
+ endCallback: () => void;
27
+ commentCallback: (comment: GFF3.GFF3Comment) => void;
28
+ errorCallback: (error: string) => void;
29
+ disableDerivesFromReferences: boolean;
30
+ directiveCallback: (directive: GFF3.GFF3Directive) => void;
31
+ sequenceCallback: (sequence: GFF3.GFF3Sequence) => void;
32
+ bufferSize: number;
33
+ fastaParser: FASTAParser | undefined;
34
+ eof: boolean;
35
+ lineNumber: number;
36
+ private _underConstructionTopLevel;
37
+ private _underConstructionById;
38
+ private _completedReferences;
39
+ private _underConstructionOrphans;
40
+ constructor(args: ParserArgs);
41
+ addLine(line: string): void;
42
+ finish(): void;
43
+ private _emitItem;
44
+ private _enforceBufferSizeLimit;
45
+ /**
46
+ * return all under-construction features, called when we know
47
+ * there will be no additional data to attach to them
48
+ */
49
+ private _emitAllUnderConstructionFeatures;
50
+ private _bufferLine;
51
+ private _resolveReferencesTo;
52
+ private _parseError;
53
+ private _resolveReferencesFrom;
54
+ }
55
+ export {};