gff-nostream 1.3.9 → 2.0.0

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/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,21 @@ 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
+ export type { GFF3Comment, GFF3Directive, GFF3Feature, GFF3FeatureLine, GFF3FeatureLineWithRefs, GFF3Item, GFF3Sequence, } from './util.ts';
package/dist/api.js CHANGED
@@ -4,7 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseStringSync = parseStringSync;
7
- const parse_1 = __importDefault(require("./parse"));
7
+ exports.parseArraySync = parseArraySync;
8
+ exports.parseRecordsSync = parseRecordsSync;
9
+ const parse_ts_1 = __importDefault(require("./parse.js"));
10
+ const util_ts_1 = require("./util.js");
8
11
  /**
9
12
  * Synchronously parse a string containing GFF3 and return an array of the
10
13
  * parsed items.
@@ -15,11 +18,11 @@ const parse_1 = __importDefault(require("./parse"));
15
18
  */
16
19
  function parseStringSync(str) {
17
20
  const items = [];
18
- const parser = new parse_1.default({
21
+ const parser = new parse_ts_1.default({
19
22
  featureCallback: arg => items.push(arg),
20
23
  disableDerivesFromReferences: true,
21
24
  errorCallback: err => {
22
- throw err;
25
+ throw new Error(err);
23
26
  },
24
27
  });
25
28
  for (const line of str.split(/\r?\n/)) {
@@ -28,4 +31,56 @@ function parseStringSync(str) {
28
31
  parser.finish();
29
32
  return items;
30
33
  }
34
+ /**
35
+ * Synchronously parse an array of strings containing GFF3 and return an array of the
36
+ * parsed items.
37
+ *
38
+ * @param arr - GFF3 array of strings
39
+ * @param inputOptions - Parsing options
40
+ * @returns array of parsed features, directives, comments and/or sequences
41
+ */
42
+ function parseArraySync(arr) {
43
+ const items = [];
44
+ const parser = new parse_ts_1.default({
45
+ featureCallback: arg => items.push(arg),
46
+ disableDerivesFromReferences: true,
47
+ errorCallback: err => {
48
+ throw new Error(err);
49
+ },
50
+ });
51
+ for (const line of arr) {
52
+ parser.addLine(line);
53
+ }
54
+ parser.finish();
55
+ return items;
56
+ }
57
+ /**
58
+ * Synchronously parse an array of LineRecord objects containing pre-split GFF3
59
+ * fields and return an array of the parsed items.
60
+ *
61
+ * @param records - Array of LineRecord objects with fields array and optional lineHash
62
+ * @returns array of parsed features
63
+ */
64
+ function parseRecordsSync(records) {
65
+ const items = [];
66
+ const parser = new parse_ts_1.default({
67
+ featureCallback: arg => items.push(arg),
68
+ disableDerivesFromReferences: true,
69
+ errorCallback: err => {
70
+ throw new Error(err);
71
+ },
72
+ });
73
+ for (const record of records) {
74
+ const featureLine = (0, util_ts_1.parseFieldsArray)(record.fields);
75
+ if (record.lineHash !== undefined) {
76
+ if (!featureLine.attributes) {
77
+ featureLine.attributes = {};
78
+ }
79
+ featureLine.attributes._lineHash = [String(record.lineHash)];
80
+ }
81
+ parser.addParsedFeatureLine(featureLine);
82
+ }
83
+ parser.finish();
84
+ return items;
85
+ }
31
86
  //# sourceMappingURL=api.js.map
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;AAWA,0CAgBC;AA3BD,oDAA4B;AAG5B;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,eAAM,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":";;;;;AAkBA,0CAgBC;AAUD,wCAgBC;AASD,4CAuBC;AA5FD,0DAA+B;AAC/B,uCAA4C;AAS5C;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,kBAAM,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,SAAgB,cAAc,CAAC,GAAa;IAC1C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,kBAAM,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,SAAgB,gBAAgB,CAAC,OAAqB;IACpD,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,kBAAM,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,IAAA,0BAAgB,EAAC,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"}
package/dist/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, parseStringSync } from './api.ts';
2
+ export { parseArraySync, parseRecordsSync, parseStringSync };
3
+ export type { GFF3Comment, GFF3Directive, GFF3Feature, GFF3FeatureLine, GFF3FeatureLineWithRefs, GFF3Item, GFF3Sequence, LineRecord, } from './api.ts';
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseStringSync = void 0;
4
- const api_1 = require("./api");
5
- Object.defineProperty(exports, "parseStringSync", { enumerable: true, get: function () { return api_1.parseStringSync; } });
3
+ exports.parseStringSync = exports.parseRecordsSync = exports.parseArraySync = void 0;
4
+ const api_ts_1 = require("./api.js");
5
+ Object.defineProperty(exports, "parseArraySync", { enumerable: true, get: function () { return api_ts_1.parseArraySync; } });
6
+ Object.defineProperty(exports, "parseRecordsSync", { enumerable: true, get: function () { return api_ts_1.parseRecordsSync; } });
7
+ Object.defineProperty(exports, "parseStringSync", { enumerable: true, get: function () { return api_ts_1.parseStringSync; } });
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAuC;AAC9B,gGADA,qBAAe,OACA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAA4E;AACnE,+FADA,uBAAc,OACA;AAAE,iGADA,yBAAgB,OACA;AAAE,gGADA,wBAAe,OACA"}
package/dist/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;
package/dist/parse.js CHANGED
@@ -33,46 +33,18 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FASTAParser = void 0;
37
- const GFF3 = __importStar(require("./util"));
36
+ const GFF3 = __importStar(require("./util.js"));
38
37
  const containerAttributes = {
39
38
  Parent: 'child_features',
40
39
  Derives_from: 'derived_features',
41
40
  };
42
- class FASTAParser {
43
- constructor(seqCallback) {
44
- this.seqCallback = seqCallback;
45
- this.currentSequence = undefined;
46
- }
47
- addLine(line) {
48
- const defMatch = /^>\s*(\S+)\s*(.*)/.exec(line);
49
- if (defMatch) {
50
- this._flush();
51
- this.currentSequence = { id: defMatch[1], sequence: '' };
52
- if (defMatch[2]) {
53
- this.currentSequence.description = defMatch[2].trim();
54
- }
55
- }
56
- else if (this.currentSequence && /\S/.test(line)) {
57
- this.currentSequence.sequence += line.replaceAll(/\s/g, '');
58
- }
59
- }
60
- _flush() {
61
- if (this.currentSequence) {
62
- this.seqCallback(this.currentSequence);
63
- }
64
- }
65
- finish() {
66
- this._flush();
67
- }
68
- }
69
- exports.FASTAParser = FASTAParser;
41
+ const featureLineRegex = /^\s*[^#\s>]/;
42
+ const commentOrDirectiveRegex = /^\s*(#+)(.*)/;
43
+ const blankLineRegex = /^\s*$/;
44
+ const fastaStartRegex = /^\s*>/;
45
+ const lineEndingRegex = /\r?\n?$/g;
70
46
  class Parser {
71
47
  constructor(args) {
72
- this.fastaParser = undefined;
73
- // if this is true, the parser ignores the
74
- // rest of the lines in the file. currently
75
- // set when the file switches over to FASTA
76
48
  this.eof = false;
77
49
  this.lineNumber = 0;
78
50
  // features that we have to keep on hand for now because they
@@ -96,29 +68,22 @@ class Parser {
96
68
  this.commentCallback = args.commentCallback || nullFunc;
97
69
  this.errorCallback = args.errorCallback || nullFunc;
98
70
  this.directiveCallback = args.directiveCallback || nullFunc;
99
- this.sequenceCallback = args.sequenceCallback || nullFunc;
100
71
  this.disableDerivesFromReferences =
101
72
  args.disableDerivesFromReferences || false;
102
73
  // number of lines to buffer
103
74
  this.bufferSize = args.bufferSize === undefined ? Infinity : args.bufferSize;
104
75
  }
105
76
  addLine(line) {
106
- // if we have transitioned to a fasta section, just delegate to that parser
107
- if (this.fastaParser) {
108
- this.fastaParser.addLine(line);
109
- return;
110
- }
111
77
  if (this.eof) {
112
- // otherwise, if we are done, ignore this line
113
78
  return;
114
79
  }
115
80
  this.lineNumber += 1;
116
- if (/^\s*[^#\s>]/.test(line)) {
81
+ if (featureLineRegex.test(line)) {
117
82
  // feature line, most common case
118
83
  this._bufferLine(line);
119
84
  return;
120
85
  }
121
- const match = /^\s*(#+)(.*)/.exec(line);
86
+ const match = commentOrDirectiveRegex.exec(line);
122
87
  if (match) {
123
88
  // directive or comment
124
89
  const [, hashsigns] = match;
@@ -133,7 +98,6 @@ class Parser {
133
98
  if (directive.directive === 'FASTA') {
134
99
  this._emitAllUnderConstructionFeatures();
135
100
  this.eof = true;
136
- this.fastaParser = new FASTAParser(this.sequenceCallback);
137
101
  }
138
102
  else {
139
103
  this._emitItem(directive);
@@ -141,31 +105,32 @@ class Parser {
141
105
  }
142
106
  }
143
107
  else {
144
- contents = contents.replace(/\s*/, '');
145
- this._emitItem({ comment: contents });
108
+ this._emitItem({ comment: contents.trimStart() });
146
109
  }
147
110
  }
148
- else if (/^\s*$/.test(line)) {
111
+ else if (blankLineRegex.test(line)) {
149
112
  // blank line, do nothing
150
113
  }
151
- else if (/^\s*>/.test(line)) {
152
- // implicit beginning of a FASTA section
114
+ else if (fastaStartRegex.test(line)) {
115
+ // implicit beginning of a FASTA section, stop parsing
153
116
  this._emitAllUnderConstructionFeatures();
154
117
  this.eof = true;
155
- this.fastaParser = new FASTAParser(this.sequenceCallback);
156
- this.fastaParser.addLine(line);
157
118
  }
158
119
  else {
159
120
  // it's a parse error
160
- const errLine = line.replaceAll(/\r?\n?$/g, '');
121
+ const errLine = line.replaceAll(lineEndingRegex, '');
161
122
  throw new Error(`GFF3 parse error. Cannot parse '${errLine}'.`);
162
123
  }
163
124
  }
125
+ addParsedFeatureLine(featureLine) {
126
+ if (this.eof) {
127
+ return;
128
+ }
129
+ this.lineNumber += 1;
130
+ this._bufferParsedLine(featureLine);
131
+ }
164
132
  finish() {
165
133
  this._emitAllUnderConstructionFeatures();
166
- if (this.fastaParser) {
167
- this.fastaParser.finish();
168
- }
169
134
  this.endCallback();
170
135
  }
171
136
  _emitItem(i) {
@@ -181,19 +146,24 @@ class Parser {
181
146
  }
182
147
  _enforceBufferSizeLimit(additionalItemCount = 0) {
183
148
  const _unbufferItem = (item) => {
184
- var _a, _b;
185
- if (item && Array.isArray(item) && ((_b = (_a = item[0].attributes) === null || _a === void 0 ? void 0 : _a.ID) === null || _b === void 0 ? void 0 : _b[0])) {
149
+ if (item && Array.isArray(item) && item[0].attributes?.ID?.[0]) {
186
150
  const ids = item[0].attributes.ID;
187
151
  ids.forEach(id => {
188
152
  delete this._underConstructionById[id];
189
153
  delete this._completedReferences[id];
190
154
  });
191
155
  item.forEach(i => {
156
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
192
157
  if (i.child_features) {
193
- i.child_features.forEach(c => _unbufferItem(c));
158
+ i.child_features.forEach(c => {
159
+ _unbufferItem(c);
160
+ });
194
161
  }
162
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
195
163
  if (i.derived_features) {
196
- i.derived_features.forEach(d => _unbufferItem(d));
164
+ i.derived_features.forEach(d => {
165
+ _unbufferItem(d);
166
+ });
197
167
  }
198
168
  });
199
169
  }
@@ -218,25 +188,24 @@ class Parser {
218
188
  this._completedReferences = {};
219
189
  // if we have any orphans hanging around still, this is a
220
190
  // problem. die with a parse error
221
- if (Array.from(Object.values(this._underConstructionOrphans)).length) {
222
- throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${Object.keys(this._underConstructionOrphans).join(',')}`);
191
+ const orphanKeys = Object.keys(this._underConstructionOrphans);
192
+ if (orphanKeys.length) {
193
+ throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${orphanKeys.join(',')}`);
223
194
  }
224
195
  }
225
- // do the right thing with a newly-parsed feature line
226
196
  _bufferLine(line) {
227
- var _a, _b, _c;
228
- const rawFeatureLine = GFF3.parseFeature(line);
229
- const featureLine = Object.assign(Object.assign({}, rawFeatureLine), { child_features: [], derived_features: [] });
230
- // featureLine._lineNumber = this.lineNumber //< debugging aid
231
- // NOTE: a feature is an arrayref of one or more feature lines.
232
- const ids = ((_a = featureLine.attributes) === null || _a === void 0 ? void 0 : _a.ID) || [];
233
- const parents = ((_b = featureLine.attributes) === null || _b === void 0 ? void 0 : _b.Parent) || [];
197
+ this._bufferParsedLine(GFF3.parseFeature(line));
198
+ }
199
+ _bufferParsedLine(rawFeatureLine) {
200
+ const featureLine = rawFeatureLine;
201
+ featureLine.child_features = [];
202
+ featureLine.derived_features = [];
203
+ const ids = featureLine.attributes?.ID || [];
204
+ const parents = featureLine.attributes?.Parent || [];
234
205
  const derives = this.disableDerivesFromReferences
235
206
  ? []
236
- : ((_c = featureLine.attributes) === null || _c === void 0 ? void 0 : _c.Derives_from) || [];
207
+ : featureLine.attributes?.Derives_from || [];
237
208
  if (!ids.length && !parents.length && !derives.length) {
238
- // if it has no IDs and does not refer to anything, we can just
239
- // output it
240
209
  this._emitItem([featureLine]);
241
210
  return;
242
211
  }
@@ -244,7 +213,6 @@ class Parser {
244
213
  ids.forEach(id => {
245
214
  const existing = this._underConstructionById[id];
246
215
  if (existing) {
247
- // another location of the same feature
248
216
  if (existing[existing.length - 1].type !== featureLine.type) {
249
217
  this._parseError(`multi-line feature "${id}" has inconsistent types: "${featureLine.type}", "${existing[existing.length - 1].type}"`);
250
218
  }
@@ -252,37 +220,28 @@ class Parser {
252
220
  feature = existing;
253
221
  }
254
222
  else {
255
- // haven't seen it yet, so buffer it so we can attach
256
- // child features to it
257
223
  feature = [featureLine];
258
224
  this._enforceBufferSizeLimit(1);
259
225
  if (!parents.length && !derives.length) {
260
226
  this._underConstructionTopLevel.push(feature);
261
227
  }
262
228
  this._underConstructionById[id] = feature;
263
- // see if we have anything buffered that refers to it
264
229
  this._resolveReferencesTo(feature, id);
265
230
  }
266
231
  });
267
- // try to resolve all its references
268
- this._resolveReferencesFrom(feature || [featureLine], { Parent: parents, Derives_from: derives }, ids);
232
+ this._resolveReferencesFrom(
233
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
234
+ feature || [featureLine], { Parent: parents, Derives_from: derives }, ids);
269
235
  }
270
236
  _resolveReferencesTo(feature, id) {
271
237
  const references = this._underConstructionOrphans[id];
272
- // references is of the form
273
- // {
274
- // 'Parent' : [ orphans that have a Parent attr referencing this feature ],
275
- // 'Derives_from' : [ orphans that have a Derives_from attr referencing this feature ],
276
- // }
277
238
  if (!references) {
278
239
  return;
279
240
  }
280
- feature.forEach(loc => {
241
+ for (const loc of feature) {
281
242
  loc.child_features.push(...references.Parent);
282
- });
283
- feature.forEach(loc => {
284
243
  loc.derived_features.push(...references.Derives_from);
285
- });
244
+ }
286
245
  delete this._underConstructionOrphans[id];
287
246
  }
288
247
  _parseError(message) {
@@ -290,61 +249,60 @@ class Parser {
290
249
  this.errorCallback(`${this.lineNumber}: ${message}`);
291
250
  }
292
251
  _resolveReferencesFrom(feature, references, ids) {
293
- // this is all a bit more awkward in javascript than it was in perl
294
- function postSet(obj, slot1, slot2) {
295
- let subObj = obj[slot1];
296
- if (!subObj) {
297
- subObj = {};
298
- obj[slot1] = subObj;
299
- }
300
- const returnVal = subObj[slot2] || false;
301
- subObj[slot2] = true;
302
- return returnVal;
303
- }
304
- references.Parent.forEach(toId => {
252
+ for (const toId of references.Parent) {
305
253
  const otherFeature = this._underConstructionById[toId];
306
254
  if (otherFeature) {
307
- const pname = containerAttributes.Parent;
308
- if (!ids.filter(id => postSet(this._completedReferences, id, `Parent,${toId}`)).length) {
309
- otherFeature.forEach(location => {
310
- location[pname].push(feature);
311
- });
255
+ let dominated = false;
256
+ for (const id of ids) {
257
+ const domKey = `Parent,${toId}`;
258
+ const rec = this._completedReferences[id] || (this._completedReferences[id] = {});
259
+ if (rec[domKey]) {
260
+ dominated = true;
261
+ }
262
+ rec[domKey] = true;
263
+ }
264
+ if (!dominated) {
265
+ for (const location of otherFeature) {
266
+ location.child_features.push(feature);
267
+ }
312
268
  }
313
269
  }
314
270
  else {
315
271
  let ref = this._underConstructionOrphans[toId];
316
272
  if (!ref) {
317
- ref = {
318
- Parent: [],
319
- Derives_from: [],
320
- };
273
+ ref = { Parent: [], Derives_from: [] };
321
274
  this._underConstructionOrphans[toId] = ref;
322
275
  }
323
276
  ref.Parent.push(feature);
324
277
  }
325
- });
326
- references.Derives_from.forEach(toId => {
278
+ }
279
+ for (const toId of references.Derives_from) {
327
280
  const otherFeature = this._underConstructionById[toId];
328
281
  if (otherFeature) {
329
- const pname = containerAttributes.Derives_from;
330
- if (!ids.filter(id => postSet(this._completedReferences, id, `Derives_from,${toId}`)).length) {
331
- otherFeature.forEach(location => {
332
- location[pname].push(feature);
333
- });
282
+ let dominated = false;
283
+ for (const id of ids) {
284
+ const domKey = `Derives_from,${toId}`;
285
+ const rec = this._completedReferences[id] || (this._completedReferences[id] = {});
286
+ if (rec[domKey]) {
287
+ dominated = true;
288
+ }
289
+ rec[domKey] = true;
290
+ }
291
+ if (!dominated) {
292
+ for (const location of otherFeature) {
293
+ location.derived_features.push(feature);
294
+ }
334
295
  }
335
296
  }
336
297
  else {
337
298
  let ref = this._underConstructionOrphans[toId];
338
299
  if (!ref) {
339
- ref = {
340
- Parent: [],
341
- Derives_from: [],
342
- };
300
+ ref = { Parent: [], Derives_from: [] };
343
301
  this._underConstructionOrphans[toId] = ref;
344
302
  }
345
303
  ref.Derives_from.push(feature);
346
304
  }
347
- });
305
+ }
348
306
  }
349
307
  }
350
308
  exports.default = Parser;
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -33,6 +33,7 @@ export declare function parseAttributes(attrString: string): GFF3Attributes;
33
33
  * @returns The parsed feature
34
34
  */
35
35
  export declare function parseFeature(line: string): GFF3FeatureLine;
36
+ export declare function parseFieldsArray(f: (string | null | undefined)[]): GFF3FeatureLine;
36
37
  /**
37
38
  * Parse a GFF3 directive line.
38
39
  *