@teselagen/range-utils 0.3.13 → 0.3.14-beta.2

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.
Files changed (127) hide show
  1. package/RangeAngles.d.ts +7 -0
  2. package/adjustRangeToDeletionOfAnotherRange.d.ts +2 -1
  3. package/adjustRangeToInsert.d.ts +2 -1
  4. package/adjustRangeToRotation.d.ts +5 -1
  5. package/checkIfNonCircularRangesOverlap.d.ts +2 -1
  6. package/checkIfPotentiallyCircularRangesOverlap.d.ts +2 -1
  7. package/collapseOverlapsGeneratedFromRangeComparisonIfPossible.d.ts +2 -1
  8. package/convertRangeIndices.d.ts +10 -1
  9. package/convertRangeTo0Based.d.ts +5 -1
  10. package/convertRangeTo1Based.d.ts +5 -1
  11. package/doesRangeSpanEntireSequence.d.ts +2 -1
  12. package/doesRangeSpanOrigin.d.ts +2 -1
  13. package/expandOrContractCircularRangeToPosition.d.ts +3 -2
  14. package/expandOrContractNonCircularRangeToPosition.d.ts +3 -2
  15. package/expandOrContractRangeByLength.d.ts +5 -1
  16. package/expandOrContractRangeToPosition.d.ts +3 -2
  17. package/flipContainedRange.d.ts +5 -1
  18. package/generateRandomRange.d.ts +3 -3
  19. package/getAnnotationRangeType.d.ts +2 -1
  20. package/getEachPositionInRangeAsArray.d.ts +2 -1
  21. package/getLengthOfOverlappingRegionsBetweenTwoRanges.d.ts +2 -1
  22. package/getMiddleOfRange.d.ts +2 -1
  23. package/getOverlapOfNonCircularRanges.d.ts +5 -4
  24. package/getOverlapsOfPotentiallyCircularRanges.d.ts +2 -1
  25. package/getPositionFromAngle.d.ts +1 -1
  26. package/getRangeAngles.d.ts +3 -7
  27. package/getRangeLength.d.ts +5 -1
  28. package/getRangesBetweenTwoRanges.d.ts +2 -1
  29. package/getSequenceWithinRange.d.ts +2 -1
  30. package/getShortestDistanceBetweenTwoPositions.d.ts +1 -1
  31. package/getYOffsetForPotentiallyCircularRange.d.ts +2 -1
  32. package/getYOffsetsForPotentiallyCircularRanges.d.ts +3 -2
  33. package/getZeroedRangeOverlaps.d.ts +2 -1
  34. package/index.cjs +87 -88
  35. package/index.d.ts +1 -0
  36. package/index.js +87 -88
  37. package/index.umd.cjs +87 -88
  38. package/invertRange.d.ts +5 -1
  39. package/isPositionCloserToRangeStartThanRangeEnd.d.ts +2 -1
  40. package/isPositionWithinRange.d.ts +3 -2
  41. package/isRangeOrPositionWithinRange.d.ts +2 -1
  42. package/isRangeWithinRange.d.ts +2 -1
  43. package/loopEachPositionInRange.d.ts +2 -1
  44. package/modulatePositionByRange.d.ts +2 -1
  45. package/modulateRangeBySequenceLength.d.ts +8 -1
  46. package/normalizePositionByRangeLength.d.ts +1 -1
  47. package/normalizePositionByRangeLength1Based.d.ts +1 -1
  48. package/normalizeRange.d.ts +5 -1
  49. package/package.json +9 -1
  50. package/provideInclusiveOptions.d.ts +6 -1
  51. package/reversePositionInRange.d.ts +1 -1
  52. package/splitRangeIntoTwoPartsIfItIsCircular.d.ts +4 -3
  53. package/src/RangeAngles.ts +9 -0
  54. package/src/adjustRangeToDeletionOfAnotherRange.js +33 -30
  55. package/src/adjustRangeToDeletionOfAnotherRange.ts +57 -0
  56. package/src/adjustRangeToInsert.ts +32 -0
  57. package/src/adjustRangeToRotation.ts +23 -0
  58. package/src/checkIfNonCircularRangesOverlap.ts +35 -0
  59. package/src/checkIfPotentiallyCircularRangesOverlap.ts +28 -0
  60. package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.ts +81 -0
  61. package/src/convertRangeIndices.test.js +1 -1
  62. package/src/convertRangeIndices.ts +34 -0
  63. package/src/convertRangeTo0Based.ts +9 -0
  64. package/src/convertRangeTo1Based.ts +10 -0
  65. package/src/doesRangeSpanEntireSequence.ts +12 -0
  66. package/src/doesRangeSpanOrigin.ts +5 -0
  67. package/src/expandOrContractCircularRangeToPosition.ts +50 -0
  68. package/src/expandOrContractNonCircularRangeToPosition.ts +30 -0
  69. package/src/expandOrContractRangeByLength.test.js +1 -1
  70. package/src/expandOrContractRangeByLength.ts +18 -0
  71. package/src/expandOrContractRangeToPosition.ts +16 -0
  72. package/src/flipContainedRange.test.js +1 -1
  73. package/src/flipContainedRange.ts +156 -0
  74. package/src/generateRandomRange.test.js +1 -1
  75. package/src/generateRandomRange.ts +26 -0
  76. package/src/getAnnotationRangeType.test.js +1 -1
  77. package/src/getAnnotationRangeType.ts +30 -0
  78. package/src/getEachPositionInRangeAsArray.ts +19 -0
  79. package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.ts +18 -0
  80. package/src/getMiddleOfRange.ts +11 -0
  81. package/src/getOverlapOfNonCircularRanges.ts +41 -0
  82. package/src/getOverlapsOfPotentiallyCircularRanges.ts +60 -0
  83. package/src/getPositionFromAngle.ts +12 -0
  84. package/src/getRangeAngles.ts +38 -0
  85. package/src/getRangeLength.test.ts +30 -0
  86. package/src/getRangeLength.ts +17 -0
  87. package/src/getRangesBetweenTwoRanges.ts +42 -0
  88. package/src/getSequenceWithinRange.test.ts +47 -0
  89. package/src/getSequenceWithinRange.ts +24 -0
  90. package/src/getShortestDistanceBetweenTwoPositions.test.ts +12 -0
  91. package/src/getShortestDistanceBetweenTwoPositions.ts +16 -0
  92. package/src/getYOffsetForPotentiallyCircularRange.ts +37 -0
  93. package/src/getYOffsetsForPotentiallyCircularRanges.test.ts +17 -0
  94. package/src/getYOffsetsForPotentiallyCircularRanges.ts +28 -0
  95. package/src/getZeroedRangeOverlaps.test.ts +65 -0
  96. package/src/getZeroedRangeOverlaps.ts +33 -0
  97. package/src/index.test.ts +39 -0
  98. package/src/index.ts +53 -0
  99. package/src/invertRange.test.js +1 -1
  100. package/src/invertRange.ts +25 -0
  101. package/src/isPositionCloserToRangeStartThanRangeEnd.ts +22 -0
  102. package/src/isPositionWithinRange.ts +40 -0
  103. package/src/isRangeOrPositionWithinRange.ts +40 -0
  104. package/src/isRangeWithinRange.ts +18 -0
  105. package/src/loopEachPositionInRange.ts +11 -0
  106. package/src/modulatePositionByRange.ts +15 -0
  107. package/src/modulateRangeBySequenceLength.ts +13 -0
  108. package/src/normalizePositionByRangeLength.ts +24 -0
  109. package/src/normalizePositionByRangeLength1Based.ts +9 -0
  110. package/src/normalizeRange.ts +12 -0
  111. package/src/provideInclusiveOptions.ts +79 -0
  112. package/src/reversePositionInRange.ts +17 -0
  113. package/src/splitRangeIntoTwoPartsIfItIsCircular.ts +36 -0
  114. package/src/translateRange.ts +21 -0
  115. package/src/trimAnnStartEndToFitSeqLength.ts +9 -0
  116. package/src/trimNonCicularRangeByAnotherNonCircularRange.ts +63 -0
  117. package/src/trimNumberToFitWithin0ToAnotherNumber.ts +15 -0
  118. package/src/trimRangeByAnotherRange.ts +103 -0
  119. package/src/types.ts +12 -0
  120. package/src/zeroSubrangeByContainerRange.ts +49 -0
  121. package/translateRange.d.ts +5 -1
  122. package/trimAnnStartEndToFitSeqLength.d.ts +1 -1
  123. package/trimNonCicularRangeByAnotherNonCircularRange.d.ts +2 -4
  124. package/trimNumberToFitWithin0ToAnotherNumber.d.ts +1 -1
  125. package/trimRangeByAnotherRange.d.ts +2 -1
  126. package/types.d.ts +12 -0
  127. package/zeroSubrangeByContainerRange.d.ts +2 -1
@@ -0,0 +1,7 @@
1
+ export interface RangeAngles {
2
+ startAngle: number;
3
+ totalAngle: number;
4
+ endAngle: number;
5
+ centerAngle: number;
6
+ locationAngles?: RangeAngles[];
7
+ }
@@ -1 +1,2 @@
1
- export default function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted: any, anotherRange: any, maxLength: any): object;
1
+ import { Range } from './types';
2
+ export default function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted: Range, anotherRange: Range, maxLength: number): Range | null;
@@ -1 +1,2 @@
1
- export default function adjustRangeToInsert(rangeToBeAdjusted: any, insertStart: any, insertLength: any): any;
1
+ import { Range } from './types';
2
+ export default function adjustRangeToInsert(rangeToBeAdjusted: Range, insertStart: number, insertLength: number): Range;
@@ -1 +1,5 @@
1
- export default function adjustRangeToRotation(rangeToBeAdjusted: any, rotateTo: number | undefined, rangeLength: any): any;
1
+ import { Range } from './types';
2
+ export default function adjustRangeToRotation(rangeToBeAdjusted: Range, rotateTo?: number, rangeLength?: number): Range & {
3
+ start: number;
4
+ end: number;
5
+ };
@@ -1 +1,2 @@
1
- export default function checkIfNonCircularRangesOverlap(range: any, comparisonRange: any): boolean;
1
+ import { Range } from './types';
2
+ export default function checkIfNonCircularRangesOverlap(range: Range, comparisonRange: Range): boolean;
@@ -1 +1,2 @@
1
- export default function checkIfPotentiallyCircularRangesOverlap(range: any, comparisonRange: any): boolean;
1
+ import { Range } from './types';
2
+ export default function checkIfPotentiallyCircularRangesOverlap(range: Range, comparisonRange: Range): boolean;
@@ -1 +1,2 @@
1
- export default function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps: any, sequenceLength: any, optionalOriginalRange: any): any;
1
+ import { Range } from './types';
2
+ export default function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps: Range[], sequenceLength: number, optionalOriginalRange?: Range): Range[];
@@ -1 +1,10 @@
1
- export default function convertRangeIndices(range: any, inputType: any, outputType: any): any;
1
+ import { Range } from './types';
2
+ interface RangeIndicesOptions {
3
+ inclusive1BasedStart?: boolean;
4
+ inclusive1BasedEnd?: boolean;
5
+ }
6
+ export default function convertRangeIndices(range: Range, inputType?: RangeIndicesOptions, outputType?: RangeIndicesOptions): Range & {
7
+ start: number;
8
+ end: number;
9
+ };
10
+ export {};
@@ -1 +1,5 @@
1
- export default function convertRangeTo0Based(range: any): any;
1
+ import { Range } from './types';
2
+ export default function convertRangeTo0Based(range: Range): Range & {
3
+ start: number;
4
+ end: number;
5
+ };
@@ -1 +1,5 @@
1
- export default function convertRangeTo1Based(range: any): any;
1
+ import { Range } from './types';
2
+ export default function convertRangeTo1Based(range: Range): Range & {
3
+ start: number;
4
+ end: number;
5
+ };
@@ -1 +1,2 @@
1
- export default function doesRangeSpanEntireSequence(range: any, sequenceLength: any): true | undefined;
1
+ import { Range } from './types';
2
+ export default function doesRangeSpanEntireSequence(range: Range, sequenceLength: number): boolean;
@@ -1 +1,2 @@
1
- export default function doesRangeSpanOrigin(range: any): boolean;
1
+ import { Range } from './types';
2
+ export default function doesRangeSpanOrigin(range: Range): boolean;
@@ -1,4 +1,5 @@
1
- export default function expandOrContractCircularRangeToPosition(range: any, position: any, maxLength: any): {
2
- newRange: any;
1
+ import { Range } from './types';
2
+ export default function expandOrContractCircularRangeToPosition(range: Range, position: number, maxLength: number): {
3
+ newRange: Range;
3
4
  endMoved: boolean;
4
5
  };
@@ -1,4 +1,5 @@
1
- export default function expandOrContractNonCircularRangeToPosition(range: any, position: any): {
2
- newRange: any;
1
+ import { Range } from './types';
2
+ export default function expandOrContractNonCircularRangeToPosition(range: Range, position: number): {
3
+ newRange: Range;
3
4
  endMoved: boolean;
4
5
  };
@@ -1 +1,5 @@
1
- export default function expandOrContractRangeByLength(range: any, shiftBy: any, shiftStart: any, sequenceLength: any): any;
1
+ import { Range } from './types';
2
+ export default function expandOrContractRangeByLength(range: Range, shiftBy: number, shiftStart: boolean, sequenceLength: number): Range & {
3
+ start: number;
4
+ end: number;
5
+ };
@@ -1,4 +1,5 @@
1
- export default function expandOrContractRangeToPosition(range: any, position: any, maxLength: any): {
2
- newRange: any;
1
+ import { Range } from './types';
2
+ export default function expandOrContractRangeToPosition(range: Range, position: number, maxLength: number): {
3
+ newRange: Range;
3
4
  endMoved: boolean;
4
5
  };
@@ -1 +1,5 @@
1
- export default function flipRelativeRange(innerRange: any, outerRange: any, sequenceLength: any): any;
1
+ import { Range } from './types';
2
+ export default function flipRelativeRange(innerRange: Range, outerRange: Range, sequenceLength: number): Range & {
3
+ start: number;
4
+ end: number;
5
+ };
@@ -1,4 +1,4 @@
1
- export default function generateRandomRange(minStart: any, maxEnd: any, maxLength: any): {
2
- start: any;
3
- end: any;
1
+ export default function generateRandomRange(minStart: number, maxEnd: number, maxLength: number): {
2
+ start: number;
3
+ end: number;
4
4
  };
@@ -1 +1,2 @@
1
- export default function getAnnotationRangeType(annotationRange: any, enclosingRangeType: any, forward: any): "end" | "beginningAndEnd" | "start" | "middle";
1
+ import { Range } from './types';
2
+ export default function getAnnotationRangeType(annotationRange: Range, enclosingRangeType: Range, forward: boolean): "end" | "beginningAndEnd" | "start" | "middle";
@@ -1 +1,2 @@
1
- export default function getEachPositionInRangeAsArray(range: any, rangeMax: any): any[];
1
+ import { Range } from './types';
2
+ export default function getEachPositionInRangeAsArray(range: Range, rangeMax: number): number[];
@@ -1 +1,2 @@
1
- export default function getLengthOfOverlappingRegionsBetweenTwoRanges(rangeA: any, rangeB: any, maxLength: any): any;
1
+ import { Range } from './types';
2
+ export default function getLengthOfOverlappingRegionsBetweenTwoRanges(rangeA: Range, rangeB: Range, maxLength: number): number;
@@ -1 +1,2 @@
1
- export default function getMiddleOfRange(range: any, rangeMax: any): any;
1
+ import { Range } from './types';
2
+ export default function getMiddleOfRange(range: Range, rangeMax: number): number;
@@ -1,4 +1,5 @@
1
- export default function getOverlapOfNonCircularRanges(rangeA: any, rangeB: any): {
2
- start: any;
3
- end: any;
4
- } | undefined;
1
+ import { Range } from './types';
2
+ export default function getOverlapOfNonCircularRanges(rangeA: Range, rangeB: Range): {
3
+ start: number;
4
+ end: number;
5
+ } | null;
@@ -1 +1,2 @@
1
- export default function getOverlapsOfPotentiallyCircularRanges(rangeA: any, rangeB: any, maxRangeLength: any, joinIfPossible: any): any[];
1
+ import { Range } from './types';
2
+ export default function getOverlapsOfPotentiallyCircularRanges(rangeA: Range, rangeB: Range, maxRangeLength: number, joinIfPossible?: boolean): Range[];
@@ -1 +1 @@
1
- export default function getPositionFromAngle(angle: any, rangeMax: any, isInBetweenPositions: any): number;
1
+ export default function getPositionFromAngle(angle: number, rangeMax: number, isInBetweenPositions?: boolean): number;
@@ -1,7 +1,3 @@
1
- export default function getRangeAngles(range: any, rangeMax: any): {
2
- startAngle: number;
3
- totalAngle: number;
4
- endAngle: number;
5
- centerAngle: number;
6
- locationAngles: any;
7
- };
1
+ import { Range } from './types';
2
+ import { RangeAngles } from './RangeAngles';
3
+ export default function getRangeAngles(range: Range, rangeMax: number): RangeAngles;
@@ -1,2 +1,6 @@
1
- declare const _default: (...args: any[]) => any;
1
+ import { Range } from './types';
2
+ declare const _default: (range: Range, rangeMax: number, options?: {
3
+ inclusive1BasedEnd?: boolean;
4
+ inclusive1BasedStart?: boolean;
5
+ } | undefined) => number;
2
6
  export default _default;
@@ -1 +1,2 @@
1
- export default function getRangesBetweenTwoRanges(range1: any, range2: any): any[];
1
+ import { Range } from './types';
2
+ export default function getRangesBetweenTwoRanges(range1: Range, range2: Range): Range[];
@@ -1 +1,2 @@
1
- export default function getSequenceWithinRange(range: any, sequence: any): any;
1
+ import { Range } from './types';
2
+ export default function getSequenceWithinRange<T>(range: Range, sequence: string | T[]): string | T[];
@@ -1 +1 @@
1
- export default function getShortestDistanceBetweenTwoPositions(position1: any, position2: any, sequenceLength: any): number;
1
+ export default function getShortestDistanceBetweenTwoPositions(position1: number, position2: number, sequenceLength: number): number;
@@ -1 +1,2 @@
1
- export default function getYOffsetForPotentiallyCircularRange(range: any, YOffsetLevelsWithRanges: any, assignYOffsetToRange: any): any;
1
+ import { Range } from './types';
2
+ export default function getYOffsetForPotentiallyCircularRange(range: Range, YOffsetLevelsWithRanges: Range[][], assignYOffsetToRange: boolean): number;
@@ -1,4 +1,5 @@
1
- export default function getYOffsetsForPotentiallyCircularRanges(ranges: any, assignYOffsetToRange: any): {
2
- yOffsets: any[];
1
+ import { Range } from './types';
2
+ export default function getYOffsetsForPotentiallyCircularRanges(ranges: Range[], assignYOffsetToRange: boolean): {
3
+ yOffsets: number[];
3
4
  maxYOffset: number;
4
5
  };
@@ -1 +1,2 @@
1
- export default function getZeroedRangeOverlaps(annotation: any, selection: any, sequenceLength: any): any;
1
+ import { Range } from './types';
2
+ export default function getZeroedRangeOverlaps(annotation: Range, selection: Range, sequenceLength: number): Range[];
package/index.cjs CHANGED
@@ -87,7 +87,6 @@ function arrayMap(array, iteratee) {
87
87
  }
88
88
  __name(arrayMap, "arrayMap");
89
89
  var isArray = Array.isArray;
90
- var INFINITY$1 = 1 / 0;
91
90
  var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
92
91
  function baseToString(value) {
93
92
  if (typeof value == "string") {
@@ -100,7 +99,7 @@ function baseToString(value) {
100
99
  return symbolToString ? symbolToString.call(value) : "";
101
100
  }
102
101
  var result = value + "";
103
- return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
102
+ return result == "0" && 1 / value == -Infinity ? "-0" : result;
104
103
  }
105
104
  __name(baseToString, "baseToString");
106
105
  function isObject(value) {
@@ -773,13 +772,12 @@ function castPath(value, object) {
773
772
  return isKey(value, object) ? [value] : stringToPath(toString(value));
774
773
  }
775
774
  __name(castPath, "castPath");
776
- var INFINITY = 1 / 0;
777
775
  function toKey(value) {
778
776
  if (typeof value == "string" || isSymbol(value)) {
779
777
  return value;
780
778
  }
781
779
  var result = value + "";
782
- return result == "0" && 1 / value == -INFINITY ? "-0" : result;
780
+ return result == "0" && 1 / value == -Infinity ? "-0" : result;
783
781
  }
784
782
  __name(toKey, "toKey");
785
783
  function baseGet(object, path) {
@@ -1538,8 +1536,7 @@ function flatMap(collection, iteratee) {
1538
1536
  __name(flatMap, "flatMap");
1539
1537
  function getOverlapOfNonCircularRanges(rangeA, rangeB) {
1540
1538
  if (rangeA.start < rangeB.start) {
1541
- if (rangeA.end < rangeB.start)
1542
- ;
1539
+ if (rangeA.end < rangeB.start) ;
1543
1540
  else {
1544
1541
  if (rangeA.end < rangeB.end) {
1545
1542
  return {
@@ -1554,8 +1551,7 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
1554
1551
  }
1555
1552
  }
1556
1553
  } else {
1557
- if (rangeA.start > rangeB.end)
1558
- ;
1554
+ if (rangeA.start > rangeB.end) ;
1559
1555
  else {
1560
1556
  if (rangeA.end < rangeB.end) {
1561
1557
  return {
@@ -1570,9 +1566,10 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
1570
1566
  }
1571
1567
  }
1572
1568
  }
1569
+ return null;
1573
1570
  }
1574
1571
  __name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
1575
- function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
1572
+ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible = false) {
1576
1573
  const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
1577
1574
  rangeA,
1578
1575
  maxRangeLength
@@ -1603,8 +1600,11 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
1603
1600
  joinedOverlap.start = o.start;
1604
1601
  return [];
1605
1602
  }
1603
+ return [o];
1606
1604
  });
1607
- overlaps.push(joinedOverlap);
1605
+ if (Object.keys(joinedOverlap).length > 0) {
1606
+ overlaps.push(joinedOverlap);
1607
+ }
1608
1608
  }
1609
1609
  return overlaps;
1610
1610
  }
@@ -1634,8 +1634,7 @@ function trimNonCicularRangeByAnotherNonCircularRange(rangeToBeTrimmed, trimming
1634
1634
  }
1635
1635
  }
1636
1636
  } else {
1637
- if (rangeToBeTrimmed.end <= trimmingRange.end)
1638
- ;
1637
+ if (rangeToBeTrimmed.end <= trimmingRange.end) ;
1639
1638
  else {
1640
1639
  if (rangeToBeTrimmed.start > trimmingRange.end) {
1641
1640
  outputTrimmedRange = {
@@ -1678,10 +1677,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1678
1677
  if (!overlaps.length) {
1679
1678
  return rangeToBeTrimmed;
1680
1679
  }
1681
- const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
1682
- rangeToBeTrimmed,
1683
- sequenceLength
1684
- );
1680
+ const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(rangeToBeTrimmed, sequenceLength);
1685
1681
  splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
1686
1682
  overlaps.forEach(function(overlap) {
1687
1683
  if (nonCircularRangeToBeTrimmed) {
@@ -1702,8 +1698,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1702
1698
  }
1703
1699
  );
1704
1700
  let outputTrimmedRange;
1705
- if (outputSplitRanges.length < 0)
1706
- ;
1701
+ if (outputSplitRanges.length < 0) ;
1707
1702
  else if (outputSplitRanges.length === 1) {
1708
1703
  outputTrimmedRange = outputSplitRanges[0];
1709
1704
  } else if (outputSplitRanges.length === 2) {
@@ -1725,6 +1720,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1725
1720
  end: outputTrimmedRange.end
1726
1721
  });
1727
1722
  }
1723
+ return void 0;
1728
1724
  }
1729
1725
  __name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
1730
1726
  function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
@@ -1733,32 +1729,31 @@ function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, ma
1733
1729
  anotherRange,
1734
1730
  maxLength
1735
1731
  );
1736
- if (trimmedRange) {
1737
- const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
1738
- anotherRange,
1739
- maxLength
1740
- );
1741
- nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
1742
- const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
1743
- if (trimmedRange.start > trimmedRange.end) {
1744
- if (nonCircularDeletionRange.start < trimmedRange.end) {
1745
- trimmedRange.start -= deletionLength;
1746
- trimmedRange.end -= deletionLength;
1747
- } else if (nonCircularDeletionRange.start < trimmedRange.start) {
1748
- trimmedRange.start -= deletionLength;
1749
- } else
1750
- ;
1751
- } else {
1752
- if (nonCircularDeletionRange.start < trimmedRange.start) {
1753
- trimmedRange.start -= deletionLength;
1754
- trimmedRange.end -= deletionLength;
1755
- } else if (nonCircularDeletionRange.start < trimmedRange.end) {
1756
- trimmedRange.end -= deletionLength;
1757
- } else
1758
- ;
1759
- }
1760
- });
1732
+ if (!trimmedRange) {
1733
+ return null;
1761
1734
  }
1735
+ const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
1736
+ anotherRange,
1737
+ maxLength
1738
+ );
1739
+ nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
1740
+ const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
1741
+ if (trimmedRange.start > trimmedRange.end) {
1742
+ if (nonCircularDeletionRange.start < trimmedRange.end) {
1743
+ trimmedRange.start -= deletionLength;
1744
+ trimmedRange.end -= deletionLength;
1745
+ } else if (nonCircularDeletionRange.start < trimmedRange.start) {
1746
+ trimmedRange.start -= deletionLength;
1747
+ } else ;
1748
+ } else {
1749
+ if (nonCircularDeletionRange.start < trimmedRange.start) {
1750
+ trimmedRange.start -= deletionLength;
1751
+ trimmedRange.end -= deletionLength;
1752
+ } else if (nonCircularDeletionRange.start < trimmedRange.end) {
1753
+ trimmedRange.end -= deletionLength;
1754
+ } else ;
1755
+ }
1756
+ });
1762
1757
  return trimmedRange;
1763
1758
  }
1764
1759
  __name(adjustRangeToDeletionOfAnotherRange, "adjustRangeToDeletionOfAnotherRange");
@@ -1872,11 +1867,10 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
1872
1867
  }
1873
1868
  }
1874
1869
  }
1870
+ return overlaps;
1875
1871
  }
1876
1872
  __name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
1877
- function convertRangeIndices(range, inputType, outputType) {
1878
- inputType = inputType || {};
1879
- outputType = outputType || {};
1873
+ function convertRangeIndices(range, inputType = {}, outputType = {}) {
1880
1874
  return assign({}, range, {
1881
1875
  start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
1882
1876
  end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
@@ -1899,25 +1893,32 @@ function convertRangeTo1Based(range) {
1899
1893
  }
1900
1894
  __name(convertRangeTo1Based, "convertRangeTo1Based");
1901
1895
  function provideInclusiveOptions(funToWrap) {
1902
- return function() {
1903
- const args = Array.prototype.slice.call(arguments);
1896
+ return function(...args) {
1904
1897
  const options = args[args.length - 1];
1905
1898
  if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
1906
1899
  args.forEach(function(arg, index) {
1907
- if (arg && arg.start > -1 && options.inclusive1BasedStart) {
1908
- args[index] = assign(arg, { start: arg.start - 1 });
1900
+ const potentialRange = arg;
1901
+ if (potentialRange && typeof potentialRange.start === "number" && potentialRange.start > -1 && options.inclusive1BasedStart) {
1902
+ args[index] = assign(potentialRange, {
1903
+ start: potentialRange.start - 1
1904
+ });
1909
1905
  }
1910
- if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
1911
- args[index] = assign(arg, { end: arg.end - 1 });
1906
+ if (potentialRange && typeof potentialRange.end === "number" && potentialRange.end > -1 && options.inclusive1BasedEnd) {
1907
+ args[index] = assign(potentialRange, {
1908
+ end: potentialRange.end - 1
1909
+ });
1912
1910
  }
1913
1911
  });
1914
1912
  }
1915
1913
  let returnVal = funToWrap.apply(this, args);
1916
- if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
1917
- returnVal = assign(returnVal, { start: returnVal.start + 1 });
1914
+ const potentialReturn = returnVal;
1915
+ if (potentialReturn && typeof potentialReturn.start === "number" && potentialReturn.start > -1 && options && options.inclusive1BasedStart) {
1916
+ returnVal = assign(potentialReturn, {
1917
+ start: potentialReturn.start + 1
1918
+ });
1918
1919
  }
1919
- if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
1920
- returnVal = assign(returnVal, { end: returnVal.end + 1 });
1920
+ if (potentialReturn && typeof potentialReturn.end === "number" && potentialReturn.end > -1 && options && options.inclusive1BasedEnd) {
1921
+ returnVal = assign(potentialReturn, { end: potentialReturn.end + 1 });
1921
1922
  }
1922
1923
  return returnVal;
1923
1924
  };
@@ -1938,9 +1939,10 @@ function getRangeLength$1(range, rangeMax) {
1938
1939
  }
1939
1940
  __name(getRangeLength$1, "getRangeLength$1");
1940
1941
  function doesRangeSpanEntireSequence(range, sequenceLength) {
1941
- if (getRangeLength(range) === sequenceLength) {
1942
+ if (getRangeLength(range, sequenceLength) === sequenceLength) {
1942
1943
  return true;
1943
1944
  }
1945
+ return false;
1944
1946
  }
1945
1947
  __name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
1946
1948
  function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
@@ -1949,8 +1951,7 @@ function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
1949
1951
  containingRange,
1950
1952
  maxLength
1951
1953
  );
1952
- if (ranges === null)
1953
- return false;
1954
+ if (ranges === null) return false;
1954
1955
  return !ranges;
1955
1956
  }
1956
1957
  __name(isRangeWithinRange, "isRangeWithinRange");
@@ -1975,6 +1976,9 @@ function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, m
1975
1976
  return false;
1976
1977
  }
1977
1978
  if (isObject(rangeOrPositionToCheck)) {
1979
+ if (typeof rangeOrPositionToCheck.start !== "number") {
1980
+ return false;
1981
+ }
1978
1982
  return isRangeWithinRange(
1979
1983
  rangeOrPositionToCheck,
1980
1984
  containingRange,
@@ -1995,7 +1999,7 @@ function doesRangeSpanOrigin(range) {
1995
1999
  return range.start > range.end;
1996
2000
  }
1997
2001
  __name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
1998
- function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
2002
+ function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions = false) {
1999
2003
  let position = pPosition;
2000
2004
  if (position < 0) {
2001
2005
  position += sequenceLength;
@@ -2087,10 +2091,7 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
2087
2091
  if (range.start > range.end) {
2088
2092
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
2089
2093
  } else {
2090
- return expandOrContractNonCircularRangeToPosition(
2091
- range,
2092
- position
2093
- );
2094
+ return expandOrContractNonCircularRangeToPosition(range, position);
2094
2095
  }
2095
2096
  }
2096
2097
  __name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
@@ -2348,14 +2349,15 @@ function getRangesBetweenTwoRanges(range1, range2) {
2348
2349
  }
2349
2350
  __name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
2350
2351
  function getSequenceWithinRange(range, sequence) {
2351
- if (range.start < 0 || range.end < 0)
2352
- return "";
2352
+ if (range.start < 0 || range.end < 0) return "";
2353
2353
  if (range.start > range.end) {
2354
2354
  let subSequence = sequence.slice(range.start, sequence.length);
2355
2355
  if (typeof subSequence === "string") {
2356
2356
  subSequence += sequence.slice(0, range.end + 1);
2357
2357
  } else {
2358
- subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
2358
+ subSequence = subSequence.concat(
2359
+ sequence.slice(0, range.end + 1)
2360
+ );
2359
2361
  }
2360
2362
  return subSequence;
2361
2363
  } else {
@@ -2375,7 +2377,7 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
2375
2377
  }
2376
2378
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
2377
2379
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
2378
- let yOffset = [];
2380
+ let yOffset = 0;
2379
2381
  const openYOffsetFound = YOffsetLevelsWithRanges.some(
2380
2382
  function(rangesAlreadyAddedToYOffset, index) {
2381
2383
  const rangeBlocked = rangesAlreadyAddedToYOffset.some(
@@ -2388,8 +2390,7 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
2388
2390
  );
2389
2391
  if (!rangeBlocked) {
2390
2392
  yOffset = index;
2391
- if (assignYOffsetToRange)
2392
- range.yOffset = index;
2393
+ if (assignYOffsetToRange) range.yOffset = index;
2393
2394
  rangesAlreadyAddedToYOffset.push(range);
2394
2395
  return true;
2395
2396
  }
@@ -2398,8 +2399,7 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
2398
2399
  );
2399
2400
  if (!openYOffsetFound) {
2400
2401
  yOffset = YOffsetLevelsWithRanges.length;
2401
- if (assignYOffsetToRange)
2402
- range.yOffset = YOffsetLevelsWithRanges.length;
2402
+ if (assignYOffsetToRange) range.yOffset = YOffsetLevelsWithRanges.length;
2403
2403
  }
2404
2404
  return yOffset;
2405
2405
  }
@@ -2419,8 +2419,7 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
2419
2419
  maxYOffset = yOffset;
2420
2420
  }
2421
2421
  range.yOffset = yOffset;
2422
- if (!yOffsetLevels[yOffset])
2423
- yOffsetLevels[yOffset] = [];
2422
+ if (!yOffsetLevels[yOffset]) yOffsetLevels[yOffset] = [];
2424
2423
  yOffsetLevels[yOffset].push(range);
2425
2424
  });
2426
2425
  return { yOffsets, maxYOffset };
@@ -2428,21 +2427,20 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
2428
2427
  __name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
2429
2428
  const invertRange = provideInclusiveOptions(invertRange$1);
2430
2429
  function invertRange$1(rangeOrCaret, rangeMax) {
2431
- if (rangeOrCaret.start > -1) {
2430
+ if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
2432
2431
  const start = rangeOrCaret.end + 1;
2433
2432
  const end = rangeOrCaret.start - 1;
2434
2433
  return {
2435
2434
  start: normalizePositionByRangeLength(start, rangeMax, false),
2436
2435
  end: normalizePositionByRangeLength(end, rangeMax, false)
2437
2436
  };
2438
- } else {
2439
- if (rangeOrCaret > -1) {
2440
- return {
2441
- start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2442
- end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2443
- };
2444
- }
2437
+ } else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
2438
+ return {
2439
+ start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2440
+ end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2441
+ };
2445
2442
  }
2443
+ return void 0;
2446
2444
  }
2447
2445
  __name(invertRange$1, "invertRange$1");
2448
2446
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
@@ -2510,9 +2508,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2510
2508
  "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
2511
2509
  );
2512
2510
  }
2513
- const newSubrange = {};
2514
- newSubrange.start = subRange.start - containerRange.start;
2515
- newSubrange.end = subRange.end - containerRange.start;
2511
+ const newSubrange = {
2512
+ start: subRange.start - containerRange.start,
2513
+ end: subRange.end - containerRange.start
2514
+ };
2516
2515
  if (newSubrange.start < 0) {
2517
2516
  newSubrange.start += sequenceLength;
2518
2517
  }
@@ -2523,10 +2522,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2523
2522
  }
2524
2523
  __name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
2525
2524
  function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
2526
- const mod = rangeLength ? modulo : identity;
2525
+ const mod = /* @__PURE__ */ __name((n) => rangeLength ? modulo(n, rangeLength) : n, "mod");
2527
2526
  const newRange = assign({}, rangeToBeAdjusted, {
2528
- start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
2529
- end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
2527
+ start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
2528
+ end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
2530
2529
  });
2531
2530
  return newRange;
2532
2531
  }
package/index.d.ts CHANGED
@@ -50,3 +50,4 @@ export { default as zeroSubrangeByContainerRange } from './zeroSubrangeByContain
50
50
  export { default as adjustRangeToRotation } from './adjustRangeToRotation';
51
51
  export { default as getZeroedRangeOverlaps } from './getZeroedRangeOverlaps';
52
52
  export { default as trimAnnStartEndToFitSeqLength } from './trimAnnStartEndToFitSeqLength';
53
+ export * from './types';