gff-nostream 1.3.9 → 2.0.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.
package/dist/util.d.ts CHANGED
@@ -26,6 +26,14 @@ export declare function escapeColumn(rawVal: string | number): string;
26
26
  * @returns Parsed attributes
27
27
  */
28
28
  export declare function parseAttributes(attrString: string): GFF3Attributes;
29
+ /**
30
+ * Parse the 9th column (attributes) of a GFF3 feature line without unescaping.
31
+ * Fast path for data known to contain no escaped characters.
32
+ *
33
+ * @param attrString - String of GFF3 9th column
34
+ * @returns Parsed attributes
35
+ */
36
+ export declare function parseAttributesNoUnescape(attrString: string): GFF3Attributes;
29
37
  /**
30
38
  * Parse a GFF3 feature line
31
39
  *
@@ -33,6 +41,15 @@ export declare function parseAttributes(attrString: string): GFF3Attributes;
33
41
  * @returns The parsed feature
34
42
  */
35
43
  export declare function parseFeature(line: string): GFF3FeatureLine;
44
+ export declare function parseFieldsArray(f: (string | null | undefined)[]): GFF3FeatureLine;
45
+ /**
46
+ * Parse a GFF3 feature from a pre-split fields array without unescaping.
47
+ * Fast path for data known to contain no escaped characters.
48
+ *
49
+ * @param f - Array of 9 GFF3 column values (use null or '.' for empty values)
50
+ * @returns The parsed feature
51
+ */
52
+ export declare function parseFieldsArrayNoUnescape(f: (string | null | undefined)[]): GFF3FeatureLine;
36
53
  /**
37
54
  * Parse a GFF3 directive line.
38
55
  *
package/dist/util.js CHANGED
@@ -6,7 +6,10 @@ exports.unescape = unescape;
6
6
  exports.escape = escape;
7
7
  exports.escapeColumn = escapeColumn;
8
8
  exports.parseAttributes = parseAttributes;
9
+ exports.parseAttributesNoUnescape = parseAttributesNoUnescape;
9
10
  exports.parseFeature = parseFeature;
11
+ exports.parseFieldsArray = parseFieldsArray;
12
+ exports.parseFieldsArrayNoUnescape = parseFieldsArrayNoUnescape;
10
13
  exports.parseDirective = parseDirective;
11
14
  exports.formatAttributes = formatAttributes;
12
15
  exports.formatFeature = formatFeature;
@@ -14,6 +17,15 @@ exports.formatDirective = formatDirective;
14
17
  exports.formatComment = formatComment;
15
18
  exports.formatSequence = formatSequence;
16
19
  exports.formatItem = formatItem;
20
+ const escapeRegex = /%([0-9A-Fa-f]{2})/g;
21
+ const directiveRegex = /^\s*##\s*(\S+)\s*(.*)/;
22
+ const lineEndRegex = /\r?\n$/;
23
+ const whitespaceRegex = /\s+/;
24
+ const nonDigitRegex = /\D/g;
25
+ // eslint-disable-next-line no-control-regex
26
+ const attrEscapeRegex = /[\n;\r\t=%&,\u0000-\u001f\u007f-\u00ff]/g;
27
+ // eslint-disable-next-line no-control-regex
28
+ const columnEscapeRegex = /[\n\r\t%\u0000-\u001f\u007f-\u00ff]/g;
17
29
  /**
18
30
  * Unescape a string value used in a GFF3 attribute.
19
31
  *
@@ -21,7 +33,10 @@ exports.formatItem = formatItem;
21
33
  * @returns An unescaped string value
22
34
  */
23
35
  function unescape(stringVal) {
24
- return stringVal.replaceAll(/%([0-9A-Fa-f]{2})/g, (_match, seq) => String.fromCharCode(parseInt(seq, 16)));
36
+ if (!stringVal.includes('%')) {
37
+ return stringVal;
38
+ }
39
+ return stringVal.replaceAll(escapeRegex, (_match, seq) => String.fromCharCode(parseInt(seq, 16)));
25
40
  }
26
41
  function _escape(regex, s) {
27
42
  return String(s).replace(regex, ch => {
@@ -36,7 +51,7 @@ function _escape(regex, s) {
36
51
  * @returns An escaped string value
37
52
  */
38
53
  function escape(rawVal) {
39
- return _escape(/[\n;\r\t=%&,\u0000-\u001f\u007f-\u00ff]/g, rawVal);
54
+ return _escape(attrEscapeRegex, rawVal);
40
55
  }
41
56
  /**
42
57
  * Escape a value for use in a GFF3 column value.
@@ -45,7 +60,7 @@ function escape(rawVal) {
45
60
  * @returns An escaped column value
46
61
  */
47
62
  function escapeColumn(rawVal) {
48
- return _escape(/[\n\r\t%\u0000-\u001f\u007f-\u00ff]/g, rawVal);
63
+ return _escape(columnEscapeRegex, rawVal);
49
64
  }
50
65
  /**
51
66
  * Parse the 9th column (attributes) of a GFF3 feature line.
@@ -58,26 +73,66 @@ function parseAttributes(attrString) {
58
73
  return {};
59
74
  }
60
75
  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;
76
+ let str = attrString;
77
+ if (str.endsWith('\n')) {
78
+ str = str.slice(0, str.endsWith('\r\n') ? -2 : -1);
79
+ }
80
+ for (const a of str.split(';')) {
81
+ const eqIdx = a.indexOf('=');
82
+ if (eqIdx === -1) {
83
+ continue;
84
+ }
85
+ const value = a.slice(eqIdx + 1);
86
+ if (!value.length) {
87
+ continue;
69
88
  }
70
- nv[0] = nv[0].trim();
71
- let arec = attrs[nv[0].trim()];
89
+ const tag = a.slice(0, eqIdx).trim();
90
+ let arec = attrs[tag];
72
91
  if (!arec) {
73
92
  arec = [];
74
- attrs[nv[0]] = arec;
93
+ attrs[tag] = arec;
75
94
  }
76
- arec.push(...nv[1]
77
- .split(',')
78
- .map(s => s.trim())
79
- .map(unescape));
80
- });
95
+ for (const s of value.split(',')) {
96
+ arec.push(unescape(s.trim()));
97
+ }
98
+ }
99
+ return attrs;
100
+ }
101
+ /**
102
+ * Parse the 9th column (attributes) of a GFF3 feature line without unescaping.
103
+ * Fast path for data known to contain no escaped characters.
104
+ *
105
+ * @param attrString - String of GFF3 9th column
106
+ * @returns Parsed attributes
107
+ */
108
+ function parseAttributesNoUnescape(attrString) {
109
+ if (!attrString.length || attrString === '.') {
110
+ return {};
111
+ }
112
+ const attrs = {};
113
+ let str = attrString;
114
+ if (str.endsWith('\n')) {
115
+ str = str.slice(0, str.endsWith('\r\n') ? -2 : -1);
116
+ }
117
+ for (const a of str.split(';')) {
118
+ const eqIdx = a.indexOf('=');
119
+ if (eqIdx === -1) {
120
+ continue;
121
+ }
122
+ const value = a.slice(eqIdx + 1);
123
+ if (!value.length) {
124
+ continue;
125
+ }
126
+ const tag = a.slice(0, eqIdx).trim();
127
+ let arec = attrs[tag];
128
+ if (!arec) {
129
+ arec = [];
130
+ attrs[tag] = arec;
131
+ }
132
+ for (const s of value.split(',')) {
133
+ arec.push(s.trim());
134
+ }
135
+ }
81
136
  return attrs;
82
137
  }
83
138
  /**
@@ -87,21 +142,67 @@ function parseAttributes(attrString) {
87
142
  * @returns The parsed feature
88
143
  */
89
144
  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]),
145
+ return parseFieldsArray(line.split('\t'));
146
+ }
147
+ /**
148
+ * Parse a GFF3 feature from a pre-split fields array
149
+ *
150
+ * @param f - Array of 9 GFF3 column values (use null or '.' for empty values)
151
+ * @returns The parsed feature
152
+ */
153
+ function norm(a) {
154
+ return a === '.' || a === '' || a === undefined ? null : a;
155
+ }
156
+ function parseFieldsArray(f) {
157
+ const seq_id = norm(f[0]);
158
+ const source = norm(f[1]);
159
+ const type = norm(f[2]);
160
+ const start = norm(f[3]);
161
+ const end = norm(f[4]);
162
+ const score = norm(f[5]);
163
+ const strand = norm(f[6]);
164
+ const phase = norm(f[7]);
165
+ const attrString = norm(f[8]);
166
+ return {
167
+ seq_id: seq_id ? unescape(seq_id) : null,
168
+ source: source ? unescape(source) : null,
169
+ type: type ? unescape(type) : null,
170
+ start: start === null ? null : parseInt(start, 10),
171
+ end: end === null ? null : parseInt(end, 10),
172
+ score: score === null ? null : parseFloat(score),
173
+ strand,
174
+ phase,
175
+ attributes: attrString === null ? null : parseAttributes(attrString),
176
+ };
177
+ }
178
+ /**
179
+ * Parse a GFF3 feature from a pre-split fields array without unescaping.
180
+ * Fast path for data known to contain no escaped characters.
181
+ *
182
+ * @param f - Array of 9 GFF3 column values (use null or '.' for empty values)
183
+ * @returns The parsed feature
184
+ */
185
+ function parseFieldsArrayNoUnescape(f) {
186
+ const seq_id = norm(f[0]);
187
+ const source = norm(f[1]);
188
+ const type = norm(f[2]);
189
+ const start = norm(f[3]);
190
+ const end = norm(f[4]);
191
+ const score = norm(f[5]);
192
+ const strand = norm(f[6]);
193
+ const phase = norm(f[7]);
194
+ const attrString = norm(f[8]);
195
+ return {
196
+ seq_id,
197
+ source,
198
+ type,
199
+ start: start === null ? null : parseInt(start, 10),
200
+ end: end === null ? null : parseInt(end, 10),
201
+ score: score === null ? null : parseFloat(score),
202
+ strand,
203
+ phase,
204
+ attributes: attrString === null ? null : parseAttributesNoUnescape(attrString),
103
205
  };
104
- return parsed;
105
206
  }
106
207
  /**
107
208
  * Parse a GFF3 directive line.
@@ -110,8 +211,7 @@ function parseFeature(line) {
110
211
  * @returns The parsed directive
111
212
  */
112
213
  function parseDirective(line) {
113
- var _a, _b;
114
- const match = /^\s*##\s*(\S+)\s*(.*)/.exec(line);
214
+ const match = directiveRegex.exec(line);
115
215
  if (!match) {
116
216
  return null;
117
217
  }
@@ -119,18 +219,26 @@ function parseDirective(line) {
119
219
  let [, , contents] = match;
120
220
  const parsed = { directive: name };
121
221
  if (contents.length) {
122
- contents = contents.replace(/\r?\n$/, '');
222
+ contents = contents.replace(lineEndRegex, '');
123
223
  parsed.value = contents;
124
224
  }
125
225
  // do a little additional parsing for sequence-region and genome-build directives
126
226
  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, '') });
227
+ const c = contents.split(whitespaceRegex, 3);
228
+ return {
229
+ ...parsed,
230
+ seq_id: c[0],
231
+ start: c[1]?.replaceAll(nonDigitRegex, ''),
232
+ end: c[2]?.replaceAll(nonDigitRegex, ''),
233
+ };
129
234
  }
130
235
  else if (name === 'genome-build') {
131
- const [source, buildName] = contents.split(/\s+/, 2);
132
- return Object.assign(Object.assign({}, parsed), { source,
133
- buildName });
236
+ const [source, buildName] = contents.split(whitespaceRegex, 2);
237
+ return {
238
+ ...parsed,
239
+ source,
240
+ buildName,
241
+ };
134
242
  }
135
243
  return parsed;
136
244
  }
@@ -142,28 +250,18 @@ function parseDirective(line) {
142
250
  */
143
251
  function formatAttributes(attrs) {
144
252
  const attrOrder = [];
145
- Object.entries(attrs).forEach(([tag, val]) => {
253
+ for (const [tag, val] of Object.entries(attrs)) {
146
254
  if (!val) {
147
- return;
255
+ continue;
148
256
  }
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
- });
257
+ attrOrder.push(`${escape(tag)}=${val.map(escape).join(',')}`);
258
+ }
163
259
  return attrOrder.length ? attrOrder.join(';') : '.';
164
260
  }
165
261
  function _formatSingleFeature(f, seenFeature) {
166
- const attrString = f.attributes === null || f.attributes === undefined
262
+ const attrString =
263
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
264
+ f.attributes === null || f.attributes === undefined
167
265
  ? '.'
168
266
  : formatAttributes(f.attributes);
169
267
  const fields = [
@@ -268,7 +366,10 @@ function formatItem(itemOrItems) {
268
366
  return formatSingleItem(itemOrItems);
269
367
  }
270
368
  function _isFeatureLineWithRefs(featureLine) {
271
- return (featureLine.child_features !== undefined &&
369
+ return (
370
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
371
+ featureLine.child_features !== undefined &&
372
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
272
373
  featureLine.derived_features !== undefined);
273
374
  }
274
375
  //# sourceMappingURL=util.js.map
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,qEAAqE;;AAmBrE,4BAOC;AAeD,wBAEC;AAQD,oCAEC;AAQD,0CAkCC;AASD,8DAkCC;AAQD,oCAEC;AAYD,4CAsBC;AASD,gEAsBC;AAQD,wCAwCC;AAQD,4CASC;AA+DD,sCAQC;AAQD,0CAOC;AASD,sCAEC;AAQD,wCAIC;AASD,gCA8BC;AAxaD,MAAM,WAAW,GAAG,oBAAoB,CAAA;AACxC,MAAM,cAAc,GAAG,uBAAuB,CAAA;AAC9C,MAAM,YAAY,GAAG,QAAQ,CAAA;AAC7B,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,MAAM,aAAa,GAAG,KAAK,CAAA;AAC3B,4CAA4C;AAC5C,MAAM,eAAe,GAAG,0CAA0C,CAAA;AAClE,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,sCAAsC,CAAA;AAEhE;;;;;GAKG;AAEH,SAAgB,QAAQ,CAAC,SAAiB;IACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACvD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACvC,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,CAAkB;IAChD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACxE,OAAO,IAAI,GAAG,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAC,MAAuB;IAC5C,OAAO,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAuB;IAClD,OAAO,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,UAAkB;IAChD,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,IAAI,GAAG,GAAG,UAAU,CAAA;IACpB,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,SAAQ;QACV,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAA;YACT,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,IAAI,GAAG,GAAG,UAAU,CAAA;IACpB,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,SAAQ;QACV,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAA;YACT,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,SAAS,IAAI,CAAC,CAA4B;IACxC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAgC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7B,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACxC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACxC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAClC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAClD,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAChD,MAAM;QACN,KAAK;QACL,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC;KACrE,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,0BAA0B,CAAC,CAAgC;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7B,OAAO;QACL,MAAM;QACN,MAAM;QACN,IAAI;QACJ,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAClD,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAChD,MAAM;QACN,KAAK;QACL,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC;KAC/E,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,IAAY;IAMZ,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAA;IACtB,IAAI,CAAC,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,KAAK,CAAA;IAE1B,MAAM,MAAM,GAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IACjD,IAAI,QAAS,CAAC,MAAM,EAAE,CAAC;QACrB,QAAQ,GAAG,QAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAA;IACzB,CAAC;IAED,iFAAiF;IACjF,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,QAAS,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;QAC7C,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACZ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1C,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;SACV,CAAA;IAClC,CAAC;SAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAS,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;QAC/D,OAAO;YACL,GAAG,MAAM;YACT,MAAM;YACN,SAAS;SACkB,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAAqB;IACpD,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAQ;QACV,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACrD,CAAC;AAED,SAAS,oBAAoB,CAC3B,CAA4C,EAC5C,WAAgD;IAEhD,MAAM,UAAU;IACd,uEAAuE;IACvE,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QACjD,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAEpC,MAAM,MAAM,GAAG;QACb,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,UAAU;KACX,CAAA;IAED,MAAM,eAAe,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IAEhD,wDAAwD;IACxD,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IACnC,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,SAAS,cAAc,CACrB,OAGiD,EACjD,WAAgD;IAEhD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;IAC5D,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CACV,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAClE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CACrE,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,iBAGiD;IAEjD,MAAM,IAAI,GAAG,EAAE,CAAA;IACf,OAAO,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,SAAwB;IACtD,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,SAAS,EAAE,CAAA;IACpC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,GAAG,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IACD,GAAG,IAAI,IAAI,CAAA;IACX,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAiB;IAC9C,OAAO,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAC9D,GAAG,CAAC,QACN,IAAI,CAAA;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CACxB,WAK4E;IAE5E,SAAS,gBAAgB,CACvB,IAA0E;QAE1E,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QACD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,wCAAwC,CAAA;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;AACtC,CAAC;AAsCD,SAAS,sBAAsB,CAC7B,WAAsD;IAEtD,OAAO;IACL,uEAAuE;IACtE,WAAuC,CAAC,cAAc,KAAK,SAAS;QACrE,uEAAuE;QACtE,WAAuC,CAAC,gBAAgB,KAAK,SAAS,CACxE,CAAA;AACH,CAAC"}
package/esm/api.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- import { GFF3Feature } from './util';
1
+ import type { GFF3Feature } from './util.ts';
2
+ export interface LineRecord {
3
+ fields: string[];
4
+ lineHash?: string | number;
5
+ }
2
6
  /**
3
7
  * Synchronously parse a string containing GFF3 and return an array of the
4
8
  * parsed items.
@@ -8,4 +12,31 @@ import { GFF3Feature } from './util';
8
12
  * @returns array of parsed features, directives, comments and/or sequences
9
13
  */
10
14
  export declare function parseStringSync(str: string): GFF3Feature[];
11
- export { type GFF3FeatureLine, type GFF3Comment, type GFF3FeatureLineWithRefs, type GFF3Directive, type GFF3Sequence, type GFF3Feature, type GFF3Item, } from './util';
15
+ /**
16
+ * Synchronously parse an array of strings containing GFF3 and return an array of the
17
+ * parsed items.
18
+ *
19
+ * @param arr - GFF3 array of strings
20
+ * @param inputOptions - Parsing options
21
+ * @returns array of parsed features, directives, comments and/or sequences
22
+ */
23
+ export declare function parseArraySync(arr: string[]): GFF3Feature[];
24
+ /**
25
+ * Synchronously parse an array of LineRecord objects containing pre-split GFF3
26
+ * fields and return an array of the parsed items.
27
+ *
28
+ * @param records - Array of LineRecord objects with fields array and optional lineHash
29
+ * @returns array of parsed features
30
+ */
31
+ export declare function parseRecordsSync(records: LineRecord[]): GFF3Feature[];
32
+ /**
33
+ * Synchronously parse an array of LineRecord objects containing pre-split GFF3
34
+ * fields and return an array of the parsed items. Uses a fast path that skips
35
+ * unescaping when hasEscapes is false.
36
+ *
37
+ * @param records - Array of LineRecord objects with fields array and optional lineHash
38
+ * @param hasEscapes - Whether the records contain percent-encoded characters
39
+ * @returns array of parsed features
40
+ */
41
+ export declare function parseRecordsSyncFast(records: LineRecord[], hasEscapes: boolean): GFF3Feature[];
42
+ export type { GFF3Comment, GFF3Directive, GFF3Feature, GFF3FeatureLine, GFF3FeatureLineWithRefs, GFF3Item, GFF3Sequence, } from './util.ts';
package/esm/api.js CHANGED
@@ -1,4 +1,5 @@
1
- import Parser from './parse';
1
+ import Parser from "./parse.js";
2
+ import { parseFieldsArray, parseFieldsArrayNoUnescape } from "./util.js";
2
3
  /**
3
4
  * Synchronously parse a string containing GFF3 and return an array of the
4
5
  * parsed items.
@@ -13,7 +14,7 @@ export function parseStringSync(str) {
13
14
  featureCallback: arg => items.push(arg),
14
15
  disableDerivesFromReferences: true,
15
16
  errorCallback: err => {
16
- throw err;
17
+ throw new Error(err);
17
18
  },
18
19
  });
19
20
  for (const line of str.split(/\r?\n/)) {
@@ -22,4 +23,88 @@ export function parseStringSync(str) {
22
23
  parser.finish();
23
24
  return items;
24
25
  }
26
+ /**
27
+ * Synchronously parse an array of strings containing GFF3 and return an array of the
28
+ * parsed items.
29
+ *
30
+ * @param arr - GFF3 array of strings
31
+ * @param inputOptions - Parsing options
32
+ * @returns array of parsed features, directives, comments and/or sequences
33
+ */
34
+ export function parseArraySync(arr) {
35
+ const items = [];
36
+ const parser = new Parser({
37
+ featureCallback: arg => items.push(arg),
38
+ disableDerivesFromReferences: true,
39
+ errorCallback: err => {
40
+ throw new Error(err);
41
+ },
42
+ });
43
+ for (const line of arr) {
44
+ parser.addLine(line);
45
+ }
46
+ parser.finish();
47
+ return items;
48
+ }
49
+ /**
50
+ * Synchronously parse an array of LineRecord objects containing pre-split GFF3
51
+ * fields and return an array of the parsed items.
52
+ *
53
+ * @param records - Array of LineRecord objects with fields array and optional lineHash
54
+ * @returns array of parsed features
55
+ */
56
+ export function parseRecordsSync(records) {
57
+ const items = [];
58
+ const parser = new Parser({
59
+ featureCallback: arg => items.push(arg),
60
+ disableDerivesFromReferences: true,
61
+ errorCallback: err => {
62
+ throw new Error(err);
63
+ },
64
+ });
65
+ for (const record of records) {
66
+ const featureLine = parseFieldsArray(record.fields);
67
+ if (record.lineHash !== undefined) {
68
+ if (!featureLine.attributes) {
69
+ featureLine.attributes = {};
70
+ }
71
+ featureLine.attributes._lineHash = [String(record.lineHash)];
72
+ }
73
+ parser.addParsedFeatureLine(featureLine);
74
+ }
75
+ parser.finish();
76
+ return items;
77
+ }
78
+ /**
79
+ * Synchronously parse an array of LineRecord objects containing pre-split GFF3
80
+ * fields and return an array of the parsed items. Uses a fast path that skips
81
+ * unescaping when hasEscapes is false.
82
+ *
83
+ * @param records - Array of LineRecord objects with fields array and optional lineHash
84
+ * @param hasEscapes - Whether the records contain percent-encoded characters
85
+ * @returns array of parsed features
86
+ */
87
+ export function parseRecordsSyncFast(records, hasEscapes) {
88
+ const items = [];
89
+ const parser = new Parser({
90
+ featureCallback: arg => items.push(arg),
91
+ disableDerivesFromReferences: true,
92
+ errorCallback: err => {
93
+ throw new Error(err);
94
+ },
95
+ });
96
+ const parseFunc = hasEscapes ? parseFieldsArray : parseFieldsArrayNoUnescape;
97
+ for (const record of records) {
98
+ const featureLine = parseFunc(record.fields);
99
+ if (record.lineHash !== undefined) {
100
+ if (!featureLine.attributes) {
101
+ featureLine.attributes = {};
102
+ }
103
+ featureLine.attributes._lineHash = [String(record.lineHash)];
104
+ }
105
+ parser.addParsedFeatureLine(featureLine);
106
+ }
107
+ parser.finish();
108
+ return items;
109
+ }
25
110
  //# sourceMappingURL=api.js.map
package/esm/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAA;AAG5B;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;KACF,CAAC,CAAA;IAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AASxE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;KACF,CAAC,CAAA;IAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAa;IAC1C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;KACF,CAAC,CAAA;IAEF,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;KACF,CAAC,CAAA;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAoB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC5B,WAAW,CAAC,UAAU,GAAG,EAAE,CAAA;YAC7B,CAAC;YACD,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9D,CAAC;QACD,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB,EAAE,UAAmB;IAC7E,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,0BAA0B,CAAA;IAE5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAoB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC5B,WAAW,CAAC,UAAU,GAAG,EAAE,CAAA;YAC7B,CAAC;YACD,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9D,CAAC;QACD,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,KAAK,CAAA;AACd,CAAC"}
package/esm/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { parseStringSync } from './api';
2
- export { parseStringSync };
3
- export type { GFF3Comment, GFF3Feature, GFF3Directive, GFF3FeatureLineWithRefs, GFF3FeatureLine, GFF3Item, GFF3Sequence, } from './api';
1
+ import { parseArraySync, parseRecordsSync, parseRecordsSyncFast, parseStringSync } from './api.ts';
2
+ export { parseArraySync, parseRecordsSync, parseRecordsSyncFast, parseStringSync };
3
+ export type { GFF3Comment, GFF3Directive, GFF3Feature, GFF3FeatureLine, GFF3FeatureLineWithRefs, GFF3Item, GFF3Sequence, LineRecord, } from './api.ts';
package/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { parseStringSync } from './api';
2
- export { parseStringSync };
1
+ import { parseArraySync, parseRecordsSync, parseRecordsSyncFast, parseStringSync } from "./api.js";
2
+ export { parseArraySync, parseRecordsSync, parseRecordsSyncFast, parseStringSync };
3
3
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAClG,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAA"}
package/esm/parse.d.ts CHANGED
@@ -1,23 +1,10 @@
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
- }
1
+ import * as GFF3 from './util.ts';
14
2
  interface ParserArgs {
15
3
  featureCallback?(feature: GFF3.GFF3Feature): void;
16
4
  endCallback?(): void;
17
5
  commentCallback?(comment: GFF3.GFF3Comment): void;
18
6
  errorCallback?(error: string): void;
19
7
  directiveCallback?(directive: GFF3.GFF3Directive): void;
20
- sequenceCallback?(sequence: GFF3.GFF3Sequence): void;
21
8
  bufferSize?: number;
22
9
  disableDerivesFromReferences?: boolean;
23
10
  }
@@ -28,9 +15,7 @@ export default class Parser {
28
15
  errorCallback: (error: string) => void;
29
16
  disableDerivesFromReferences: boolean;
30
17
  directiveCallback: (directive: GFF3.GFF3Directive) => void;
31
- sequenceCallback: (sequence: GFF3.GFF3Sequence) => void;
32
18
  bufferSize: number;
33
- fastaParser: FASTAParser | undefined;
34
19
  eof: boolean;
35
20
  lineNumber: number;
36
21
  private _underConstructionTopLevel;
@@ -39,6 +24,7 @@ export default class Parser {
39
24
  private _underConstructionOrphans;
40
25
  constructor(args: ParserArgs);
41
26
  addLine(line: string): void;
27
+ addParsedFeatureLine(featureLine: GFF3.GFF3FeatureLine): void;
42
28
  finish(): void;
43
29
  private _emitItem;
44
30
  private _enforceBufferSizeLimit;
@@ -48,6 +34,7 @@ export default class Parser {
48
34
  */
49
35
  private _emitAllUnderConstructionFeatures;
50
36
  private _bufferLine;
37
+ private _bufferParsedLine;
51
38
  private _resolveReferencesTo;
52
39
  private _parseError;
53
40
  private _resolveReferencesFrom;