@teselagen/range-utils 0.3.14-beta.1 → 0.3.14-beta.3

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 (120) 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 +52 -41
  35. package/index.d.ts +1 -0
  36. package/index.js +52 -41
  37. package/index.umd.cjs +52 -41
  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.ts +57 -0
  55. package/src/adjustRangeToInsert.ts +32 -0
  56. package/src/adjustRangeToRotation.ts +23 -0
  57. package/src/checkIfNonCircularRangesOverlap.ts +35 -0
  58. package/src/checkIfPotentiallyCircularRangesOverlap.ts +28 -0
  59. package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.ts +81 -0
  60. package/src/convertRangeIndices.ts +34 -0
  61. package/src/convertRangeTo0Based.ts +9 -0
  62. package/src/convertRangeTo1Based.ts +10 -0
  63. package/src/doesRangeSpanEntireSequence.ts +12 -0
  64. package/src/doesRangeSpanOrigin.ts +5 -0
  65. package/src/expandOrContractCircularRangeToPosition.ts +50 -0
  66. package/src/expandOrContractNonCircularRangeToPosition.ts +30 -0
  67. package/src/expandOrContractRangeByLength.ts +18 -0
  68. package/src/expandOrContractRangeToPosition.ts +16 -0
  69. package/src/flipContainedRange.ts +156 -0
  70. package/src/generateRandomRange.ts +26 -0
  71. package/src/getAnnotationRangeType.ts +30 -0
  72. package/src/getEachPositionInRangeAsArray.ts +19 -0
  73. package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.ts +18 -0
  74. package/src/getMiddleOfRange.ts +11 -0
  75. package/src/getOverlapOfNonCircularRanges.ts +41 -0
  76. package/src/getOverlapsOfPotentiallyCircularRanges.ts +60 -0
  77. package/src/getPositionFromAngle.ts +12 -0
  78. package/src/getRangeAngles.ts +38 -0
  79. package/src/getRangeLength.test.ts +30 -0
  80. package/src/getRangeLength.ts +17 -0
  81. package/src/getRangesBetweenTwoRanges.ts +42 -0
  82. package/src/getSequenceWithinRange.test.ts +47 -0
  83. package/src/getSequenceWithinRange.ts +24 -0
  84. package/src/getShortestDistanceBetweenTwoPositions.test.ts +12 -0
  85. package/src/getShortestDistanceBetweenTwoPositions.ts +16 -0
  86. package/src/getYOffsetForPotentiallyCircularRange.ts +37 -0
  87. package/src/getYOffsetsForPotentiallyCircularRanges.test.ts +17 -0
  88. package/src/getYOffsetsForPotentiallyCircularRanges.ts +28 -0
  89. package/src/getZeroedRangeOverlaps.test.ts +65 -0
  90. package/src/getZeroedRangeOverlaps.ts +33 -0
  91. package/src/index.test.ts +39 -0
  92. package/src/index.ts +53 -0
  93. package/src/invertRange.ts +25 -0
  94. package/src/isPositionCloserToRangeStartThanRangeEnd.ts +22 -0
  95. package/src/isPositionWithinRange.ts +40 -0
  96. package/src/isRangeOrPositionWithinRange.ts +40 -0
  97. package/src/isRangeWithinRange.ts +18 -0
  98. package/src/loopEachPositionInRange.ts +11 -0
  99. package/src/modulatePositionByRange.ts +15 -0
  100. package/src/modulateRangeBySequenceLength.ts +13 -0
  101. package/src/normalizePositionByRangeLength.ts +24 -0
  102. package/src/normalizePositionByRangeLength1Based.ts +9 -0
  103. package/src/normalizeRange.ts +12 -0
  104. package/src/provideInclusiveOptions.ts +79 -0
  105. package/src/reversePositionInRange.ts +17 -0
  106. package/src/splitRangeIntoTwoPartsIfItIsCircular.ts +36 -0
  107. package/src/translateRange.ts +21 -0
  108. package/src/trimAnnStartEndToFitSeqLength.ts +9 -0
  109. package/src/trimNonCicularRangeByAnotherNonCircularRange.ts +63 -0
  110. package/src/trimNumberToFitWithin0ToAnotherNumber.ts +15 -0
  111. package/src/trimRangeByAnotherRange.ts +103 -0
  112. package/src/types.ts +12 -0
  113. package/src/zeroSubrangeByContainerRange.ts +49 -0
  114. package/translateRange.d.ts +5 -1
  115. package/trimAnnStartEndToFitSeqLength.d.ts +1 -1
  116. package/trimNonCicularRangeByAnotherNonCircularRange.d.ts +2 -4
  117. package/trimNumberToFitWithin0ToAnotherNumber.d.ts +1 -1
  118. package/trimRangeByAnotherRange.d.ts +2 -1
  119. package/types.d.ts +12 -0
  120. 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 | null;
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
@@ -1566,9 +1566,10 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
1566
1566
  }
1567
1567
  }
1568
1568
  }
1569
+ return null;
1569
1570
  }
1570
1571
  __name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
1571
- function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
1572
+ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible = false) {
1572
1573
  const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
1573
1574
  rangeA,
1574
1575
  maxRangeLength
@@ -1599,8 +1600,11 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
1599
1600
  joinedOverlap.start = o.start;
1600
1601
  return [];
1601
1602
  }
1603
+ return [o];
1602
1604
  });
1603
- overlaps.push(joinedOverlap);
1605
+ if (Object.keys(joinedOverlap).length > 0) {
1606
+ overlaps.push(joinedOverlap);
1607
+ }
1604
1608
  }
1605
1609
  return overlaps;
1606
1610
  }
@@ -1673,10 +1677,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1673
1677
  if (!overlaps.length) {
1674
1678
  return rangeToBeTrimmed;
1675
1679
  }
1676
- const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
1677
- rangeToBeTrimmed,
1678
- sequenceLength
1679
- );
1680
+ const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(rangeToBeTrimmed, sequenceLength);
1680
1681
  splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
1681
1682
  overlaps.forEach(function(overlap) {
1682
1683
  if (nonCircularRangeToBeTrimmed) {
@@ -1719,6 +1720,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1719
1720
  end: outputTrimmedRange.end
1720
1721
  });
1721
1722
  }
1723
+ return void 0;
1722
1724
  }
1723
1725
  __name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
1724
1726
  function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
@@ -1865,11 +1867,10 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
1865
1867
  }
1866
1868
  }
1867
1869
  }
1870
+ return overlaps;
1868
1871
  }
1869
1872
  __name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
1870
- function convertRangeIndices(range, inputType, outputType) {
1871
- inputType = inputType || {};
1872
- outputType = outputType || {};
1873
+ function convertRangeIndices(range, inputType = {}, outputType = {}) {
1873
1874
  return assign({}, range, {
1874
1875
  start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
1875
1876
  end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
@@ -1892,25 +1893,32 @@ function convertRangeTo1Based(range) {
1892
1893
  }
1893
1894
  __name(convertRangeTo1Based, "convertRangeTo1Based");
1894
1895
  function provideInclusiveOptions(funToWrap) {
1895
- return function() {
1896
- const args = Array.prototype.slice.call(arguments);
1896
+ return function(...args) {
1897
1897
  const options = args[args.length - 1];
1898
1898
  if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
1899
1899
  args.forEach(function(arg, index) {
1900
- if (arg && arg.start > -1 && options.inclusive1BasedStart) {
1901
- 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
+ });
1902
1905
  }
1903
- if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
1904
- 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
+ });
1905
1910
  }
1906
1911
  });
1907
1912
  }
1908
1913
  let returnVal = funToWrap.apply(this, args);
1909
- if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
1910
- 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
+ });
1911
1919
  }
1912
- if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
1913
- 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 });
1914
1922
  }
1915
1923
  return returnVal;
1916
1924
  };
@@ -1931,9 +1939,10 @@ function getRangeLength$1(range, rangeMax) {
1931
1939
  }
1932
1940
  __name(getRangeLength$1, "getRangeLength$1");
1933
1941
  function doesRangeSpanEntireSequence(range, sequenceLength) {
1934
- if (getRangeLength(range) === sequenceLength) {
1942
+ if (getRangeLength(range, sequenceLength) === sequenceLength) {
1935
1943
  return true;
1936
1944
  }
1945
+ return false;
1937
1946
  }
1938
1947
  __name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
1939
1948
  function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
@@ -1967,6 +1976,9 @@ function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, m
1967
1976
  return false;
1968
1977
  }
1969
1978
  if (isObject(rangeOrPositionToCheck)) {
1979
+ if (typeof rangeOrPositionToCheck.start !== "number") {
1980
+ return false;
1981
+ }
1970
1982
  return isRangeWithinRange(
1971
1983
  rangeOrPositionToCheck,
1972
1984
  containingRange,
@@ -1987,7 +1999,7 @@ function doesRangeSpanOrigin(range) {
1987
1999
  return range.start > range.end;
1988
2000
  }
1989
2001
  __name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
1990
- function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
2002
+ function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions = false) {
1991
2003
  let position = pPosition;
1992
2004
  if (position < 0) {
1993
2005
  position += sequenceLength;
@@ -2079,10 +2091,7 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
2079
2091
  if (range.start > range.end) {
2080
2092
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
2081
2093
  } else {
2082
- return expandOrContractNonCircularRangeToPosition(
2083
- range,
2084
- position
2085
- );
2094
+ return expandOrContractNonCircularRangeToPosition(range, position);
2086
2095
  }
2087
2096
  }
2088
2097
  __name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
@@ -2346,7 +2355,9 @@ function getSequenceWithinRange(range, sequence) {
2346
2355
  if (typeof subSequence === "string") {
2347
2356
  subSequence += sequence.slice(0, range.end + 1);
2348
2357
  } else {
2349
- subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
2358
+ subSequence = subSequence.concat(
2359
+ sequence.slice(0, range.end + 1)
2360
+ );
2350
2361
  }
2351
2362
  return subSequence;
2352
2363
  } else {
@@ -2366,7 +2377,7 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
2366
2377
  }
2367
2378
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
2368
2379
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
2369
- let yOffset = [];
2380
+ let yOffset = 0;
2370
2381
  const openYOffsetFound = YOffsetLevelsWithRanges.some(
2371
2382
  function(rangesAlreadyAddedToYOffset, index) {
2372
2383
  const rangeBlocked = rangesAlreadyAddedToYOffset.some(
@@ -2416,21 +2427,20 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
2416
2427
  __name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
2417
2428
  const invertRange = provideInclusiveOptions(invertRange$1);
2418
2429
  function invertRange$1(rangeOrCaret, rangeMax) {
2419
- if (rangeOrCaret.start > -1) {
2430
+ if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
2420
2431
  const start = rangeOrCaret.end + 1;
2421
2432
  const end = rangeOrCaret.start - 1;
2422
2433
  return {
2423
2434
  start: normalizePositionByRangeLength(start, rangeMax, false),
2424
2435
  end: normalizePositionByRangeLength(end, rangeMax, false)
2425
2436
  };
2426
- } else {
2427
- if (rangeOrCaret > -1) {
2428
- return {
2429
- start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2430
- end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2431
- };
2432
- }
2437
+ } else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
2438
+ return {
2439
+ start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2440
+ end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2441
+ };
2433
2442
  }
2443
+ return void 0;
2434
2444
  }
2435
2445
  __name(invertRange$1, "invertRange$1");
2436
2446
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
@@ -2498,9 +2508,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2498
2508
  "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
2499
2509
  );
2500
2510
  }
2501
- const newSubrange = {};
2502
- newSubrange.start = subRange.start - containerRange.start;
2503
- newSubrange.end = subRange.end - containerRange.start;
2511
+ const newSubrange = {
2512
+ start: subRange.start - containerRange.start,
2513
+ end: subRange.end - containerRange.start
2514
+ };
2504
2515
  if (newSubrange.start < 0) {
2505
2516
  newSubrange.start += sequenceLength;
2506
2517
  }
@@ -2511,10 +2522,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2511
2522
  }
2512
2523
  __name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
2513
2524
  function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
2514
- const mod = rangeLength ? modulo : identity;
2525
+ const mod = /* @__PURE__ */ __name((n) => rangeLength ? modulo(n, rangeLength) : n, "mod");
2515
2526
  const newRange = assign({}, rangeToBeAdjusted, {
2516
- start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
2517
- end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
2527
+ start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
2528
+ end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
2518
2529
  });
2519
2530
  return newRange;
2520
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';