@teselagen/range-utils 0.3.20-beta.1 → 0.3.20

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 (163) hide show
  1. package/adjustRangeToDeletionOfAnotherRange.d.ts +1 -2
  2. package/adjustRangeToDeletionOfAnotherRange.test.d.ts +1 -0
  3. package/adjustRangeToInsert.d.ts +1 -2
  4. package/adjustRangeToInsert.test.d.ts +1 -0
  5. package/adjustRangeToRotation.d.ts +1 -2
  6. package/adjustRangeToRotation.test.d.ts +1 -0
  7. package/checkIfNonCircularRangesOverlap.d.ts +1 -2
  8. package/checkIfNonCircularRangesOverlap.test.d.ts +1 -0
  9. package/checkIfPotentiallyCircularRangesOverlap.d.ts +1 -2
  10. package/checkIfPotentiallyCircularRangesOverlap.test.d.ts +1 -0
  11. package/collapseOverlapsGeneratedFromRangeComparisonIfPossible.d.ts +1 -2
  12. package/collapseOverlapsGeneratedFromRangeComparisonIfPossible.test.d.ts +1 -0
  13. package/convertRangeIndices.d.ts +1 -10
  14. package/convertRangeIndices.test.d.ts +1 -0
  15. package/convertRangeTo0Based.d.ts +1 -5
  16. package/convertRangeTo1Based.d.ts +1 -5
  17. package/doesRangeSpanEntireSequence.d.ts +1 -2
  18. package/doesRangeSpanOrigin.d.ts +1 -2
  19. package/expandOrContractCircularRangeToPosition.d.ts +2 -3
  20. package/expandOrContractNonCircularRangeToPosition.d.ts +2 -3
  21. package/expandOrContractRangeByLength.d.ts +1 -5
  22. package/expandOrContractRangeByLength.test.d.ts +1 -0
  23. package/expandOrContractRangeToPosition.d.ts +2 -3
  24. package/flipContainedRange.d.ts +1 -5
  25. package/flipContainedRange.test.d.ts +1 -0
  26. package/generateRandomRange.d.ts +3 -3
  27. package/generateRandomRange.test.d.ts +1 -0
  28. package/getAnnotationRangeType.d.ts +1 -2
  29. package/getAnnotationRangeType.test.d.ts +1 -0
  30. package/getEachPositionInRangeAsArray.d.ts +1 -2
  31. package/getEachPositionInRangeAsArray.test.d.ts +1 -0
  32. package/getLengthOfOverlappingRegionsBetweenTwoRanges.d.ts +1 -2
  33. package/getLengthOfOverlappingRegionsBetweenTwoRanges.test.d.ts +1 -0
  34. package/getMiddleOfRange.d.ts +1 -2
  35. package/getMiddleOfRange.test.d.ts +1 -0
  36. package/getOverlapOfNonCircularRanges.d.ts +4 -5
  37. package/getOverlapsOfPotentiallyCircularRanges.d.ts +1 -2
  38. package/getOverlapsOfPotentiallyCircularRanges.test.d.ts +1 -0
  39. package/getPositionFromAngle.d.ts +1 -1
  40. package/getRangeAngles.d.ts +7 -3
  41. package/getRangeAngles.test.d.ts +1 -0
  42. package/getRangeLength.d.ts +1 -5
  43. package/getRangeLength.test.d.ts +1 -0
  44. package/getRangesBetweenTwoRanges.d.ts +1 -2
  45. package/getSequenceWithinRange.d.ts +1 -3
  46. package/getSequenceWithinRange.test.d.ts +1 -0
  47. package/getShortestDistanceBetweenTwoPositions.d.ts +1 -1
  48. package/getShortestDistanceBetweenTwoPositions.test.d.ts +1 -0
  49. package/getYOffsetForPotentiallyCircularRange.d.ts +1 -2
  50. package/getYOffsetsForPotentiallyCircularRanges.d.ts +2 -3
  51. package/getYOffsetsForPotentiallyCircularRanges.test.d.ts +1 -0
  52. package/getZeroedRangeOverlaps.d.ts +1 -2
  53. package/getZeroedRangeOverlaps.test.d.ts +1 -0
  54. package/index.cjs +45 -58
  55. package/index.d.ts +0 -1
  56. package/index.js +45 -58
  57. package/index.test.d.ts +1 -0
  58. package/index.umd.cjs +45 -58
  59. package/invertRange.d.ts +1 -5
  60. package/invertRange.test.d.ts +1 -0
  61. package/isPositionCloserToRangeStartThanRangeEnd.d.ts +1 -2
  62. package/isPositionCloserToRangeStartThanRangeEnd.test.d.ts +1 -0
  63. package/isPositionWithinRange.d.ts +2 -3
  64. package/isRangeOrPositionWithinRange.d.ts +1 -2
  65. package/isRangeOrPositionWithinRange.test.d.ts +1 -0
  66. package/isRangeWithinRange.d.ts +1 -2
  67. package/loopEachPositionInRange.d.ts +1 -2
  68. package/modulatePositionByRange.d.ts +1 -2
  69. package/modulatePositionByRange.test.d.ts +1 -0
  70. package/modulateRangeBySequenceLength.d.ts +1 -8
  71. package/modulateRangeBySequenceLength.test.d.ts +1 -0
  72. package/normalizePositionByRangeLength.d.ts +1 -1
  73. package/normalizePositionByRangeLength.test.d.ts +1 -0
  74. package/normalizePositionByRangeLength1Based.d.ts +1 -1
  75. package/normalizePositionByRangeLength1Based.test.d.ts +1 -0
  76. package/normalizeRange.d.ts +1 -5
  77. package/normalizeRange.test.d.ts +1 -0
  78. package/package.json +2 -10
  79. package/provideInclusiveOptions.d.ts +1 -6
  80. package/reversePositionInRange.d.ts +1 -1
  81. package/splitRangeIntoTwoPartsIfItIsCircular.d.ts +3 -4
  82. package/splitRangeIntoTwoPartsIfItIsCircular.test.d.ts +1 -0
  83. package/src/{adjustRangeToDeletionOfAnotherRange.ts → adjustRangeToDeletionOfAnotherRange.js} +7 -4
  84. package/src/{adjustRangeToInsert.ts → adjustRangeToInsert.js} +4 -4
  85. package/src/adjustRangeToRotation.js +23 -0
  86. package/src/{checkIfNonCircularRangesOverlap.ts → checkIfNonCircularRangesOverlap.js} +4 -5
  87. package/src/{checkIfPotentiallyCircularRangesOverlap.ts → checkIfPotentiallyCircularRangesOverlap.js} +4 -4
  88. package/src/{collapseOverlapsGeneratedFromRangeComparisonIfPossible.ts → collapseOverlapsGeneratedFromRangeComparisonIfPossible.js} +4 -7
  89. package/src/{convertRangeIndices.ts → convertRangeIndices.js} +3 -11
  90. package/src/{convertRangeTo0Based.ts → convertRangeTo0Based.js} +1 -2
  91. package/src/{convertRangeTo1Based.ts → convertRangeTo1Based.js} +1 -2
  92. package/src/doesRangeSpanEntireSequence.js +7 -0
  93. package/src/doesRangeSpanOrigin.js +3 -0
  94. package/src/{expandOrContractCircularRangeToPosition.ts → expandOrContractCircularRangeToPosition.js} +3 -5
  95. package/src/{expandOrContractNonCircularRangeToPosition.ts → expandOrContractNonCircularRangeToPosition.js} +2 -4
  96. package/src/{expandOrContractRangeByLength.ts → expandOrContractRangeByLength.js} +4 -5
  97. package/src/{expandOrContractRangeToPosition.ts → expandOrContractRangeToPosition.js} +8 -6
  98. package/src/{flipContainedRange.ts → flipContainedRange.js} +8 -18
  99. package/src/{generateRandomRange.ts → generateRandomRange.js} +2 -6
  100. package/src/{getAnnotationRangeType.ts → getAnnotationRangeType.js} +3 -5
  101. package/src/{getEachPositionInRangeAsArray.ts → getEachPositionInRangeAsArray.js} +2 -6
  102. package/src/{getLengthOfOverlappingRegionsBetweenTwoRanges.ts → getLengthOfOverlappingRegionsBetweenTwoRanges.js} +3 -4
  103. package/src/{getMiddleOfRange.ts → getMiddleOfRange.js} +1 -2
  104. package/src/{getOverlapOfNonCircularRanges.ts → getOverlapOfNonCircularRanges.js} +1 -7
  105. package/src/{getOverlapsOfPotentiallyCircularRanges.ts → getOverlapsOfPotentiallyCircularRanges.js} +7 -13
  106. package/src/{getPositionFromAngle.ts → getPositionFromAngle.js} +3 -3
  107. package/src/{getRangeAngles.ts → getRangeAngles.js} +3 -8
  108. package/src/{getRangeLength.ts → getRangeLength.js} +1 -4
  109. package/src/{getRangesBetweenTwoRanges.ts → getRangesBetweenTwoRanges.js} +2 -7
  110. package/src/getSequenceWithinRange.js +17 -0
  111. package/src/{getShortestDistanceBetweenTwoPositions.ts → getShortestDistanceBetweenTwoPositions.js} +3 -3
  112. package/src/{getYOffsetForPotentiallyCircularRange.ts → getYOffsetForPotentiallyCircularRange.js} +4 -5
  113. package/src/{getYOffsetsForPotentiallyCircularRanges.ts → getYOffsetsForPotentiallyCircularRanges.js} +4 -5
  114. package/src/getYOffsetsForPotentiallyCircularRanges.test.js +42 -0
  115. package/src/{getZeroedRangeOverlaps.ts → getZeroedRangeOverlaps.js} +3 -4
  116. package/src/{getZeroedRangeOverlaps.test.ts → getZeroedRangeOverlaps.test.js} +15 -5
  117. package/src/{index.ts → index.js} +0 -1
  118. package/src/{index.test.ts → index.test.js} +3 -11
  119. package/src/invertRange.js +21 -0
  120. package/src/{isPositionCloserToRangeStartThanRangeEnd.ts → isPositionCloserToRangeStartThanRangeEnd.js} +3 -5
  121. package/src/{isPositionWithinRange.ts → isPositionWithinRange.js} +5 -14
  122. package/src/{isRangeOrPositionWithinRange.ts → isRangeOrPositionWithinRange.js} +6 -11
  123. package/src/{isRangeWithinRange.ts → isRangeWithinRange.js} +3 -5
  124. package/src/loopEachPositionInRange.js +5 -0
  125. package/src/{modulatePositionByRange.ts → modulatePositionByRange.js} +1 -6
  126. package/src/{modulateRangeBySequenceLength.ts → modulateRangeBySequenceLength.js} +1 -3
  127. package/src/{normalizePositionByRangeLength.ts → normalizePositionByRangeLength.js} +7 -7
  128. package/src/{normalizePositionByRangeLength1Based.ts → normalizePositionByRangeLength1Based.js} +2 -3
  129. package/src/{normalizeRange.ts → normalizeRange.js} +1 -2
  130. package/src/provideInclusiveOptions.js +39 -0
  131. package/src/{reversePositionInRange.ts → reversePositionInRange.js} +4 -4
  132. package/src/{splitRangeIntoTwoPartsIfItIsCircular.ts → splitRangeIntoTwoPartsIfItIsCircular.js} +4 -5
  133. package/src/{translateRange.ts → translateRange.js} +3 -5
  134. package/src/{trimAnnStartEndToFitSeqLength.ts → trimAnnStartEndToFitSeqLength.js} +2 -2
  135. package/src/{trimNonCicularRangeByAnotherNonCircularRange.ts → trimNonCicularRangeByAnotherNonCircularRange.js} +4 -6
  136. package/src/{trimNumberToFitWithin0ToAnotherNumber.ts → trimNumberToFitWithin0ToAnotherNumber.js} +4 -3
  137. package/src/{trimRangeByAnotherRange.ts → trimRangeByAnotherRange.js} +9 -9
  138. package/src/{zeroSubrangeByContainerRange.ts → zeroSubrangeByContainerRange.js} +8 -10
  139. package/translateRange.d.ts +1 -5
  140. package/translateRange.test.d.ts +1 -0
  141. package/trimAnnStartEndToFitSeqLength.d.ts +1 -1
  142. package/trimAnnStartEndToFitSeqLength.test.d.ts +1 -0
  143. package/trimNonCicularRangeByAnotherNonCircularRange.d.ts +4 -2
  144. package/trimNumberToFitWithin0ToAnotherNumber.d.ts +1 -1
  145. package/trimRangeByAnotherRange.d.ts +1 -2
  146. package/trimRangeByAnotherRange.test.d.ts +1 -0
  147. package/zeroSubrangeByContainerRange.d.ts +1 -2
  148. package/zeroSubrangeByContainerRange.test.d.ts +1 -0
  149. package/RangeAngles.d.ts +0 -7
  150. package/src/RangeAngles.ts +0 -9
  151. package/src/adjustRangeToRotation.ts +0 -22
  152. package/src/doesRangeSpanEntireSequence.ts +0 -12
  153. package/src/doesRangeSpanOrigin.ts +0 -5
  154. package/src/getSequenceWithinRange.ts +0 -33
  155. package/src/getYOffsetsForPotentiallyCircularRanges.test.ts +0 -17
  156. package/src/invertRange.ts +0 -25
  157. package/src/loopEachPositionInRange.ts +0 -11
  158. package/src/provideInclusiveOptions.ts +0 -79
  159. package/src/types.ts +0 -12
  160. package/types.d.ts +0 -12
  161. /package/src/{getRangeLength.test.ts → getRangeLength.test.js} +0 -0
  162. /package/src/{getSequenceWithinRange.test.ts → getSequenceWithinRange.test.js} +0 -0
  163. /package/src/{getShortestDistanceBetweenTwoPositions.test.ts → getShortestDistanceBetweenTwoPositions.test.js} +0 -0
package/index.js CHANGED
@@ -1564,10 +1564,9 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
1564
1564
  }
1565
1565
  }
1566
1566
  }
1567
- return null;
1568
1567
  }
1569
1568
  __name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
1570
- function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible = false) {
1569
+ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
1571
1570
  const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
1572
1571
  rangeA,
1573
1572
  maxRangeLength
@@ -1598,11 +1597,8 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
1598
1597
  joinedOverlap.start = o.start;
1599
1598
  return [];
1600
1599
  }
1601
- return [o];
1602
1600
  });
1603
- if (Object.keys(joinedOverlap).length > 0) {
1604
- overlaps.push(joinedOverlap);
1605
- }
1601
+ overlaps.push(joinedOverlap);
1606
1602
  }
1607
1603
  return overlaps;
1608
1604
  }
@@ -1675,7 +1671,10 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1675
1671
  if (!overlaps.length) {
1676
1672
  return rangeToBeTrimmed;
1677
1673
  }
1678
- const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(rangeToBeTrimmed, sequenceLength);
1674
+ const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
1675
+ rangeToBeTrimmed,
1676
+ sequenceLength
1677
+ );
1679
1678
  splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
1680
1679
  overlaps.forEach(function(overlap) {
1681
1680
  if (nonCircularRangeToBeTrimmed) {
@@ -1718,7 +1717,6 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
1718
1717
  end: outputTrimmedRange.end
1719
1718
  });
1720
1719
  }
1721
- return void 0;
1722
1720
  }
1723
1721
  __name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
1724
1722
  function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
@@ -1865,10 +1863,11 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
1865
1863
  }
1866
1864
  }
1867
1865
  }
1868
- return overlaps;
1869
1866
  }
1870
1867
  __name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
1871
- function convertRangeIndices(range, inputType = {}, outputType = {}) {
1868
+ function convertRangeIndices(range, inputType, outputType) {
1869
+ inputType = inputType || {};
1870
+ outputType = outputType || {};
1872
1871
  return assign({}, range, {
1873
1872
  start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
1874
1873
  end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
@@ -1891,32 +1890,25 @@ function convertRangeTo1Based(range) {
1891
1890
  }
1892
1891
  __name(convertRangeTo1Based, "convertRangeTo1Based");
1893
1892
  function provideInclusiveOptions(funToWrap) {
1894
- return function(...args) {
1893
+ return function() {
1894
+ const args = Array.prototype.slice.call(arguments);
1895
1895
  const options = args[args.length - 1];
1896
1896
  if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
1897
1897
  args.forEach(function(arg, index) {
1898
- const potentialRange = arg;
1899
- if (potentialRange && typeof potentialRange.start === "number" && potentialRange.start > -1 && options.inclusive1BasedStart) {
1900
- args[index] = assign(potentialRange, {
1901
- start: potentialRange.start - 1
1902
- });
1898
+ if (arg && arg.start > -1 && options.inclusive1BasedStart) {
1899
+ args[index] = assign(arg, { start: arg.start - 1 });
1903
1900
  }
1904
- if (potentialRange && typeof potentialRange.end === "number" && potentialRange.end > -1 && options.inclusive1BasedEnd) {
1905
- args[index] = assign(potentialRange, {
1906
- end: potentialRange.end - 1
1907
- });
1901
+ if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
1902
+ args[index] = assign(arg, { end: arg.end - 1 });
1908
1903
  }
1909
1904
  });
1910
1905
  }
1911
1906
  let returnVal = funToWrap.apply(this, args);
1912
- const potentialReturn = returnVal;
1913
- if (potentialReturn && typeof potentialReturn.start === "number" && potentialReturn.start > -1 && options && options.inclusive1BasedStart) {
1914
- returnVal = assign(potentialReturn, {
1915
- start: potentialReturn.start + 1
1916
- });
1907
+ if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
1908
+ returnVal = assign(returnVal, { start: returnVal.start + 1 });
1917
1909
  }
1918
- if (potentialReturn && typeof potentialReturn.end === "number" && potentialReturn.end > -1 && options && options.inclusive1BasedEnd) {
1919
- returnVal = assign(potentialReturn, { end: potentialReturn.end + 1 });
1910
+ if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
1911
+ returnVal = assign(returnVal, { end: returnVal.end + 1 });
1920
1912
  }
1921
1913
  return returnVal;
1922
1914
  };
@@ -1937,10 +1929,9 @@ function getRangeLength$1(range, rangeMax) {
1937
1929
  }
1938
1930
  __name(getRangeLength$1, "getRangeLength$1");
1939
1931
  function doesRangeSpanEntireSequence(range, sequenceLength) {
1940
- if (getRangeLength(range, sequenceLength) === sequenceLength) {
1932
+ if (getRangeLength(range) === sequenceLength) {
1941
1933
  return true;
1942
1934
  }
1943
- return false;
1944
1935
  }
1945
1936
  __name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
1946
1937
  function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
@@ -1974,9 +1965,6 @@ function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, m
1974
1965
  return false;
1975
1966
  }
1976
1967
  if (isObject(rangeOrPositionToCheck)) {
1977
- if (typeof rangeOrPositionToCheck.start !== "number") {
1978
- return false;
1979
- }
1980
1968
  return isRangeWithinRange(
1981
1969
  rangeOrPositionToCheck,
1982
1970
  containingRange,
@@ -1997,7 +1985,7 @@ function doesRangeSpanOrigin(range) {
1997
1985
  return range.start > range.end;
1998
1986
  }
1999
1987
  __name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
2000
- function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions = false) {
1988
+ function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
2001
1989
  let position = pPosition;
2002
1990
  if (position < 0) {
2003
1991
  position += sequenceLength;
@@ -2089,7 +2077,10 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
2089
2077
  if (range.start > range.end) {
2090
2078
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
2091
2079
  } else {
2092
- return expandOrContractNonCircularRangeToPosition(range, position);
2080
+ return expandOrContractNonCircularRangeToPosition(
2081
+ range,
2082
+ position
2083
+ );
2093
2084
  }
2094
2085
  }
2095
2086
  __name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
@@ -2347,19 +2338,15 @@ function getRangesBetweenTwoRanges(range1, range2) {
2347
2338
  }
2348
2339
  __name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
2349
2340
  function getSequenceWithinRange(range, sequence) {
2350
- if (range.start < 0 || range.end < 0) {
2351
- if (typeof sequence === "string") return "";
2352
- return [];
2353
- }
2341
+ if (range.start < 0 || range.end < 0) return "";
2354
2342
  if (range.start > range.end) {
2355
- const subSequence = sequence.slice(range.start, sequence.length);
2343
+ let subSequence = sequence.slice(range.start, sequence.length);
2356
2344
  if (typeof subSequence === "string") {
2357
- return subSequence + sequence.slice(0, range.end + 1);
2345
+ subSequence += sequence.slice(0, range.end + 1);
2358
2346
  } else {
2359
- return subSequence.concat(
2360
- sequence.slice(0, range.end + 1)
2361
- );
2347
+ subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
2362
2348
  }
2349
+ return subSequence;
2363
2350
  } else {
2364
2351
  return sequence.slice(range.start, range.end + 1);
2365
2352
  }
@@ -2377,7 +2364,7 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
2377
2364
  }
2378
2365
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
2379
2366
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
2380
- let yOffset = 0;
2367
+ let yOffset = [];
2381
2368
  const openYOffsetFound = YOffsetLevelsWithRanges.some(
2382
2369
  function(rangesAlreadyAddedToYOffset, index) {
2383
2370
  const rangeBlocked = rangesAlreadyAddedToYOffset.some(
@@ -2427,20 +2414,21 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
2427
2414
  __name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
2428
2415
  const invertRange = provideInclusiveOptions(invertRange$1);
2429
2416
  function invertRange$1(rangeOrCaret, rangeMax) {
2430
- if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
2417
+ if (rangeOrCaret.start > -1) {
2431
2418
  const start = rangeOrCaret.end + 1;
2432
2419
  const end = rangeOrCaret.start - 1;
2433
2420
  return {
2434
2421
  start: normalizePositionByRangeLength(start, rangeMax, false),
2435
2422
  end: normalizePositionByRangeLength(end, rangeMax, false)
2436
2423
  };
2437
- } else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
2438
- return {
2439
- start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2440
- end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2441
- };
2424
+ } else {
2425
+ if (rangeOrCaret > -1) {
2426
+ return {
2427
+ start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2428
+ end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2429
+ };
2430
+ }
2442
2431
  }
2443
- return void 0;
2444
2432
  }
2445
2433
  __name(invertRange$1, "invertRange$1");
2446
2434
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
@@ -2508,10 +2496,9 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2508
2496
  "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
2509
2497
  );
2510
2498
  }
2511
- const newSubrange = {
2512
- start: subRange.start - containerRange.start,
2513
- end: subRange.end - containerRange.start
2514
- };
2499
+ const newSubrange = {};
2500
+ newSubrange.start = subRange.start - containerRange.start;
2501
+ newSubrange.end = subRange.end - containerRange.start;
2515
2502
  if (newSubrange.start < 0) {
2516
2503
  newSubrange.start += sequenceLength;
2517
2504
  }
@@ -2522,10 +2509,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
2522
2509
  }
2523
2510
  __name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
2524
2511
  function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
2525
- const mod = /* @__PURE__ */ __name((n) => rangeLength ? modulo(n, rangeLength) : n, "mod");
2512
+ const mod = rangeLength ? modulo : identity;
2526
2513
  const newRange = assign({}, rangeToBeAdjusted, {
2527
- start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
2528
- end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
2514
+ start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
2515
+ end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
2529
2516
  });
2530
2517
  return newRange;
2531
2518
  }
@@ -0,0 +1 @@
1
+ export {};
package/index.umd.cjs CHANGED
@@ -1568,10 +1568,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1568
1568
  }
1569
1569
  }
1570
1570
  }
1571
- return null;
1572
1571
  }
1573
1572
  __name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
1574
- function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible = false) {
1573
+ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
1575
1574
  const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
1576
1575
  rangeA,
1577
1576
  maxRangeLength
@@ -1602,11 +1601,8 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1602
1601
  joinedOverlap.start = o.start;
1603
1602
  return [];
1604
1603
  }
1605
- return [o];
1606
1604
  });
1607
- if (Object.keys(joinedOverlap).length > 0) {
1608
- overlaps.push(joinedOverlap);
1609
- }
1605
+ overlaps.push(joinedOverlap);
1610
1606
  }
1611
1607
  return overlaps;
1612
1608
  }
@@ -1679,7 +1675,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1679
1675
  if (!overlaps.length) {
1680
1676
  return rangeToBeTrimmed;
1681
1677
  }
1682
- const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(rangeToBeTrimmed, sequenceLength);
1678
+ const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
1679
+ rangeToBeTrimmed,
1680
+ sequenceLength
1681
+ );
1683
1682
  splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
1684
1683
  overlaps.forEach(function(overlap) {
1685
1684
  if (nonCircularRangeToBeTrimmed) {
@@ -1722,7 +1721,6 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1722
1721
  end: outputTrimmedRange.end
1723
1722
  });
1724
1723
  }
1725
- return void 0;
1726
1724
  }
1727
1725
  __name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
1728
1726
  function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
@@ -1869,10 +1867,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1869
1867
  }
1870
1868
  }
1871
1869
  }
1872
- return overlaps;
1873
1870
  }
1874
1871
  __name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
1875
- function convertRangeIndices(range, inputType = {}, outputType = {}) {
1872
+ function convertRangeIndices(range, inputType, outputType) {
1873
+ inputType = inputType || {};
1874
+ outputType = outputType || {};
1876
1875
  return assign({}, range, {
1877
1876
  start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
1878
1877
  end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
@@ -1895,32 +1894,25 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1895
1894
  }
1896
1895
  __name(convertRangeTo1Based, "convertRangeTo1Based");
1897
1896
  function provideInclusiveOptions(funToWrap) {
1898
- return function(...args) {
1897
+ return function() {
1898
+ const args = Array.prototype.slice.call(arguments);
1899
1899
  const options = args[args.length - 1];
1900
1900
  if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
1901
1901
  args.forEach(function(arg, index) {
1902
- const potentialRange = arg;
1903
- if (potentialRange && typeof potentialRange.start === "number" && potentialRange.start > -1 && options.inclusive1BasedStart) {
1904
- args[index] = assign(potentialRange, {
1905
- start: potentialRange.start - 1
1906
- });
1902
+ if (arg && arg.start > -1 && options.inclusive1BasedStart) {
1903
+ args[index] = assign(arg, { start: arg.start - 1 });
1907
1904
  }
1908
- if (potentialRange && typeof potentialRange.end === "number" && potentialRange.end > -1 && options.inclusive1BasedEnd) {
1909
- args[index] = assign(potentialRange, {
1910
- end: potentialRange.end - 1
1911
- });
1905
+ if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
1906
+ args[index] = assign(arg, { end: arg.end - 1 });
1912
1907
  }
1913
1908
  });
1914
1909
  }
1915
1910
  let returnVal = funToWrap.apply(this, args);
1916
- const potentialReturn = returnVal;
1917
- if (potentialReturn && typeof potentialReturn.start === "number" && potentialReturn.start > -1 && options && options.inclusive1BasedStart) {
1918
- returnVal = assign(potentialReturn, {
1919
- start: potentialReturn.start + 1
1920
- });
1911
+ if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
1912
+ returnVal = assign(returnVal, { start: returnVal.start + 1 });
1921
1913
  }
1922
- if (potentialReturn && typeof potentialReturn.end === "number" && potentialReturn.end > -1 && options && options.inclusive1BasedEnd) {
1923
- returnVal = assign(potentialReturn, { end: potentialReturn.end + 1 });
1914
+ if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
1915
+ returnVal = assign(returnVal, { end: returnVal.end + 1 });
1924
1916
  }
1925
1917
  return returnVal;
1926
1918
  };
@@ -1941,10 +1933,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1941
1933
  }
1942
1934
  __name(getRangeLength$1, "getRangeLength$1");
1943
1935
  function doesRangeSpanEntireSequence(range, sequenceLength) {
1944
- if (getRangeLength(range, sequenceLength) === sequenceLength) {
1936
+ if (getRangeLength(range) === sequenceLength) {
1945
1937
  return true;
1946
1938
  }
1947
- return false;
1948
1939
  }
1949
1940
  __name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
1950
1941
  function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
@@ -1978,9 +1969,6 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
1978
1969
  return false;
1979
1970
  }
1980
1971
  if (isObject(rangeOrPositionToCheck)) {
1981
- if (typeof rangeOrPositionToCheck.start !== "number") {
1982
- return false;
1983
- }
1984
1972
  return isRangeWithinRange(
1985
1973
  rangeOrPositionToCheck,
1986
1974
  containingRange,
@@ -2001,7 +1989,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2001
1989
  return range.start > range.end;
2002
1990
  }
2003
1991
  __name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
2004
- function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions = false) {
1992
+ function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
2005
1993
  let position = pPosition;
2006
1994
  if (position < 0) {
2007
1995
  position += sequenceLength;
@@ -2093,7 +2081,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2093
2081
  if (range.start > range.end) {
2094
2082
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
2095
2083
  } else {
2096
- return expandOrContractNonCircularRangeToPosition(range, position);
2084
+ return expandOrContractNonCircularRangeToPosition(
2085
+ range,
2086
+ position
2087
+ );
2097
2088
  }
2098
2089
  }
2099
2090
  __name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
@@ -2351,19 +2342,15 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2351
2342
  }
2352
2343
  __name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
2353
2344
  function getSequenceWithinRange(range, sequence) {
2354
- if (range.start < 0 || range.end < 0) {
2355
- if (typeof sequence === "string") return "";
2356
- return [];
2357
- }
2345
+ if (range.start < 0 || range.end < 0) return "";
2358
2346
  if (range.start > range.end) {
2359
- const subSequence = sequence.slice(range.start, sequence.length);
2347
+ let subSequence = sequence.slice(range.start, sequence.length);
2360
2348
  if (typeof subSequence === "string") {
2361
- return subSequence + sequence.slice(0, range.end + 1);
2349
+ subSequence += sequence.slice(0, range.end + 1);
2362
2350
  } else {
2363
- return subSequence.concat(
2364
- sequence.slice(0, range.end + 1)
2365
- );
2351
+ subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
2366
2352
  }
2353
+ return subSequence;
2367
2354
  } else {
2368
2355
  return sequence.slice(range.start, range.end + 1);
2369
2356
  }
@@ -2381,7 +2368,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2381
2368
  }
2382
2369
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
2383
2370
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
2384
- let yOffset = 0;
2371
+ let yOffset = [];
2385
2372
  const openYOffsetFound = YOffsetLevelsWithRanges.some(
2386
2373
  function(rangesAlreadyAddedToYOffset, index) {
2387
2374
  const rangeBlocked = rangesAlreadyAddedToYOffset.some(
@@ -2431,20 +2418,21 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2431
2418
  __name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
2432
2419
  const invertRange = provideInclusiveOptions(invertRange$1);
2433
2420
  function invertRange$1(rangeOrCaret, rangeMax) {
2434
- if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
2421
+ if (rangeOrCaret.start > -1) {
2435
2422
  const start = rangeOrCaret.end + 1;
2436
2423
  const end = rangeOrCaret.start - 1;
2437
2424
  return {
2438
2425
  start: normalizePositionByRangeLength(start, rangeMax, false),
2439
2426
  end: normalizePositionByRangeLength(end, rangeMax, false)
2440
2427
  };
2441
- } else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
2442
- return {
2443
- start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2444
- end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2445
- };
2428
+ } else {
2429
+ if (rangeOrCaret > -1) {
2430
+ return {
2431
+ start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
2432
+ end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
2433
+ };
2434
+ }
2446
2435
  }
2447
- return void 0;
2448
2436
  }
2449
2437
  __name(invertRange$1, "invertRange$1");
2450
2438
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
@@ -2512,10 +2500,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2512
2500
  "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
2513
2501
  );
2514
2502
  }
2515
- const newSubrange = {
2516
- start: subRange.start - containerRange.start,
2517
- end: subRange.end - containerRange.start
2518
- };
2503
+ const newSubrange = {};
2504
+ newSubrange.start = subRange.start - containerRange.start;
2505
+ newSubrange.end = subRange.end - containerRange.start;
2519
2506
  if (newSubrange.start < 0) {
2520
2507
  newSubrange.start += sequenceLength;
2521
2508
  }
@@ -2526,10 +2513,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
2526
2513
  }
2527
2514
  __name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
2528
2515
  function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
2529
- const mod = /* @__PURE__ */ __name((n) => rangeLength ? modulo(n, rangeLength) : n, "mod");
2516
+ const mod = rangeLength ? modulo : identity;
2530
2517
  const newRange = assign({}, rangeToBeAdjusted, {
2531
- start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
2532
- end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
2518
+ start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
2519
+ end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
2533
2520
  });
2534
2521
  return newRange;
2535
2522
  }
package/invertRange.d.ts CHANGED
@@ -1,6 +1,2 @@
1
- import { Range } from './types';
2
- declare const _default: (rangeOrCaret: number | Range, rangeMax: number, options?: {
3
- inclusive1BasedEnd?: boolean;
4
- inclusive1BasedStart?: boolean;
5
- } | undefined) => Range | undefined;
1
+ declare const _default: (...args: any[]) => any;
6
2
  export default _default;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1 @@
1
- import { Range } from './types';
2
- export default function isPositionCloserToRangeStartThanRangeEnd(position: number, range: Range, maxLength: number): boolean;
1
+ export default function isPositionCloserToRangeStartThanRangeEnd(position: any, range: any, maxLength: any): boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { Range } from './types';
1
+ export default isPositionWithinRange;
2
2
  /**
3
3
  *
4
4
  * @param {*} position //assumed to be a 0 based "caretPosition"
@@ -6,5 +6,4 @@ import { Range } from './types';
6
6
  * @param {*} sequenceLength
7
7
  * @param {*} includeEdges - (default false) whether or not to say
8
8
  */
9
- declare function isPositionWithinRange(position: number, range: Range, sequenceLength: number, includeStartEdge?: boolean, includeEndEdge?: boolean): boolean;
10
- export default isPositionWithinRange;
9
+ declare function isPositionWithinRange(position: any, range: any, sequenceLength: any, includeStartEdge: any, includeEndEdge: any): boolean;
@@ -1,2 +1 @@
1
- import { Range } from './types';
2
- export default function isRangeOrPositionWithinRange(rangeOrPositionToCheck: Range | number, containingRange: Range, maxLength: number, includeStartEdge?: boolean, includeEndEdge?: boolean): boolean;
1
+ export default function isRangeOrPositionWithinRange(rangeOrPositionToCheck: any, containingRange: any, maxLength: any, includeStartEdge: any, includeEndEdge: any): boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1 @@
1
- import { Range } from './types';
2
- export default function isRangeWithinRange(rangeToCheck: Range, containingRange: Range, maxLength: number): boolean;
1
+ export default function isRangeWithinRange(rangeToCheck: any, containingRange: any, maxLength: any): boolean;
@@ -1,2 +1 @@
1
- import { Range } from './types';
2
- export default function loopEachPositionInRange(range: Range, rangeMax: number, func: (pos: number) => void): void;
1
+ export default function loopEachPositionInRange(range: any, rangeMax: any, func: any): void;
@@ -1,2 +1 @@
1
- import { Range } from './types';
2
- export default function modulatePositionByRange(position: number, range: Range): number;
1
+ export default function modulatePositionByRange(position: any, range: any): any;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,2 @@
1
- import { Range } from './types';
2
- declare const _default: (range: Range, seqLen: number, options?: {
3
- inclusive1BasedEnd?: boolean;
4
- inclusive1BasedStart?: boolean;
5
- } | undefined) => Range & {
6
- start: number;
7
- end: number;
8
- };
1
+ declare const _default: (...args: any[]) => any;
9
2
  export default _default;
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export default function normalizePositionByRangeLength(pPosition: number, sequenceLength: number, isInBetweenPositions?: boolean): number;
1
+ export default function normalizePositionByRangeLength(pPosition: any, sequenceLength: any, isInBetweenPositions: any): any;
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export default function normalizePositionByRangeLength1Based(position: number, sequenceLength: number): number;
1
+ export default function normalizePositionByRangeLength1Based(position: any, sequenceLength: any): any;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1 @@
1
- import { Range } from './types';
2
- export default function normalizeRange(range: Range, sequenceLength: number): Range & {
3
- start: number;
4
- end: number;
5
- };
1
+ export default function normalizeRange(range: any, sequenceLength: any): any;
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,17 +1,9 @@
1
1
  {
2
2
  "name": "@teselagen/range-utils",
3
- "version": "0.3.20-beta.1",
3
+ "version": "0.3.20",
4
4
  "type": "module",
5
5
  "repository": "https://github.com/TeselaGen/tg-oss",
6
6
  "dependencies": {
7
7
  "lodash-es": "^4.17.21"
8
- },
9
- "main": "./src/index.ts",
10
- "exports": {
11
- ".": {
12
- "import": "./src/index.ts",
13
- "require": "./src/index.ts"
14
- }
15
- },
16
- "types": "./src/index.ts"
8
+ }
17
9
  }
@@ -1,6 +1 @@
1
- type Options = {
2
- inclusive1BasedEnd?: boolean;
3
- inclusive1BasedStart?: boolean;
4
- };
5
- export default function provideInclusiveOptions<T extends (...args: any[]) => any>(funToWrap: T): (...args: [...Parameters<T>, options?: Options]) => ReturnType<T>;
6
- export {};
1
+ export default function provideInclusiveOptions(funToWrap: any): (...args: any[]) => any;
@@ -1 +1 @@
1
- export default function reversePositionInRange(position: number, rangeLength: number, isInBetweenPositions: boolean): number;
1
+ export default function reversePositionInRange(position: any, rangeLength: any, isInBetweenPositions: any): number;
@@ -1,6 +1,5 @@
1
- import { Range } from './types';
2
- export default function splitRangeIntoTwoPartsIfItIsCircular(range: Range, sequenceLength: number): {
3
- start: number;
4
- end: number;
1
+ export default function splitRangeIntoTwoPartsIfItIsCircular(range: any, sequenceLength: any): {
2
+ start: any;
3
+ end: any;
5
4
  type: string;
6
5
  }[];
@@ -0,0 +1 @@
1
+ export {};
@@ -1,14 +1,17 @@
1
- import { Range } from "./types";
2
1
  import splitRangeIntoTwoPartsIfItIsCircular from "./splitRangeIntoTwoPartsIfItIsCircular";
3
2
  import trimRangeByAnotherRange from "./trimRangeByAnotherRange";
4
3
 
5
4
  //takes in two potentially circular ranges and returns the first one trimmed by the second one
6
5
  //returns null if no range is left after the trimming
7
6
  export default function adjustRangeToDeletionOfAnotherRange(
8
- rangeToBeAdjusted: Range,
9
- anotherRange: Range,
10
- maxLength: number
7
+ rangeToBeAdjusted,
8
+ anotherRange,
9
+ maxLength
11
10
  ) {
11
+ // ac.throw(ac.range, rangeToBeAdjusted)
12
+ // ac.throw(ac.range, anotherRange)
13
+ // ac.throw(ac.posInt, maxLength)
14
+
12
15
  const trimmedRange = trimRangeByAnotherRange(
13
16
  rangeToBeAdjusted,
14
17
  anotherRange,