@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
@@ -1,33 +0,0 @@
1
- import { Range } from "./types";
2
-
3
- // overload the function signatures so that TS knows what type to expect back (string or T[])
4
- export default function getSequenceWithinRange(
5
- range: Range,
6
- sequence: string
7
- ): string;
8
- export default function getSequenceWithinRange<T>(
9
- range: Range,
10
- sequence: T[]
11
- ): T[];
12
- export default function getSequenceWithinRange<T>(
13
- range: Range,
14
- sequence: string | T[]
15
- ) {
16
- if (range.start < 0 || range.end < 0) {
17
- if (typeof sequence === "string") return "";
18
- return [];
19
- }
20
- if (range.start > range.end) {
21
- //circular range
22
- const subSequence = sequence.slice(range.start, sequence.length);
23
- if (typeof subSequence === "string") {
24
- return subSequence + sequence.slice(0, range.end + 1);
25
- } else {
26
- return (subSequence as T[]).concat(
27
- sequence.slice(0, range.end + 1) as T[]
28
- );
29
- }
30
- } else {
31
- return sequence.slice(range.start, range.end + 1);
32
- }
33
- }
@@ -1,17 +0,0 @@
1
- import { expect } from "chai";
2
- import getYOffsetsForPotentiallyCircularRanges from "./getYOffsetsForPotentiallyCircularRanges.js";
3
- describe("getYOffsetsForPotentiallyCircularRanges", function () {
4
- it("returns correct yOffset for overlapping ranges", function () {
5
- const ranges = [
6
- { start: 0, end: 10, id: "1" },
7
- { start: 5, end: 20, id: "2" },
8
- { start: 15, end: 25, id: "3" }
9
- ];
10
- getYOffsetsForPotentiallyCircularRanges(ranges, false);
11
- expect(ranges).to.deep.equal([
12
- { start: 0, end: 10, id: "1", yOffset: 0 },
13
- { start: 5, end: 20, id: "2", yOffset: 1 },
14
- { start: 15, end: 25, id: "3", yOffset: 0 }
15
- ]);
16
- });
17
- });
@@ -1,25 +0,0 @@
1
- import { Range } from "./types";
2
-
3
- import normalizePositionByRangeLength from "./normalizePositionByRangeLength";
4
- import provideInclusiveOptions from "./provideInclusiveOptions";
5
- export default provideInclusiveOptions(invertRange);
6
-
7
- function invertRange(
8
- rangeOrCaret: Range | number,
9
- rangeMax: number
10
- ): Range | undefined {
11
- if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
12
- const start = rangeOrCaret.end + 1;
13
- const end = rangeOrCaret.start - 1;
14
- return {
15
- start: normalizePositionByRangeLength(start, rangeMax, false),
16
- end: normalizePositionByRangeLength(end, rangeMax, false)
17
- };
18
- } else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
19
- return {
20
- start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
21
- end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
22
- };
23
- }
24
- return undefined;
25
- }
@@ -1,11 +0,0 @@
1
- import { Range } from "./types";
2
-
3
- import getEachPositionInRangeAsArray from "./getEachPositionInRangeAsArray";
4
-
5
- export default function loopEachPositionInRange(
6
- range: Range,
7
- rangeMax: number,
8
- func: (pos: number) => void
9
- ) {
10
- getEachPositionInRangeAsArray(range, rangeMax).map(func);
11
- }
@@ -1,79 +0,0 @@
1
- import { assign } from "lodash-es";
2
-
3
- type Options = {
4
- inclusive1BasedEnd?: boolean;
5
- inclusive1BasedStart?: boolean;
6
- };
7
-
8
- export default function provideInclusiveOptions<
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- T extends (...args: any[]) => any
11
- >(
12
- funToWrap: T
13
- ): (
14
- ...args: [...Parameters<T>, options?: Options]
15
- ) => ReturnType<T> {
16
- return function (
17
- this: unknown,
18
- ...args: [...Parameters<T>, options?: Options]
19
- ): ReturnType<T> {
20
- const options = args[args.length - 1] as Options | undefined;
21
- if (
22
- options &&
23
- (options.inclusive1BasedEnd || options.inclusive1BasedStart)
24
- ) {
25
- args.forEach(function (arg, index) {
26
- // cast arg to check for start/end
27
- const potentialRange = arg as { start?: number; end?: number } | null;
28
- if (
29
- potentialRange &&
30
- typeof potentialRange.start === "number" &&
31
- potentialRange.start > -1 &&
32
- options.inclusive1BasedStart
33
- ) {
34
- args[index] = assign(potentialRange, {
35
- start: potentialRange.start - 1
36
- });
37
- }
38
- if (
39
- potentialRange &&
40
- typeof potentialRange.end === "number" &&
41
- potentialRange.end > -1 &&
42
- options.inclusive1BasedEnd
43
- ) {
44
- args[index] = assign(potentialRange, {
45
- end: potentialRange.end - 1
46
- });
47
- }
48
- });
49
- }
50
- // eslint-disable-next-line @typescript-eslint/ban-types
51
- let returnVal = (funToWrap as Function).apply(this, args);
52
- const potentialReturn = returnVal as {
53
- start?: number;
54
- end?: number;
55
- } | null;
56
-
57
- if (
58
- potentialReturn &&
59
- typeof potentialReturn.start === "number" &&
60
- potentialReturn.start > -1 &&
61
- options &&
62
- options.inclusive1BasedStart
63
- ) {
64
- returnVal = assign(potentialReturn, {
65
- start: potentialReturn.start + 1
66
- });
67
- }
68
- if (
69
- potentialReturn &&
70
- typeof potentialReturn.end === "number" &&
71
- potentialReturn.end > -1 &&
72
- options &&
73
- options.inclusive1BasedEnd
74
- ) {
75
- returnVal = assign(potentialReturn, { end: potentialReturn.end + 1 });
76
- }
77
- return returnVal as ReturnType<T>;
78
- };
79
- }
package/src/types.ts DELETED
@@ -1,12 +0,0 @@
1
- export interface Range {
2
- start: number;
3
- end: number;
4
- type?: string;
5
- locations?: Range[];
6
- overlapsSelf?: boolean;
7
- yOffset?: number;
8
- aminoAcids?: unknown[];
9
- forward?: boolean;
10
- notes?: Record<string, unknown> | string;
11
- [key: string]: unknown;
12
- }
package/types.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export interface Range {
2
- start: number;
3
- end: number;
4
- type?: string;
5
- locations?: Range[];
6
- overlapsSelf?: boolean;
7
- yOffset?: number;
8
- aminoAcids?: unknown[];
9
- forward?: boolean;
10
- notes?: Record<string, unknown> | string;
11
- [key: string]: unknown;
12
- }