@gmod/bed 2.1.3 → 2.1.4

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/esm/parser.js CHANGED
@@ -1,24 +1,27 @@
1
+ // @ts-expect-error
1
2
  import parser from './autoSql';
2
3
  import types from './defaultTypes';
3
4
  import { detectTypes } from './util';
4
5
  const strandMap = { '.': 0, '-': -1, '+': 1 };
5
- // heuristic that a BED file is BED12 like...the number in col 10 is blockCount-like
6
+ // heuristic that a BED file is BED12 like...the number in col 10 is
7
+ // blockCount-like
6
8
  function isBed12Like(fields) {
7
- var _a;
8
9
  return (fields.length >= 12 &&
9
- !Number.isNaN(parseInt(fields[9], 10)) &&
10
- ((_a = fields[10]) === null || _a === void 0 ? void 0 : _a.split(',').filter(f => !!f).length) === parseInt(fields[9], 10));
10
+ !Number.isNaN(Number.parseInt(fields[9], 10)) &&
11
+ fields[10]?.split(',').filter(f => !!f).length ===
12
+ Number.parseInt(fields[9], 10));
11
13
  }
12
14
  export default class BED {
13
- constructor(args = {}) {
14
- if (args.autoSql) {
15
- this.autoSql = detectTypes(parser.parse(args.autoSql));
15
+ constructor(arguments_ = {}) {
16
+ if (arguments_.autoSql) {
17
+ this.autoSql = detectTypes(parser.parse(arguments_.autoSql));
16
18
  }
17
- else if (args.type) {
18
- if (!types[args.type]) {
19
+ else if (arguments_.type) {
20
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21
+ if (!types[arguments_.type]) {
19
22
  throw new Error('Type not found');
20
23
  }
21
- this.autoSql = detectTypes(types[args.type]);
24
+ this.autoSql = detectTypes(types[arguments_.type]);
22
25
  }
23
26
  else {
24
27
  this.autoSql = detectTypes(types.defaultBedSchema);
@@ -32,41 +35,42 @@ export default class BED {
32
35
  * @param opts - supply opts.uniqueId
33
36
  * @return a object representing a feature
34
37
  */
35
- parseLine(line, opts = {}) {
38
+ parseLine(line, options = {}) {
36
39
  const { autoSql } = this;
37
- const { uniqueId } = opts;
40
+ const { uniqueId } = options;
38
41
  const fields = Array.isArray(line) ? line : line.split('\t');
39
42
  let feature = {};
40
43
  if (!this.attemptDefaultBed ||
44
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
41
45
  (this.attemptDefaultBed && isBed12Like(fields))) {
42
- for (let i = 0; i < autoSql.fields.length; i++) {
43
- const autoField = autoSql.fields[i];
44
- let columnVal = fields[i];
46
+ for (let index = 0; index < autoSql.fields.length; index++) {
47
+ const autoField = autoSql.fields[index];
48
+ let columnValue = fields[index];
45
49
  const { isNumeric, isArray, arrayIsNumeric, name } = autoField;
46
- if (columnVal === null || columnVal === undefined) {
50
+ if (columnValue === null || columnValue === undefined) {
47
51
  break;
48
52
  }
49
- if (columnVal !== '.') {
53
+ if (columnValue !== '.') {
50
54
  if (isNumeric) {
51
- const num = Number(columnVal);
52
- columnVal = Number.isNaN(num) ? columnVal : num;
55
+ const number_ = Number(columnValue);
56
+ columnValue = Number.isNaN(number_) ? columnValue : number_;
53
57
  }
54
58
  else if (isArray) {
55
- columnVal = columnVal.split(',');
56
- if (columnVal[columnVal.length - 1] === '') {
57
- columnVal.pop();
59
+ columnValue = columnValue.split(',');
60
+ if (columnValue.at(-1) === '') {
61
+ columnValue.pop();
58
62
  }
59
63
  if (arrayIsNumeric) {
60
- columnVal = columnVal.map(Number);
64
+ columnValue = columnValue.map(Number);
61
65
  }
62
66
  }
63
- feature[name] = columnVal;
67
+ feature[name] = columnValue;
64
68
  }
65
69
  }
66
70
  }
67
71
  else {
68
72
  const fieldNames = ['chrom', 'chromStart', 'chromEnd', 'name'];
69
- feature = Object.fromEntries(fields.map((f, i) => [fieldNames[i] || 'field' + i, f]));
73
+ feature = Object.fromEntries(fields.map((f, index) => [fieldNames[index] || 'field' + index, f]));
70
74
  feature.chromStart = +feature.chromStart;
71
75
  feature.chromEnd = +feature.chromEnd;
72
76
  if (!Number.isNaN(Number.parseFloat(feature.field4))) {
package/esm/parser.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/esm/util.js CHANGED
@@ -1,8 +1,7 @@
1
1
  /*
2
- * adds some type annotations to the autoSql schema
3
- * for numeric fields ['uint', 'int', 'float', 'long'] "isNumeric" is added
4
- * for array types "isArray" is added
5
- * for numeric array types "isArray" and "arrayIsNumeric" is set
2
+ * adds some type annotations to the autoSql schema for numeric fields ['uint',
3
+ * 'int', 'float', 'long'] "isNumeric" is added for array types "isArray" is
4
+ * added for numeric array types "isArray" and "arrayIsNumeric" is set
6
5
  *
7
6
  * @param autoSql - an autoSql schema from the peg parser
8
7
  * @return autoSql with type annotations added
package/esm/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9D,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;aACnB,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,GAAG,SAAS;YACZ,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM;YACpD,cAAc,EAAE,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAClE,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;SAC/D,CAAC,CAAC;YAEH,oFAAoF;aACnF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACzB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9D,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;aACnB,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,GAAG,SAAS;YACZ,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM;YACpD,cAAc,EAAE,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAClE,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;SAC/D,CAAC,CAAC;YAEH,oFAAoF;aACnF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACzB,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmod/bed",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "A BED file format parser with autoSql support",
5
5
  "main": "dist/index.js",
6
6
  "module": "esm/index.js",
@@ -24,35 +24,31 @@
24
24
  "node": ">=6"
25
25
  },
26
26
  "scripts": {
27
- "lint": "eslint --report-unused-disable-directives --max-warnings 0 --ext .js,.ts src test",
28
- "test": "jest",
29
- "coverage": "npm test -- --coverage",
27
+ "lint": "eslint --report-unused-disable-directives --max-warnings 0 src test",
28
+ "test": "vitest",
30
29
  "clean": "rimraf dist esm",
31
30
  "generate": "pegjs -o src/autoSql.js autoSql.pegjs",
32
31
  "prebuild": "npm run clean",
33
- "build:esm": "tsc --target es2018 --outDir esm",
34
- "build:es5": "tsc --target es5 --outDir dist",
32
+ "build:esm": "tsc --target es2020 --outDir esm",
33
+ "build:es5": "tsc --target es2020 --module commonjs --outDir dist",
34
+ "postbuild:es5": "echo '{\"type\": \"commonjs\"}' > dist/package.json",
35
35
  "build": "npm run generate && npm run build:esm && npm run build:es5",
36
- "preversion": "npm test && npm run build",
36
+ "preversion": "npm test run && npm run build",
37
37
  "version": "standard-changelog && git add CHANGELOG.md",
38
38
  "postversion": "git push --follow-tags"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/jest": "^29.5.1",
42
- "@typescript-eslint/eslint-plugin": "^7.3.1",
43
- "@typescript-eslint/parser": "^7.3.1",
44
- "eslint": "^8.40.0",
45
- "eslint-config-prettier": "^9.1.0",
46
- "eslint-plugin-import": "^2.27.5",
47
- "eslint-plugin-prettier": "^5.1.3",
48
- "eslint-plugin-unicorn": "^51.0.1",
49
- "jest": "^29.5.0",
41
+ "@typescript-eslint/eslint-plugin": "^8.4.0",
42
+ "@typescript-eslint/parser": "^8.4.0",
43
+ "@vitest/coverage-v8": "^3.0.3",
44
+ "eslint": "^9.9.1",
50
45
  "pegjs": "^0.10.0",
51
- "prettier": "^3.2.5",
52
- "rimraf": "^5.0.0",
53
- "standard-changelog": "^5.0.0",
54
- "ts-jest": "^29.1.0",
55
- "typescript": "^5.0.4"
46
+ "prettier": "^3.3.3",
47
+ "rimraf": "^6.0.1",
48
+ "standard-changelog": "^6.0.0",
49
+ "typescript": "^5.5.4",
50
+ "typescript-eslint": "^8.4.0",
51
+ "vitest": "^3.0.1"
56
52
  },
57
53
  "keywords": [
58
54
  "bed",
@@ -1,10 +1,11 @@
1
+ // @ts-expect-error
1
2
  import { parse } from './autoSql'
2
3
  import { AutoSqlPreSchema } from './util'
3
4
  import * as types from './as/autoSqlSchemas'
4
5
 
5
6
  export default Object.fromEntries(
6
- Object.entries(types).map(([key, val]) => [
7
+ Object.entries(types).map(([key, value]) => [
7
8
  key,
8
- parse(val.trim()) as AutoSqlPreSchema,
9
+ parse(value.trim()) as AutoSqlPreSchema,
9
10
  ]),
10
11
  )
package/src/parser.ts CHANGED
@@ -1,15 +1,18 @@
1
+ // @ts-expect-error
1
2
  import parser from './autoSql'
2
3
  import types from './defaultTypes'
3
4
  import { detectTypes, AutoSqlSchema, AutoSqlPreSchema } from './util'
4
5
 
5
6
  const strandMap = { '.': 0, '-': -1, '+': 1 }
6
7
 
7
- // heuristic that a BED file is BED12 like...the number in col 10 is blockCount-like
8
+ // heuristic that a BED file is BED12 like...the number in col 10 is
9
+ // blockCount-like
8
10
  function isBed12Like(fields: string[]) {
9
11
  return (
10
12
  fields.length >= 12 &&
11
- !Number.isNaN(parseInt(fields[9], 10)) &&
12
- fields[10]?.split(',').filter(f => !!f).length === parseInt(fields[9], 10)
13
+ !Number.isNaN(Number.parseInt(fields[9], 10)) &&
14
+ fields[10]?.split(',').filter(f => !!f).length ===
15
+ Number.parseInt(fields[9], 10)
13
16
  )
14
17
  }
15
18
  export default class BED {
@@ -17,14 +20,17 @@ export default class BED {
17
20
 
18
21
  private attemptDefaultBed?: boolean
19
22
 
20
- constructor(args: { autoSql?: string; type?: string } = {}) {
21
- if (args.autoSql) {
22
- this.autoSql = detectTypes(parser.parse(args.autoSql) as AutoSqlPreSchema)
23
- } else if (args.type) {
24
- if (!types[args.type]) {
23
+ constructor(arguments_: { autoSql?: string; type?: string } = {}) {
24
+ if (arguments_.autoSql) {
25
+ this.autoSql = detectTypes(
26
+ parser.parse(arguments_.autoSql) as AutoSqlPreSchema,
27
+ )
28
+ } else if (arguments_.type) {
29
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
30
+ if (!types[arguments_.type]) {
25
31
  throw new Error('Type not found')
26
32
  }
27
- this.autoSql = detectTypes(types[args.type])
33
+ this.autoSql = detectTypes(types[arguments_.type])
28
34
  } else {
29
35
  this.autoSql = detectTypes(types.defaultBedSchema)
30
36
  this.attemptDefaultBed = true
@@ -38,44 +44,45 @@ export default class BED {
38
44
  * @param opts - supply opts.uniqueId
39
45
  * @return a object representing a feature
40
46
  */
41
- parseLine(line: string | string[], opts: { uniqueId?: string } = {}) {
47
+ parseLine(line: string | string[], options: { uniqueId?: string } = {}) {
42
48
  const { autoSql } = this
43
- const { uniqueId } = opts
49
+ const { uniqueId } = options
44
50
  const fields = Array.isArray(line) ? line : line.split('\t')
45
51
 
46
52
  let feature = {} as Record<string, any>
47
53
  if (
48
54
  !this.attemptDefaultBed ||
55
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
49
56
  (this.attemptDefaultBed && isBed12Like(fields))
50
57
  ) {
51
- for (let i = 0; i < autoSql.fields.length; i++) {
52
- const autoField = autoSql.fields[i]
53
- let columnVal: any = fields[i]
58
+ for (let index = 0; index < autoSql.fields.length; index++) {
59
+ const autoField = autoSql.fields[index]
60
+ let columnValue: any = fields[index]
54
61
  const { isNumeric, isArray, arrayIsNumeric, name } = autoField
55
- if (columnVal === null || columnVal === undefined) {
62
+ if (columnValue === null || columnValue === undefined) {
56
63
  break
57
64
  }
58
- if (columnVal !== '.') {
65
+ if (columnValue !== '.') {
59
66
  if (isNumeric) {
60
- const num = Number(columnVal)
61
- columnVal = Number.isNaN(num) ? columnVal : num
67
+ const number_ = Number(columnValue)
68
+ columnValue = Number.isNaN(number_) ? columnValue : number_
62
69
  } else if (isArray) {
63
- columnVal = columnVal.split(',')
64
- if (columnVal[columnVal.length - 1] === '') {
65
- columnVal.pop()
70
+ columnValue = columnValue.split(',')
71
+ if (columnValue.at(-1) === '') {
72
+ columnValue.pop()
66
73
  }
67
74
  if (arrayIsNumeric) {
68
- columnVal = columnVal.map(Number)
75
+ columnValue = columnValue.map(Number)
69
76
  }
70
77
  }
71
78
 
72
- feature[name] = columnVal
79
+ feature[name] = columnValue
73
80
  }
74
81
  }
75
82
  } else {
76
83
  const fieldNames = ['chrom', 'chromStart', 'chromEnd', 'name']
77
84
  feature = Object.fromEntries(
78
- fields.map((f, i) => [fieldNames[i] || 'field' + i, f]),
85
+ fields.map((f, index) => [fieldNames[index] || 'field' + index, f]),
79
86
  )
80
87
  feature.chromStart = +feature.chromStart
81
88
  feature.chromEnd = +feature.chromEnd
package/src/util.ts CHANGED
@@ -3,10 +3,9 @@ export interface AutoSqlPreSchema {
3
3
  }
4
4
 
5
5
  /*
6
- * adds some type annotations to the autoSql schema
7
- * for numeric fields ['uint', 'int', 'float', 'long'] "isNumeric" is added
8
- * for array types "isArray" is added
9
- * for numeric array types "isArray" and "arrayIsNumeric" is set
6
+ * adds some type annotations to the autoSql schema for numeric fields ['uint',
7
+ * 'int', 'float', 'long'] "isNumeric" is added for array types "isArray" is
8
+ * added for numeric array types "isArray" and "arrayIsNumeric" is set
10
9
  *
11
10
  * @param autoSql - an autoSql schema from the peg parser
12
11
  * @return autoSql with type annotations added
package/dist/autoSql.d.ts DELETED
@@ -1,14 +0,0 @@
1
- declare function peg$SyntaxError(message: any, expected: any, found: any, location: any): void;
2
- declare class peg$SyntaxError {
3
- constructor(message: any, expected: any, found: any, location: any);
4
- message: any;
5
- expected: any;
6
- found: any;
7
- location: any;
8
- name: string;
9
- }
10
- declare namespace peg$SyntaxError {
11
- function buildMessage(expected: any, found: any): string;
12
- }
13
- declare function peg$parse(input: any, options: any): {};
14
- export { peg$SyntaxError as SyntaxError, peg$parse as parse };