@teselagen/bio-parsers 0.3.6 → 0.3.8

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/fastaToJson.d.ts CHANGED
@@ -5,4 +5,4 @@ export default fastaToJson;
5
5
  * @param {[function]} onFileParsed [callback for a parsed sequence]
6
6
  * @author Joshua P Nixon
7
7
  */
8
- declare function fastaToJson(fileString: [string], options: any): any;
8
+ declare function fastaToJson(fileString: [string], options?: {}): any;
package/index.js CHANGED
@@ -40,6 +40,7 @@ var __async = (__this, __arguments, generator) => {
40
40
  step((generator = generator.apply(__this, __arguments)).next());
41
41
  });
42
42
  };
43
+ var _a, _b;
43
44
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
44
45
  const untitledSequenceName = "Untitled Sequence";
45
46
  const gbDivisions = {
@@ -96,6 +97,19 @@ function createInitialSequence(options) {
96
97
  };
97
98
  }
98
99
  __name(createInitialSequence, "createInitialSequence");
100
+ function extractFileExtension(name) {
101
+ if (typeof name === "string") {
102
+ let ext = "";
103
+ const match = name.match(/\.(\w+)$/);
104
+ if (match && match[1]) {
105
+ ext = match[1];
106
+ }
107
+ return ext;
108
+ } else {
109
+ return "";
110
+ }
111
+ }
112
+ __name(extractFileExtension, "extractFileExtension");
99
113
  function splitStringIntoLines(string) {
100
114
  let lines = [];
101
115
  if (string === "") {
@@ -121,10 +135,7 @@ function getAugmentedNamespace(n) {
121
135
  if (typeof f == "function") {
122
136
  var a = /* @__PURE__ */ __name(function a2() {
123
137
  if (this instanceof a2) {
124
- var args = [null];
125
- args.push.apply(args, arguments);
126
- var Ctor = Function.bind.apply(f, args);
127
- return new Ctor();
138
+ return Reflect.construct(f, arguments, this.constructor);
128
139
  }
129
140
  return f.apply(this, arguments);
130
141
  }, "a");
@@ -19372,7 +19383,7 @@ function validateSequence(sequence, options = {}) {
19372
19383
  (u) => u === "U" ? "T" : "t"
19373
19384
  );
19374
19385
  }
19375
- if (temp !== sequence.sequence && !sequence.isDNA && !sequence.isProtein) {
19386
+ if (temp !== sequence.sequence && !sequence.isDNA && !sequence.isProtein && sequence.isRNA !== false) {
19376
19387
  sequence.type = "RNA";
19377
19388
  sequence.sequence = temp;
19378
19389
  } else {
@@ -19559,7 +19570,11 @@ function validateSequenceArray(parsingResultArray, options) {
19559
19570
  return parsingResultArray;
19560
19571
  }
19561
19572
  __name(validateSequenceArray, "validateSequenceArray");
19562
- function fastaToJson(fileString, options) {
19573
+ function fastaToJson(fileString, options = {}) {
19574
+ const ext = extractFileExtension(options.fileName);
19575
+ if (/^(faa)$/.test(ext)) {
19576
+ options.isProtein = true;
19577
+ }
19563
19578
  let resultArray = [];
19564
19579
  let result = null;
19565
19580
  try {
@@ -20221,7 +20236,7 @@ function getLengthOfWhiteSpaceBeforeStartOfLetters(string) {
20221
20236
  }
20222
20237
  }
20223
20238
  __name(getLengthOfWhiteSpaceBeforeStartOfLetters, "getLengthOfWhiteSpaceBeforeStartOfLetters");
20224
- class Match {
20239
+ const _Match = class _Match {
20225
20240
  constructor(props) {
20226
20241
  Object.assign(this, props);
20227
20242
  this.value = this.obj[this.prop];
@@ -20238,8 +20253,9 @@ class Match {
20238
20253
  log() {
20239
20254
  console.info(this.toString());
20240
20255
  }
20241
- }
20242
- __name(Match, "Match");
20256
+ };
20257
+ __name(_Match, "Match");
20258
+ let Match = _Match;
20243
20259
  const GLOBAL = typeof window == "object" ? window : global;
20244
20260
  function searchWholeObjByName(what, where) {
20245
20261
  const searchBy = /* @__PURE__ */ __name((what2, where2, prop) => what2 == prop, "searchBy");
@@ -20285,13 +20301,13 @@ function searchWholeObjByName(what, where) {
20285
20301
  }
20286
20302
  __name(searchWholeObjByName, "searchWholeObjByName");
20287
20303
  function searchWholeObjByNameSimple(what, where) {
20288
- var _a2, _b2, _c;
20289
- return (_c = (_b2 = (_a2 = searchWholeObjByName(what, where)) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.value) == null ? void 0 : _c[0];
20304
+ var _a3, _b3, _c;
20305
+ return (_c = (_b3 = (_a3 = searchWholeObjByName(what, where)) == null ? void 0 : _a3[0]) == null ? void 0 : _b3.value) == null ? void 0 : _c[0];
20290
20306
  }
20291
20307
  __name(searchWholeObjByNameSimple, "searchWholeObjByNameSimple");
20292
20308
  function searchWholeObjByNameSimpleArray(what, where) {
20293
- var _a2, _b2;
20294
- return (_b2 = (_a2 = searchWholeObjByName(what, where)) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.value;
20309
+ var _a3, _b3;
20310
+ return (_b3 = (_a3 = searchWholeObjByName(what, where)) == null ? void 0 : _a3[0]) == null ? void 0 : _b3.value;
20295
20311
  }
20296
20312
  __name(searchWholeObjByNameSimpleArray, "searchWholeObjByNameSimpleArray");
20297
20313
  var validator$2 = {};
@@ -20719,7 +20735,7 @@ const buildOptions$1 = /* @__PURE__ */ __name(function(options) {
20719
20735
  }, "buildOptions$1");
20720
20736
  OptionsBuilder.buildOptions = buildOptions$1;
20721
20737
  OptionsBuilder.defaultOptions = defaultOptions$1;
20722
- class XmlNode {
20738
+ const _XmlNode = class _XmlNode {
20723
20739
  constructor(tagname) {
20724
20740
  this.tagname = tagname;
20725
20741
  this.child = [];
@@ -20739,8 +20755,9 @@ class XmlNode {
20739
20755
  this.child.push({ [node.tagname]: node.child });
20740
20756
  }
20741
20757
  }
20742
- }
20743
- __name(XmlNode, "XmlNode");
20758
+ };
20759
+ __name(_XmlNode, "XmlNode");
20760
+ let XmlNode = _XmlNode;
20744
20761
  var xmlNode$1 = XmlNode;
20745
20762
  const util$2 = util$4;
20746
20763
  function readDocType$1(xmlData, i) {
@@ -20951,7 +20968,7 @@ const xmlNode = xmlNode$1;
20951
20968
  const readDocType = DocTypeReader;
20952
20969
  const toNumber = strnum;
20953
20970
  "<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g, util$1.nameRegexp);
20954
- let OrderedObjParser$1 = /* @__PURE__ */ __name(class OrderedObjParser {
20971
+ let OrderedObjParser$1 = (_a = class {
20955
20972
  constructor(options) {
20956
20973
  this.options = options;
20957
20974
  this.currentNode = null;
@@ -20990,7 +21007,7 @@ let OrderedObjParser$1 = /* @__PURE__ */ __name(class OrderedObjParser {
20990
21007
  this.saveTextToParentTag = saveTextToParentTag;
20991
21008
  this.addChild = addChild;
20992
21009
  }
20993
- }, "OrderedObjParser");
21010
+ }, __name(_a, "OrderedObjParser"), _a);
20994
21011
  function addExternalEntities(externalEntities) {
20995
21012
  const entKeys = Object.keys(externalEntities);
20996
21013
  for (let i = 0; i < entKeys.length; i++) {
@@ -21222,6 +21239,7 @@ const parseXml = /* @__PURE__ */ __name(function(xmlData) {
21222
21239
  if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
21223
21240
  if (tagName[tagName.length - 1] === "/") {
21224
21241
  tagName = tagName.substr(0, tagName.length - 1);
21242
+ jPath = jPath.substr(0, jPath.length - 1);
21225
21243
  tagExp = tagName;
21226
21244
  } else {
21227
21245
  tagExp = tagExp.substr(0, tagExp.length - 1);
@@ -21539,10 +21557,10 @@ function isLeafTag(obj, options) {
21539
21557
  __name(isLeafTag, "isLeafTag");
21540
21558
  node2json.prettify = prettify$1;
21541
21559
  const { buildOptions } = OptionsBuilder;
21542
- const OrderedObjParser2 = OrderedObjParser_1;
21560
+ const OrderedObjParser = OrderedObjParser_1;
21543
21561
  const { prettify } = node2json;
21544
21562
  const validator$1 = validator$2;
21545
- let XMLParser$1 = /* @__PURE__ */ __name(class XMLParser {
21563
+ let XMLParser$1 = (_b = class {
21546
21564
  constructor(options) {
21547
21565
  this.externalEntities = {};
21548
21566
  this.options = buildOptions(options);
@@ -21568,7 +21586,7 @@ let XMLParser$1 = /* @__PURE__ */ __name(class XMLParser {
21568
21586
  throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);
21569
21587
  }
21570
21588
  }
21571
- const orderedObjParser = new OrderedObjParser2(this.options);
21589
+ const orderedObjParser = new OrderedObjParser(this.options);
21572
21590
  orderedObjParser.addExternalEntities(this.externalEntities);
21573
21591
  const orderedResult = orderedObjParser.parseXml(xmlData);
21574
21592
  if (this.options.preserveOrder || orderedResult === void 0)
@@ -21592,7 +21610,7 @@ let XMLParser$1 = /* @__PURE__ */ __name(class XMLParser {
21592
21610
  this.externalEntities[key] = value;
21593
21611
  }
21594
21612
  }
21595
- }, "XMLParser");
21613
+ }, __name(_b, "XMLParser"), _b);
21596
21614
  var XMLParser_1 = XMLParser$1;
21597
21615
  const EOL = "\n";
21598
21616
  function toXml(jArray, options) {
@@ -21797,13 +21815,18 @@ Builder.prototype.j2x = function(jObj, level) {
21797
21815
  let attrStr = "";
21798
21816
  let val2 = "";
21799
21817
  for (let key in jObj) {
21800
- if (typeof jObj[key] === "undefined")
21801
- ;
21802
- else if (jObj[key] === null) {
21803
- if (key[0] === "?")
21818
+ if (typeof jObj[key] === "undefined") {
21819
+ if (this.isAttribute(key)) {
21820
+ val2 += "";
21821
+ }
21822
+ } else if (jObj[key] === null) {
21823
+ if (this.isAttribute(key)) {
21824
+ val2 += "";
21825
+ } else if (key[0] === "?") {
21804
21826
  val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar;
21805
- else
21827
+ } else {
21806
21828
  val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar;
21829
+ }
21807
21830
  } else if (jObj[key] instanceof Date) {
21808
21831
  val2 += this.buildTextValNode(jObj[key], key, "", level);
21809
21832
  } else if (typeof jObj[key] !== "object") {
@@ -21889,7 +21912,7 @@ Builder.prototype.buildObjectNode = function(val2, key, attrStr, level) {
21889
21912
  piClosingChar = "?";
21890
21913
  tagEndExp = "";
21891
21914
  }
21892
- if (attrStr && val2.indexOf("<") === -1) {
21915
+ if ((attrStr || attrStr === "") && val2.indexOf("<") === -1) {
21893
21916
  return this.indentate(level) + "<" + key + attrStr + piClosingChar + ">" + val2 + tagEndExp;
21894
21917
  } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
21895
21918
  return this.indentate(level) + `<!--${val2}-->` + this.newLine;
@@ -21941,7 +21964,7 @@ function indentate(level) {
21941
21964
  }
21942
21965
  __name(indentate, "indentate");
21943
21966
  function isAttribute(name) {
21944
- if (name.startsWith(this.options.attributeNamePrefix)) {
21967
+ if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {
21945
21968
  return name.substr(this.attrPrefixLen);
21946
21969
  } else {
21947
21970
  return false;
@@ -21950,10 +21973,10 @@ function isAttribute(name) {
21950
21973
  __name(isAttribute, "isAttribute");
21951
21974
  var json2xml = Builder;
21952
21975
  const validator = validator$2;
21953
- const XMLParser2 = XMLParser_1;
21976
+ const XMLParser = XMLParser_1;
21954
21977
  const XMLBuilder = json2xml;
21955
21978
  var fxp = {
21956
- XMLParser: XMLParser2,
21979
+ XMLParser,
21957
21980
  XMLValidator: validator,
21958
21981
  XMLBuilder
21959
21982
  };
@@ -22069,19 +22092,6 @@ function parseSbolJson(sbolJson, options) {
22069
22092
  };
22070
22093
  }
22071
22094
  __name(parseSbolJson, "parseSbolJson");
22072
- function extractFileExtension(name) {
22073
- if (typeof name === "string") {
22074
- let ext = "";
22075
- const match = name.match(/\.(\w+)$/);
22076
- if (match && match[1]) {
22077
- ext = match[1];
22078
- }
22079
- return ext;
22080
- } else {
22081
- return "";
22082
- }
22083
- }
22084
- __name(extractFileExtension, "extractFileExtension");
22085
22095
  /*!
22086
22096
  * Copyright 2008 Fair Oaks Labs, Inc.
22087
22097
  * All rights reserved.
@@ -25884,7 +25894,8 @@ var buffer$1 = {};
25884
25894
  }, "fill");
25885
25895
  const errors = {};
25886
25896
  function E(sym, getMessage, Base) {
25887
- errors[sym] = /* @__PURE__ */ __name(class NodeError extends Base {
25897
+ var _a3;
25898
+ errors[sym] = (_a3 = class extends Base {
25888
25899
  constructor() {
25889
25900
  super();
25890
25901
  Object.defineProperty(this, "message", {
@@ -25910,7 +25921,7 @@ var buffer$1 = {};
25910
25921
  toString() {
25911
25922
  return `${this.name} [${sym}]: ${this.message}`;
25912
25923
  }
25913
- }, "NodeError");
25924
+ }, __name(_a3, "NodeError"), _a3);
25914
25925
  }
25915
25926
  __name(E, "E");
25916
25927
  E(
@@ -29393,7 +29404,7 @@ const containerAttributes = {
29393
29404
  Parent: "child_features",
29394
29405
  Derives_from: "derived_features"
29395
29406
  };
29396
- class FASTAParser {
29407
+ const _FASTAParser = class _FASTAParser {
29397
29408
  constructor(seqCallback) {
29398
29409
  this.seqCallback = seqCallback;
29399
29410
  this.currentSequence = void 0;
@@ -29416,9 +29427,10 @@ class FASTAParser {
29416
29427
  finish() {
29417
29428
  this._flush();
29418
29429
  }
29419
- }
29420
- __name(FASTAParser, "FASTAParser");
29421
- class Parser {
29430
+ };
29431
+ __name(_FASTAParser, "FASTAParser");
29432
+ let FASTAParser = _FASTAParser;
29433
+ const _Parser = class _Parser {
29422
29434
  constructor(args) {
29423
29435
  this.fastaParser = void 0;
29424
29436
  this.eof = false;
@@ -29537,14 +29549,14 @@ class Parser {
29537
29549
  }
29538
29550
  // do the right thing with a newly-parsed feature line
29539
29551
  _bufferLine(line) {
29540
- var _a2, _b2, _c;
29552
+ var _a3, _b3, _c;
29541
29553
  const rawFeatureLine = parseFeature(line);
29542
29554
  const featureLine = __spreadProps(__spreadValues({}, rawFeatureLine), {
29543
29555
  child_features: [],
29544
29556
  derived_features: []
29545
29557
  });
29546
- const ids = ((_a2 = featureLine.attributes) === null || _a2 === void 0 ? void 0 : _a2.ID) || [];
29547
- const parents = ((_b2 = featureLine.attributes) === null || _b2 === void 0 ? void 0 : _b2.Parent) || [];
29558
+ const ids = ((_a3 = featureLine.attributes) === null || _a3 === void 0 ? void 0 : _a3.ID) || [];
29559
+ const parents = ((_b3 = featureLine.attributes) === null || _b3 === void 0 ? void 0 : _b3.Parent) || [];
29548
29560
  const derives = this.disableDerivesFromReferences ? [] : ((_c = featureLine.attributes) === null || _c === void 0 ? void 0 : _c.Derives_from) || [];
29549
29561
  if (!ids.length && !parents.length && !derives.length) {
29550
29562
  this._emitItem([featureLine]);
@@ -29642,8 +29654,9 @@ class Parser {
29642
29654
  }
29643
29655
  });
29644
29656
  }
29645
- }
29646
- __name(Parser, "Parser");
29657
+ };
29658
+ __name(_Parser, "Parser");
29659
+ let Parser = _Parser;
29647
29660
  function _callback(callback) {
29648
29661
  if (process && process.nextTick)
29649
29662
  process.nextTick(callback);
@@ -29670,7 +29683,7 @@ function _processParseOptions(options) {
29670
29683
  return out;
29671
29684
  }
29672
29685
  __name(_processParseOptions, "_processParseOptions");
29673
- class GFFTransform extends streamBrowserify.Transform {
29686
+ const _GFFTransform = class _GFFTransform extends streamBrowserify.Transform {
29674
29687
  constructor(inputOptions = {}) {
29675
29688
  super({ objectMode: true });
29676
29689
  this.textBuffer = "";
@@ -29710,8 +29723,9 @@ class GFFTransform extends streamBrowserify.Transform {
29710
29723
  this.parser.finish();
29711
29724
  _callback(callback);
29712
29725
  }
29713
- }
29714
- __name(GFFTransform, "GFFTransform");
29726
+ };
29727
+ __name(_GFFTransform, "GFFTransform");
29728
+ let GFFTransform = _GFFTransform;
29715
29729
  function parseStream(options = {}) {
29716
29730
  return new GFFTransform(options);
29717
29731
  }
@@ -29755,7 +29769,7 @@ function formatSync(items) {
29755
29769
  return str;
29756
29770
  }
29757
29771
  __name(formatSync, "formatSync");
29758
- class FormattingTransform extends streamBrowserify.Transform {
29772
+ const _FormattingTransform = class _FormattingTransform extends streamBrowserify.Transform {
29759
29773
  constructor(options = {}) {
29760
29774
  super(Object.assign(options, { objectMode: true }));
29761
29775
  this.linesSinceLastSyncMark = 0;
@@ -29797,8 +29811,9 @@ class FormattingTransform extends streamBrowserify.Transform {
29797
29811
  this.haveWeEmittedData = true;
29798
29812
  _callback(callback);
29799
29813
  }
29800
- }
29801
- __name(FormattingTransform, "FormattingTransform");
29814
+ };
29815
+ __name(_FormattingTransform, "FormattingTransform");
29816
+ let FormattingTransform = _FormattingTransform;
29802
29817
  function formatStream(options = {}) {
29803
29818
  return new FormattingTransform(options);
29804
29819
  }
@@ -29902,8 +29917,8 @@ function geneiousXmlToJson(string, options) {
29902
29917
  const toRet = lodashExports.filter(
29903
29918
  resultArray,
29904
29919
  (r) => {
29905
- var _a2, _b2;
29906
- return (_b2 = (_a2 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a2.sequence) == null ? void 0 : _b2.length;
29920
+ var _a3, _b3;
29921
+ return (_b3 = (_a3 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a3.sequence) == null ? void 0 : _b3.length;
29907
29922
  }
29908
29923
  );
29909
29924
  if (toRet.length)
@@ -30013,8 +30028,8 @@ function jbeiXmlToJson(string, options) {
30013
30028
  const toRet = lodashExports.filter(
30014
30029
  resultArray,
30015
30030
  (r) => {
30016
- var _a2, _b2;
30017
- return (_b2 = (_a2 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a2.sequence) == null ? void 0 : _b2.length;
30031
+ var _a3, _b3;
30032
+ return (_b3 = (_a3 = r == null ? void 0 : r.parsedSequence) == null ? void 0 : _a3.sequence) == null ? void 0 : _b3.length;
30018
30033
  }
30019
30034
  );
30020
30035
  if (toRet.length)
@@ -30161,9 +30176,9 @@ var freb = /* @__PURE__ */ __name(function(eb, start) {
30161
30176
  }
30162
30177
  return { b, r };
30163
30178
  }, "freb");
30164
- var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
30179
+ var _a2 = freb(fleb, 2), fl = _a2.b, revfl = _a2.r;
30165
30180
  fl[28] = 258, revfl[258] = 28;
30166
- var _b = freb(fdeb, 0), fd = _b.b;
30181
+ var _b2 = freb(fdeb, 0), fd = _b2.b;
30167
30182
  var rev = new u16(32768);
30168
30183
  for (var i = 0; i < 32768; ++i) {
30169
30184
  var x = (i & 43690) >> 1 | (i & 21845) << 1;
@@ -30466,7 +30481,7 @@ function strFromU8(dat, latin1) {
30466
30481
  } else if (td) {
30467
30482
  return td.decode(dat);
30468
30483
  } else {
30469
- var _a2 = dutf8(dat), s = _a2.s, r = _a2.r;
30484
+ var _a3 = dutf8(dat), s = _a3.s, r = _a3.r;
30470
30485
  if (r.length)
30471
30486
  err(8);
30472
30487
  return s;
@@ -30478,7 +30493,7 @@ var slzh = /* @__PURE__ */ __name(function(d, b) {
30478
30493
  }, "slzh");
30479
30494
  var zh = /* @__PURE__ */ __name(function(d, b, z) {
30480
30495
  var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
30481
- var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2];
30496
+ var _a3 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a3[0], su = _a3[1], off = _a3[2];
30482
30497
  return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
30483
30498
  }, "zh");
30484
30499
  var z64e = /* @__PURE__ */ __name(function(d, b) {
@@ -30508,7 +30523,7 @@ function unzipSync(data, opts) {
30508
30523
  }
30509
30524
  var fltr = opts && opts.filter;
30510
30525
  for (var i = 0; i < c; ++i) {
30511
- var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off);
30526
+ var _a3 = zh(data, o, z), c_2 = _a3[0], sc = _a3[1], su = _a3[2], fn = _a3[3], no = _a3[4], off = _a3[5], b = slzh(data, off);
30512
30527
  o = no;
30513
30528
  if (!fltr || fltr({
30514
30529
  name: fn,
@@ -30567,7 +30582,7 @@ function anyToJson(fileContentStringOrFileObj, options) {
30567
30582
  );
30568
30583
  }
30569
30584
  }
30570
- if (/^(fasta|fas|fa|fna|ffn)$/.test(ext)) {
30585
+ if (/^(fasta|fas|fa|fna|ffn|faa)$/.test(ext)) {
30571
30586
  return fastaToJson(fileContentString, options);
30572
30587
  } else if (/^(gb|gbk)$/.test(ext)) {
30573
30588
  return genbankToJson(fileContentString, options);
@@ -32396,7 +32411,7 @@ function jsonToGenbank(_serSeq, options) {
32396
32411
  }
32397
32412
  __name(jsonToGenbank, "jsonToGenbank");
32398
32413
  function createGenbankLocus(serSeq, options) {
32399
- var _a2, _b2;
32414
+ var _a3, _b3;
32400
32415
  if (serSeq.sequence.symbols) {
32401
32416
  serSeq.sequence = serSeq.sequence.symbols.split("");
32402
32417
  }
@@ -32405,9 +32420,9 @@ function createGenbankLocus(serSeq, options) {
32405
32420
  if (serSeq.isProtein) {
32406
32421
  dnaType = "";
32407
32422
  } else if (serSeq.type === "RNA") {
32408
- dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "RNA" : (_a2 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _a2 : "ss-RNA";
32423
+ dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "RNA" : (_a3 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _a3 : "ss-RNA";
32409
32424
  } else {
32410
- dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "DNA" : (_b2 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _b2 : "DNA";
32425
+ dnaType = (serSeq == null ? void 0 : serSeq.doubleStranded) ? "DNA" : (_b3 = serSeq == null ? void 0 : serSeq.sequenceTypeFromLocus) != null ? _b3 : "DNA";
32411
32426
  }
32412
32427
  const date = getCurrentDateString();
32413
32428
  let line = StringUtil.rpad("LOCUS", " ", 12);