curvy 1.0.7 → 1.0.9

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 (109) hide show
  1. package/dist/curve/cubic2d.d.mts +80 -2
  2. package/dist/curve/cubic2d.d.ts +80 -2
  3. package/dist/curve/cubic2d.mjs +9 -26
  4. package/dist/curve/cubic2d.mjs.map +1 -0
  5. package/dist/curve/linear2d.d.mts +68 -2
  6. package/dist/curve/linear2d.d.ts +68 -2
  7. package/dist/curve/linear2d.mjs +11 -14
  8. package/dist/curve/linear2d.mjs.map +1 -0
  9. package/dist/curve/quadratic2d.d.mts +86 -2
  10. package/dist/curve/quadratic2d.d.ts +86 -2
  11. package/dist/curve/quadratic2d.mjs +10 -15
  12. package/dist/curve/quadratic2d.mjs.map +1 -0
  13. package/dist/interval.d.mts +195 -2
  14. package/dist/interval.d.ts +195 -2
  15. package/dist/interval.mjs +9 -12
  16. package/dist/interval.mjs.map +1 -0
  17. package/dist/matrix/matrix2x2.d.mts +273 -2
  18. package/dist/matrix/matrix2x2.d.ts +273 -2
  19. package/dist/matrix/matrix2x2.mjs +5 -4
  20. package/dist/matrix/matrix2x2.mjs.map +1 -0
  21. package/dist/matrix/matrix3x3.d.mts +308 -1
  22. package/dist/matrix/matrix3x3.d.ts +308 -1
  23. package/dist/matrix/matrix3x3.mjs +5 -4
  24. package/dist/matrix/matrix3x3.mjs.map +1 -0
  25. package/dist/matrix/matrix4x4.d.mts +310 -1
  26. package/dist/matrix/matrix4x4.d.ts +310 -1
  27. package/dist/matrix/matrix4x4.mjs +24 -61
  28. package/dist/matrix/matrix4x4.mjs.map +1 -0
  29. package/dist/path/cubic2d.d.mts +68 -2
  30. package/dist/path/cubic2d.d.ts +68 -2
  31. package/dist/path/cubic2d.mjs +10 -12
  32. package/dist/path/cubic2d.mjs.map +1 -0
  33. package/dist/path/linear2d.d.mts +68 -2
  34. package/dist/path/linear2d.d.ts +68 -2
  35. package/dist/path/linear2d.mjs +7 -9
  36. package/dist/path/linear2d.mjs.map +1 -0
  37. package/dist/path/quadratic2d.d.mts +67 -2
  38. package/dist/path/quadratic2d.d.ts +67 -2
  39. package/dist/path/quadratic2d.mjs +9 -13
  40. package/dist/path/quadratic2d.mjs.map +1 -0
  41. package/dist/pipe.mjs +1 -0
  42. package/dist/pipe.mjs.map +1 -0
  43. package/dist/polynomial/cubic.d.mts +1 -1
  44. package/dist/polynomial/cubic.d.ts +1 -1
  45. package/dist/polynomial/cubic.mjs +13 -28
  46. package/dist/polynomial/cubic.mjs.map +1 -0
  47. package/dist/polynomial/linear.d.mts +1 -1
  48. package/dist/polynomial/linear.d.ts +1 -1
  49. package/dist/polynomial/linear.mjs +2 -1
  50. package/dist/polynomial/linear.mjs.map +1 -0
  51. package/dist/polynomial/quadratic.d.mts +2 -2
  52. package/dist/polynomial/quadratic.d.ts +2 -2
  53. package/dist/polynomial/quadratic.mjs +5 -2
  54. package/dist/polynomial/quadratic.mjs.map +1 -0
  55. package/dist/shared/{curvy.Cps2R_RU.mjs → curvy.BkkW8Tx9.mjs} +11 -29
  56. package/dist/shared/curvy.BkkW8Tx9.mjs.map +1 -0
  57. package/dist/shared/{curvy.BzVmUIKm.mjs → curvy.BxdGW9he.mjs} +17 -32
  58. package/dist/shared/curvy.BxdGW9he.mjs.map +1 -0
  59. package/dist/shared/{curvy.C2XGH0R0.mjs → curvy.C_sCeg9J.mjs} +15 -24
  60. package/dist/shared/curvy.C_sCeg9J.mjs.map +1 -0
  61. package/dist/shared/curvy.Cg8lZVUz.d.ts +688 -0
  62. package/dist/shared/{curvy.CE4X6_Is.mjs → curvy.DCt1gGII.mjs} +11 -45
  63. package/dist/shared/curvy.DCt1gGII.mjs.map +1 -0
  64. package/dist/shared/{curvy.BZ_mTkJe.mjs → curvy.DJ4xO0al.mjs} +9 -6
  65. package/dist/shared/curvy.DJ4xO0al.mjs.map +1 -0
  66. package/dist/shared/curvy.DmVFTi0N.mjs +1 -0
  67. package/dist/shared/curvy.DmVFTi0N.mjs.map +1 -0
  68. package/dist/shared/curvy.FDaj5rlj.d.mts +688 -0
  69. package/dist/shared/{curvy.NLeFCr-9.mjs → curvy.lktriTpx.mjs} +19 -42
  70. package/dist/shared/curvy.lktriTpx.mjs.map +1 -0
  71. package/dist/shared/{curvy.Ck0of1PI.mjs → curvy.mLFprrGm.mjs} +26 -22
  72. package/dist/shared/curvy.mLFprrGm.mjs.map +1 -0
  73. package/dist/shared/{curvy.BDhiZ7He.mjs → curvy.r6f1j287.mjs} +8 -12
  74. package/dist/shared/curvy.r6f1j287.mjs.map +1 -0
  75. package/dist/splines/basis2d.d.mts +94 -2
  76. package/dist/splines/basis2d.d.ts +94 -2
  77. package/dist/splines/basis2d.mjs +13 -12
  78. package/dist/splines/basis2d.mjs.map +1 -0
  79. package/dist/splines/bezier2d.d.mts +136 -2
  80. package/dist/splines/bezier2d.d.ts +136 -2
  81. package/dist/splines/bezier2d.mjs +10 -9
  82. package/dist/splines/bezier2d.mjs.map +1 -0
  83. package/dist/splines/cardinal2d.d.mts +131 -2
  84. package/dist/splines/cardinal2d.d.ts +131 -2
  85. package/dist/splines/cardinal2d.mjs +15 -24
  86. package/dist/splines/cardinal2d.mjs.map +1 -0
  87. package/dist/splines/hermite2d.d.mts +94 -3
  88. package/dist/splines/hermite2d.d.ts +94 -3
  89. package/dist/splines/hermite2d.mjs +22 -36
  90. package/dist/splines/hermite2d.mjs.map +1 -0
  91. package/dist/utils.d.mts +179 -1
  92. package/dist/utils.d.ts +179 -1
  93. package/dist/utils.mjs +16 -7
  94. package/dist/utils.mjs.map +1 -0
  95. package/dist/vector/vector2.d.mts +259 -1
  96. package/dist/vector/vector2.d.ts +259 -1
  97. package/dist/vector/vector2.mjs +4 -2
  98. package/dist/vector/vector2.mjs.map +1 -0
  99. package/dist/vector/vector3.d.mts +345 -1
  100. package/dist/vector/vector3.d.ts +345 -1
  101. package/dist/vector/vector3.mjs +9 -2
  102. package/dist/vector/vector3.mjs.map +1 -0
  103. package/dist/vector/vector4.d.mts +163 -1
  104. package/dist/vector/vector4.d.ts +163 -1
  105. package/dist/vector/vector4.mjs +4 -2
  106. package/dist/vector/vector4.mjs.map +1 -0
  107. package/package.json +4 -4
  108. package/dist/shared/curvy.BsHoYJNv.d.ts +0 -155
  109. package/dist/shared/curvy.NsmY7zcr.d.mts +0 -155
@@ -3,7 +3,7 @@ import { Pipeable } from '../pipe.js';
3
3
  import { Vector2 } from '../vector/vector2.js';
4
4
  import '../shared/curvy.Bf5TIk31.js';
5
5
  import '../interval.js';
6
- import '../shared/curvy.BsHoYJNv.js';
6
+ import '../shared/curvy.Cg8lZVUz.js';
7
7
  import '../vector/vector3.js';
8
8
  import '../vector/vector4.js';
9
9
  import '../curve/linear2d.js';
@@ -11,20 +11,85 @@ import '../curve/linear2d.js';
11
11
  declare const QuadraticPath2dTypeId: unique symbol;
12
12
  type QuadraticPath2dTypeId = typeof QuadraticPath2dTypeId;
13
13
 
14
+ /**
15
+ * A quadratic path in 2D space.
16
+ *
17
+ * All fields are readonly and immutable, and all operations create new instances.
18
+ *
19
+ * @since 1.0.0
20
+ */
14
21
  interface QuadraticPath2d extends Pipeable, Iterable<QuadraticCurve2d> {
15
22
  readonly [QuadraticPath2dTypeId]: QuadraticPath2dTypeId;
16
23
  }
24
+ /**
25
+ * Creates a new `QuadraticPath2d` instance from curve parameters.
26
+ *
27
+ * @param curves - The curves to create the path from.
28
+ * @returns A new `QuadraticPath2d` instance.
29
+ * @since 1.0.0
30
+ */
17
31
  declare const fromCurves: (...curves: ReadonlyArray<QuadraticCurve2d>) => QuadraticPath2d;
32
+ /**
33
+ * Creates a new `QuadraticPath2d` instance from an array of curves.
34
+ *
35
+ * @param curves - The curves to create the path from.
36
+ * @returns A new `QuadraticPath2d` instance.
37
+ * @since 1.0.0
38
+ */
18
39
  declare const fromCurveArray: (curves: ReadonlyArray<QuadraticCurve2d>) => QuadraticPath2d;
40
+ /**
41
+ * Checks if a value is a `QuadraticPath2d`.
42
+ *
43
+ * @param p - The value to check.
44
+ * @returns `true` if the value is a `QuadraticPath2d`, `false` otherwise.
45
+ * @since 1.0.0
46
+ */
19
47
  declare const isQuadraticPath2d: (p: unknown) => p is QuadraticPath2d;
20
48
  declare const append: {
49
+ /**
50
+ * Appends a quadratic curve to a quadratic path.
51
+ *
52
+ * @param c - The quadratic curve to append.
53
+ * @returns A function that takes a quadratic path and returns a new quadratic path.
54
+ * @since 1.0.0
55
+ */
21
56
  (c: QuadraticCurve2d): (p: QuadraticPath2d) => QuadraticPath2d;
57
+ /**
58
+ * Appends a quadratic curve to a quadratic path.
59
+ *
60
+ * @param p - The quadratic path to append to.
61
+ * @param c - The quadratic curve to append.
62
+ * @returns A new `QuadraticPath2d` instance with the appended curve.
63
+ * @since 1.0.0
64
+ */
22
65
  (p: QuadraticPath2d, c: QuadraticCurve2d): QuadraticPath2d;
23
66
  };
67
+ /**
68
+ * Calculates the length of a quadratic path.
69
+ *
70
+ * @param p - The quadratic path to calculate the length of.
71
+ * @returns The length of the path.
72
+ */
24
73
  declare const length: (p: QuadraticPath2d) => number;
25
74
  declare const solve: {
75
+ /**
76
+ * Solves a quadratic path at a given parameter.
77
+ *
78
+ * @param u - The parameter to solve for.
79
+ * @returns A function that takes a quadratic path and returns the solved point.
80
+ * @since 1.0.0
81
+ */
26
82
  (u: number): (p: QuadraticPath2d) => Vector2;
83
+ /**
84
+ * Solves a quadratic path at a given parameter.
85
+ *
86
+ * @param p - The quadratic path to solve.
87
+ * @param u - The parameter to solve for.
88
+ * @returns The solved point.
89
+ * @since 1.0.0
90
+ */
27
91
  (p: QuadraticPath2d, u: number): Vector2;
28
92
  };
29
93
 
30
- export { type QuadraticPath2d, append, fromCurveArray, fromCurves, isQuadraticPath2d, length, solve };
94
+ export { append, fromCurveArray, fromCurves, isQuadraticPath2d, length, solve };
95
+ export type { QuadraticPath2d };
@@ -4,34 +4,29 @@ import { dual, Pipeable } from '../pipe.mjs';
4
4
  import { round } from '../utils.mjs';
5
5
  import '../shared/curvy.DmVFTi0N.mjs';
6
6
  import '../polynomial/linear.mjs';
7
- import '../shared/curvy.BDhiZ7He.mjs';
7
+ import '../shared/curvy.r6f1j287.mjs';
8
8
  import '../polynomial/quadratic.mjs';
9
- import '../shared/curvy.BzVmUIKm.mjs';
9
+ import '../shared/curvy.BxdGW9he.mjs';
10
10
  import '../vector/vector2.mjs';
11
- import '../shared/curvy.BZ_mTkJe.mjs';
11
+ import '../shared/curvy.DJ4xO0al.mjs';
12
12
  import '../curve/linear2d.mjs';
13
13
 
14
- const QuadraticPath2dTypeId = Symbol(
15
- "curvy/path/quadratic2d"
16
- );
14
+ var _a;
15
+ const QuadraticPath2dTypeId = Symbol("curvy/path/quadratic2d");
17
16
  class QuadraticPath2dImpl extends Pipeable {
18
- [QuadraticPath2dTypeId] = QuadraticPath2dTypeId;
19
- curves;
20
17
  constructor(curves) {
21
18
  super();
19
+ this[_a] = QuadraticPath2dTypeId;
22
20
  this.curves = curves;
23
21
  }
24
- [Symbol.iterator]() {
22
+ [(_a = QuadraticPath2dTypeId, Symbol.iterator)]() {
25
23
  return this.curves[Symbol.iterator]();
26
24
  }
27
25
  }
28
26
  const isQuadraticPath2d$1 = (p) => typeof p === "object" && p !== null && QuadraticPath2dTypeId in p;
29
27
  const fromCurves$1 = (...curves) => new QuadraticPath2dImpl(curves);
30
28
  const fromCurveArray$1 = (curves) => new QuadraticPath2dImpl(curves);
31
- const append$1 = dual(
32
- 2,
33
- (p, c) => fromCurveArray$1([...p, c])
34
- );
29
+ const append$1 = dual(2, (p, c) => fromCurveArray$1([...p, c]));
35
30
  const length$1 = (p) => {
36
31
  let length2 = 0;
37
32
  for (const curve of p) {
@@ -59,3 +54,4 @@ const length = length$1;
59
54
  const solve = solve$1;
60
55
 
61
56
  export { append, fromCurveArray, fromCurves, isQuadraticPath2d, length, solve };
57
+ //# sourceMappingURL=quadratic2d.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadratic2d.mjs","sources":["../../src/path/quadratic2d.internal.ts","../../src/path/quadratic2d.ts"],"sourcesContent":["import * as QuadraticCurve2d from '../curve/quadratic2d'\nimport * as Interval from '../interval'\nimport { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { round } from '../utils'\nimport type { Vector2 } from '../vector/vector2'\nimport type { QuadraticPath2d } from './quadratic2d'\n\nexport const QuadraticPath2dTypeId: unique symbol = Symbol('curvy/path/quadratic2d')\nexport type QuadraticPath2dTypeId = typeof QuadraticPath2dTypeId\n\nexport class QuadraticPath2dImpl extends Pipeable implements QuadraticPath2d {\n readonly [QuadraticPath2dTypeId]: QuadraticPath2dTypeId = QuadraticPath2dTypeId\n\n readonly curves: ReadonlyArray<QuadraticCurve2d.QuadraticCurve2d>\n\n constructor(curves: ReadonlyArray<QuadraticCurve2d.QuadraticCurve2d>) {\n super()\n this.curves = curves\n }\n\n [Symbol.iterator](): Iterator<QuadraticCurve2d.QuadraticCurve2d> {\n return this.curves[Symbol.iterator]()\n }\n}\n\nexport const isQuadraticPath2d = (p: unknown): p is QuadraticPath2d =>\n typeof p === 'object' && p !== null && QuadraticPath2dTypeId in p\n\nexport const fromCurves = (\n ...curves: ReadonlyArray<QuadraticCurve2d.QuadraticCurve2d>\n): QuadraticPath2d => new QuadraticPath2dImpl(curves)\n\nexport const fromCurveArray = (\n curves: ReadonlyArray<QuadraticCurve2d.QuadraticCurve2d>,\n): QuadraticPath2d => new QuadraticPath2dImpl(curves)\n\nexport const append = dual<\n (c: QuadraticCurve2d.QuadraticCurve2d) => (p: QuadraticPath2d) => QuadraticPath2d,\n (p: QuadraticPath2d, c: QuadraticCurve2d.QuadraticCurve2d) => QuadraticPath2d\n>(2, (p: QuadraticPath2d, c: QuadraticCurve2d.QuadraticCurve2d) => fromCurveArray([...p, c]))\n\nexport const length = (p: QuadraticPath2d) => {\n let length = 0\n for (const curve of p) {\n length += QuadraticCurve2d.length(curve, Interval.unit)\n }\n\n return round(length)\n}\n\nexport const solve = dual<\n (u: number) => (p: QuadraticPath2d) => Vector2,\n (p: QuadraticPath2d, u: number) => Vector2\n>(2, (p: QuadraticPath2d, u: number) => {\n const curves = p instanceof QuadraticPath2dImpl ? p.curves : [...p]\n\n if (u === 1) {\n const last = curves.at(-1) as QuadraticCurve2d.QuadraticCurve2d\n return QuadraticCurve2d.solve(last, 1)\n }\n\n const t = u * curves.length\n const i = Math.floor(t)\n const curve = curves[i] as QuadraticCurve2d.QuadraticCurve2d\n return QuadraticCurve2d.solve(curve, t - i)\n})\n","import type { QuadraticCurve2d } from '../curve/quadratic2d'\nimport type { Pipeable } from '../pipe'\nimport type { Vector2 } from '../vector/vector2'\nimport type { QuadraticPath2dTypeId } from './quadratic2d.internal'\nimport * as internal from './quadratic2d.internal'\n\n/**\n * A quadratic path in 2D space.\n *\n * All fields are readonly and immutable, and all operations create new instances.\n *\n * @since 1.0.0\n */\nexport interface QuadraticPath2d extends Pipeable, Iterable<QuadraticCurve2d> {\n readonly [QuadraticPath2dTypeId]: QuadraticPath2dTypeId\n}\n\n/**\n * Creates a new `QuadraticPath2d` instance from curve parameters.\n *\n * @param curves - The curves to create the path from.\n * @returns A new `QuadraticPath2d` instance.\n * @since 1.0.0\n */\nexport const fromCurves: (...curves: ReadonlyArray<QuadraticCurve2d>) => QuadraticPath2d =\n internal.fromCurves\n\n/**\n * Creates a new `QuadraticPath2d` instance from an array of curves.\n *\n * @param curves - The curves to create the path from.\n * @returns A new `QuadraticPath2d` instance.\n * @since 1.0.0\n */\nexport const fromCurveArray: (curves: ReadonlyArray<QuadraticCurve2d>) => QuadraticPath2d =\n internal.fromCurveArray\n\n/**\n * Checks if a value is a `QuadraticPath2d`.\n *\n * @param p - The value to check.\n * @returns `true` if the value is a `QuadraticPath2d`, `false` otherwise.\n * @since 1.0.0\n */\nexport const isQuadraticPath2d: (p: unknown) => p is QuadraticPath2d = internal.isQuadraticPath2d\n\nexport const append: {\n /**\n * Appends a quadratic curve to a quadratic path.\n *\n * @param c - The quadratic curve to append.\n * @returns A function that takes a quadratic path and returns a new quadratic path.\n * @since 1.0.0\n */\n (c: QuadraticCurve2d): (p: QuadraticPath2d) => QuadraticPath2d\n /**\n * Appends a quadratic curve to a quadratic path.\n *\n * @param p - The quadratic path to append to.\n * @param c - The quadratic curve to append.\n * @returns A new `QuadraticPath2d` instance with the appended curve.\n * @since 1.0.0\n */\n (p: QuadraticPath2d, c: QuadraticCurve2d): QuadraticPath2d\n} = internal.append\n\n/**\n * Calculates the length of a quadratic path.\n *\n * @param p - The quadratic path to calculate the length of.\n * @returns The length of the path.\n */\nexport const length: (p: QuadraticPath2d) => number = internal.length\n\nexport const solve: {\n /**\n * Solves a quadratic path at a given parameter.\n *\n * @param u - The parameter to solve for.\n * @returns A function that takes a quadratic path and returns the solved point.\n * @since 1.0.0\n */\n (u: number): (p: QuadraticPath2d) => Vector2\n /**\n * Solves a quadratic path at a given parameter.\n *\n * @param p - The quadratic path to solve.\n * @param u - The parameter to solve for.\n * @returns The solved point.\n * @since 1.0.0\n */\n (p: QuadraticPath2d, u: number): Vector2\n} = internal.solve\n"],"names":["isQuadraticPath2d","fromCurves","fromCurveArray","append","length","QuadraticCurve2d.length","Interval.unit","solve","QuadraticCurve2d.solve","internal.fromCurves","internal.fromCurveArray","internal.isQuadraticPath2d","internal.append","internal.length","internal.solve"],"mappings":";;;;;;;;;;;;;AAAA,IAAA,EAAA;AAQa,MAAA,qBAAA,GAAuC,OAAO,wBAAwB,CAAA;AAG5E,MAAM,4BAA4B,QAAoC,CAAA;AAAA,EAK3E,YAAY,MAA0D,EAAA;AACpE,IAAM,KAAA,EAAA;AALR,IAAA,IAAA,CAAU,EAAgD,CAAA,GAAA,qBAAA;AAMxD,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AAChB,EAEA,EATU,EAAA,GAAA,qBAAA,EAST,MAAO,CAAA,QAAA,EAAyD,GAAA;AAC/D,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,QAAQ,CAAE,EAAA;AAAA;AAExC;AAEa,MAAAA,mBAAA,GAAoB,CAAC,CAChC,KAAA,OAAO,MAAM,QAAY,IAAA,CAAA,KAAM,QAAQ,qBAAyB,IAAA,CAAA;AAE3D,MAAMC,YAAa,GAAA,CAAA,GACrB,MACiB,KAAA,IAAI,oBAAoB,MAAM,CAAA;AAE7C,MAAMC,gBAAiB,GAAA,CAC5B,MACoB,KAAA,IAAI,oBAAoB,MAAM,CAAA;AAE7C,MAAMC,QAAS,GAAA,IAAA,CAGpB,CAAG,EAAA,CAAC,CAAoB,EAAA,CAAA,KAAyCD,gBAAe,CAAA,CAAC,GAAG,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAE/E,MAAAE,QAAA,GAAS,CAAC,CAAuB,KAAA;AAC5C,EAAA,IAAIA,OAAS,GAAA,CAAA;AACb,EAAA,KAAA,MAAW,SAAS,CAAG,EAAA;AACrB,IAAAA,OAAU,IAAAC,QAAwB,CAAA,KAAA,EAAOC,IAAa,CAAA;AAAA;AAGxD,EAAA,OAAO,MAAMF,OAAM,CAAA;AACrB,CAAA;AAEO,MAAMG,OAAQ,GAAA,IAAA,CAGnB,CAAG,EAAA,CAAC,GAAoB,CAAc,KAAA;AACtC,EAAA,MAAM,SAAS,CAAa,YAAA,mBAAA,GAAsB,EAAE,MAAS,GAAA,CAAC,GAAG,CAAC,CAAA;AAElE,EAAA,IAAI,MAAM,CAAG,EAAA;AACX,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,EAAA,CAAG,EAAE,CAAA;AACzB,IAAO,OAAAC,OAAuB,CAAA,IAAA,EAAM,CAAC,CAAA;AAAA;AAGvC,EAAM,MAAA,CAAA,GAAI,IAAI,MAAO,CAAA,MAAA;AACrB,EAAM,MAAA,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA;AACtB,EAAM,MAAA,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,EAAA,OAAOA,OAAiB,CAAM,KAAO,EAAA,CAAA,GAAI,CAAC,CAAA;AAC5C,CAAC,CAAA;;AC1CM,MAAM,aACXC;AASK,MAAM,iBACXC;AASK,MAAM,oBAA0DC;AAEhE,MAAM,SAkBTC;AAQG,MAAM,SAAyCC;AAE/C,MAAM,QAkBTC;;;;"}
package/dist/pipe.mjs CHANGED
@@ -89,3 +89,4 @@ class Pipeable {
89
89
  }
90
90
 
91
91
  export { Pipeable, dual, pipe };
92
+ //# sourceMappingURL=pipe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipe.mjs","sources":["../src/pipe.ts"],"sourcesContent":["/**\n * pipe() and dual() are slightly modified versions of Effect-TS's pipe() and dual() functions.\n * https://github.com/effect-ts/core/blob/main/src/function.ts\n *\n * The original versions are licensed under the MIT license.\n * This version is licensed under the MIT license.\n */\n\n// biome-ignore lint/suspicious/noExplicitAny: any is used to allow any argument to be passed in\ntype AnyFunction = (...args: Array<any>) => any\n\nexport const dual: {\n <DataLast extends AnyFunction, DataFirst extends AnyFunction>(\n arity: Parameters<DataFirst>['length'],\n body: DataFirst,\n ): DataLast & DataFirst\n <DataLast extends AnyFunction, DataFirst extends AnyFunction>(\n isDataFirst: (args: IArguments) => boolean,\n body: DataFirst,\n ): DataLast & DataFirst\n} = (arity, body) => {\n if (typeof arity === 'function') {\n return function (...args: Array<unknown>) {\n if (arity(args as unknown as IArguments)) {\n // @ts-expect-error\n return body.apply(this, args)\n }\n // biome-ignore lint/suspicious/noExplicitAny: any is used to allow any argument to be passed in\n return ((self: any) => body(self, ...args)) as any\n }\n }\n\n switch (arity) {\n case 0:\n case 1:\n throw new RangeError(`Invalid arity ${arity}`)\n\n case 2:\n return (...args: Array<unknown>) => {\n const [a, b] = args\n if (args.length >= 2) {\n return body(a, b)\n }\n return (self: unknown) => body(self, a)\n }\n\n case 3:\n return (...args: Array<unknown>) => {\n const [a, b, c] = args\n if (args.length >= 3) {\n return body(a, b, c)\n }\n return (self: unknown) => body(self, a, b)\n }\n\n case 4:\n return (...args: Array<unknown>) => {\n const [a, b, c, d] = args\n if (args.length >= 4) {\n return body(a, b, c, d)\n }\n\n return (self: unknown) => body(self, a, b, c)\n }\n\n case 5:\n return (...args: Array<unknown>) => {\n const [a, b, c, d, e] = args\n if (args.length >= 5) {\n return body(a, b, c, d, e)\n }\n\n return (self: unknown) => body(self, a, b, c, d)\n }\n\n default:\n return function (...args: Array<unknown>) {\n if (args.length >= arity) {\n // @ts-expect-error\n return body.apply(this, args)\n }\n return (self: unknown) => body(self, ...args)\n }\n }\n}\n\nexport function pipe<A>(a: A): A\nexport function pipe<A, B = never>(a: A, ab: (a: A) => B): B\nexport function pipe<A, B = never, C = never>(a: A, ab: (a: A) => B, bc: (b: B) => C): C\nexport function pipe<A, B = never, C = never, D = never>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n): D\nexport function pipe<A, B = never, C = never, D = never, E = never>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n): E\nexport function pipe<A, B = never, C = never, D = never, E = never, F = never>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n): F\nexport function pipe<A, B = never, C = never, D = never, E = never, F = never, G = never>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n): G\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n): H\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n): I\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n): J\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n): K\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n): L\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n): M\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n): N\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n): O\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n op: (o: O) => P,\n): P\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n op: (o: O) => P,\n pq: (p: P) => Q,\n): Q\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n op: (o: O) => P,\n pq: (p: P) => Q,\n qr: (q: Q) => R,\n): R\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n op: (o: O) => P,\n pq: (p: P) => Q,\n qr: (q: Q) => R,\n rs: (r: R) => S,\n): S\nexport function pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n T = never,\n>(\n a: A,\n ab: (a: A) => B,\n bc: (b: B) => C,\n cd: (c: C) => D,\n de: (d: D) => E,\n ef: (e: E) => F,\n fg: (f: F) => G,\n gh: (g: G) => H,\n hi: (h: H) => I,\n ij: (i: I) => J,\n jk: (j: J) => K,\n kl: (k: K) => L,\n lm: (l: L) => M,\n mn: (m: M) => N,\n no: (n: N) => O,\n op: (o: O) => P,\n pq: (p: P) => Q,\n qr: (q: Q) => R,\n rs: (r: R) => S,\n st: (s: S) => T,\n): T\nexport function pipe(...args: [unknown, ...Array<AnyFunction>]): unknown {\n const [a, ab, bc, cd, de, ef, fg, gh, hi] = args as [\n unknown,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n AnyFunction,\n ]\n\n switch (args.length) {\n case 1:\n return a\n case 2:\n return ab(a)\n case 3:\n return bc(ab(a))\n case 4:\n return cd(bc(ab(a)))\n case 5:\n return de(cd(bc(ab(a))))\n case 6:\n return ef(de(cd(bc(ab(a)))))\n case 7:\n return fg(ef(de(cd(bc(ab(a))))))\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))))\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))))\n default: {\n let ret = args[0]\n for (let i = 1; i < args.length; i++) {\n ret = (args[i] as AnyFunction)(ret)\n }\n return ret\n }\n }\n}\n\nexport class Pipeable {\n pipe<A>(this: A): A\n pipe<A, B = never>(this: A, ab: (_: A) => B): B\n pipe<A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C\n pipe<A, B = never, C = never, D = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n ): D\n pipe<A, B = never, C = never, D = never, E = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ): E\n pipe<A, B = never, C = never, D = never, E = never, F = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n ): F\n pipe<A, B = never, C = never, D = never, E = never, F = never, G = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n ): G\n pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n ): H\n pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ): I\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n ): J\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n ): K\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n ): L\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n ): M\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n ): N\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n ): O\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n ): P\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n ): Q\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n qr: (_: Q) => R,\n ): R\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n qr: (_: Q) => R,\n rs: (_: R) => S,\n ): S\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n T = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n qr: (_: Q) => R,\n rs: (_: R) => S,\n st: (_: S) => T,\n ): T\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n T = never,\n U = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n qr: (_: Q) => R,\n rs: (_: R) => S,\n st: (_: S) => T,\n tu: (_: T) => U,\n ): U\n pipe<\n A,\n B = never,\n C = never,\n D = never,\n E = never,\n F = never,\n G = never,\n H = never,\n I = never,\n J = never,\n K = never,\n L = never,\n M = never,\n N = never,\n O = never,\n P = never,\n Q = never,\n R = never,\n S = never,\n T = never,\n U = never,\n >(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J,\n jk: (_: J) => K,\n kl: (_: K) => L,\n lm: (_: L) => M,\n mn: (_: M) => N,\n no: (_: N) => O,\n op: (_: O) => P,\n pq: (_: P) => Q,\n qr: (_: Q) => R,\n rs: (_: R) => S,\n st: (_: S) => T,\n tu: (_: T) => U,\n ): U\n pipe(...args: Array<AnyFunction>) {\n // the assertion is probably wrong but makes typescript let us spread the args into pipe()\n return pipe(this, ...(args as [AnyFunction]))\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import '../interval.mjs';
2
2
  import '../pipe.mjs';
3
3
  import '../vector/vector4.mjs';
4
- export { C as CubicPolynomial, j as curvature, d as derivative, g as domain, e as extrema, f as fromVector, i as isCubicPolynomial, l as length, m as make, c as monotonicity, h as range, r as roots, s as solve, a as solveInverse, b as toInverseSolver, t as toSolver } from '../shared/curvy.NsmY7zcr.mjs';
4
+ export { C as CubicPolynomial, j as curvature, d as derivative, g as domain, e as extrema, f as fromVector, i as isCubicPolynomial, l as length, m as make, c as monotonicity, h as range, r as roots, s as solve, a as solveInverse, b as toInverseSolver, t as toSolver } from '../shared/curvy.FDaj5rlj.mjs';
5
5
  import '../shared/curvy.Bf5TIk31.mjs';
6
6
  import '../vector/vector2.mjs';
7
7
  import '../vector/vector3.mjs';
@@ -1,7 +1,7 @@
1
1
  import '../interval.js';
2
2
  import '../pipe.js';
3
3
  import '../vector/vector4.js';
4
- export { C as CubicPolynomial, j as curvature, d as derivative, g as domain, e as extrema, f as fromVector, i as isCubicPolynomial, l as length, m as make, c as monotonicity, h as range, r as roots, s as solve, a as solveInverse, b as toInverseSolver, t as toSolver } from '../shared/curvy.BsHoYJNv.js';
4
+ export { C as CubicPolynomial, j as curvature, d as derivative, g as domain, e as extrema, f as fromVector, i as isCubicPolynomial, l as length, m as make, c as monotonicity, h as range, r as roots, s as solve, a as solveInverse, b as toInverseSolver, t as toSolver } from '../shared/curvy.Cg8lZVUz.js';
5
5
  import '../shared/curvy.Bf5TIk31.js';
6
6
  import '../vector/vector2.js';
7
7
  import '../vector/vector3.js';
@@ -2,23 +2,19 @@ import { size, filter, fromMinMax, scaleShift, biunit } from '../interval.mjs';
2
2
  import { G as GL32_W0, a as GL32_X0, b as GL32_W1, c as GL32_X1, d as GL32_W2, e as GL32_X2, f as GL32_W3, g as GL32_X3, h as GL32_W4, i as GL32_X4, j as GL32_W5, k as GL32_X5, l as GL32_W6, m as GL32_X6, n as GL32_W7, o as GL32_X7, p as GL32_W8, q as GL32_X8, r as GL32_W9, s as GL32_X9, t as GL32_W10, u as GL32_X10, v as GL32_W11, w as GL32_X11, x as GL32_W12, y as GL32_X12, z as GL32_W13, A as GL32_X13, B as GL32_W14, C as GL32_X14, D as GL32_W15, E as GL32_X15 } from '../shared/curvy.DmVFTi0N.mjs';
3
3
  import { dual } from '../pipe.mjs';
4
4
  import { round } from '../utils.mjs';
5
- import { C as CubicPolynomialImpl, a as CubicPolynomialTypeId, s as solveInverse$2, m as make$2, r as roots$2, b as monotonicity$3, g as guaranteedMonotonicityFromComparison, l as length$3, c as solve$2, d as derivative$2 } from '../shared/curvy.BzVmUIKm.mjs';
6
- import { m as monotonicity$2, a as make$3, l as length$2, s as solve$3 } from '../shared/curvy.BDhiZ7He.mjs';
5
+ import { C as CubicPolynomialImpl, m as make$2, r as roots$2, a as CubicPolynomialTypeId, s as solveInverse$2, b as monotonicity$3, g as guaranteedMonotonicityFromComparison, l as length$3, c as solve$2, d as derivative$2 } from '../shared/curvy.BxdGW9he.mjs';
6
+ import { m as monotonicity$2, a as make$3, l as length$2, s as solve$3 } from '../shared/curvy.r6f1j287.mjs';
7
+ import '../vector/vector2.mjs';
8
+ import '../shared/curvy.DJ4xO0al.mjs';
7
9
 
8
10
  const make$1 = (c0 = 0, c1 = 0, c2 = 0, c3 = 0) => new CubicPolynomialImpl(c0, c1, c2, c3);
9
11
  const isCubicPolynomial$1 = (v) => typeof v === "object" && v !== null && CubicPolynomialTypeId in v;
10
12
  const fromVector$1 = (v) => new CubicPolynomialImpl(v.x, v.y, v.z, v.w);
11
- const solve$1 = dual(
12
- 2,
13
- (p, x) => round(p.c0 + x * p.c1 + x ** 2 * p.c2 + x ** 3 * p.c3)
14
- );
13
+ const solve$1 = dual(2, (p, x) => round(p.c0 + x * p.c1 + x ** 2 * p.c2 + x ** 3 * p.c3));
15
14
  const toSolver$1 = (p) => (x) => solve$1(p, x);
16
15
  const solveInverse$1 = dual(2, (self, y) => {
17
16
  if (self.c3 === 0) {
18
- return solveInverse$2(
19
- make$2(self.c0, self.c1, self.c2),
20
- 0
21
- );
17
+ return solveInverse$2(make$2(self.c0, self.c1, self.c2), 0);
22
18
  }
23
19
  const shift = self.c2 / (3 * self.c3);
24
20
  const d0 = self.c2 ** 2 - 3 * self.c3 * self.c1;
@@ -42,18 +38,14 @@ const solveInverse$1 = dual(2, (self, y) => {
42
38
  } else if (d0 === 0) {
43
39
  roots2.add(round(-shift));
44
40
  } else {
45
- roots2.add(
46
- round((9 * self.c3 * (self.c0 - y) - self.c2 * self.c1) / (2 * d0))
47
- );
41
+ roots2.add(round((9 * self.c3 * (self.c0 - y) - self.c2 * self.c1) / (2 * d0)));
48
42
  roots2.add(
49
43
  round(
50
44
  (4 * self.c3 * self.c2 * self.c1 - 9 * self.c3 ** 2 * (self.c0 - y) - self.c2 ** 3) / (self.c3 * d0)
51
45
  )
52
46
  );
53
47
  }
54
- return Array.from(roots2).toSorted(
55
- (a, b) => a - b
56
- );
48
+ return Array.from(roots2).toSorted((a, b) => a - b);
57
49
  });
58
50
  const toInverseSolver$1 = (p) => (y) => solveInverse$1(p, y);
59
51
  const derivative$1 = (p) => make$2(p.c1, p.c2 * 2, p.c3 * 3);
@@ -84,18 +76,12 @@ const monotonicity$1 = dual(
84
76
  if (e.length > 0) {
85
77
  return "none";
86
78
  }
87
- return guaranteedMonotonicityFromComparison(
88
- solve$1(p, i.start),
89
- solve$1(p, i.end)
90
- );
79
+ return guaranteedMonotonicityFromComparison(solve$1(p, i.start), solve$1(p, i.end));
91
80
  }
92
81
  );
93
82
  const domain$1 = dual(
94
83
  2,
95
- (p, range2) => fromMinMax(
96
- ...solveInverse$1(p, range2.start),
97
- ...solveInverse$1(p, range2.end)
98
- )
84
+ (p, range2) => fromMinMax(...solveInverse$1(p, range2.start), ...solveInverse$1(p, range2.end))
99
85
  );
100
86
  const range$1 = dual(
101
87
  2,
@@ -118,15 +104,13 @@ const length$1 = dual(2, (p, domain2) => {
118
104
  const d = derivative$1(p);
119
105
  const { scale, shift } = scaleShift(biunit, domain2);
120
106
  return round(
121
- (GL32_W0 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X0) ** 2) + GL32_W0 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X0) ** 2) + GL32_W1 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X1) ** 2) + GL32_W1 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X1) ** 2) + GL32_W2 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X2) ** 2) + GL32_W2 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X2) ** 2) + GL32_W3 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X3) ** 2) + GL32_W3 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X3) ** 2) + GL32_W4 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X4) ** 2) + GL32_W4 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X4) ** 2) + GL32_W5 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X5) ** 2) + GL32_W5 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X5) ** 2) + GL32_W6 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X6) ** 2) + GL32_W6 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X6) ** 2) + GL32_W7 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X7) ** 2) + GL32_W7 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X7) ** 2) + GL32_W8 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X8) ** 2) + GL32_W8 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X8) ** 2) + GL32_W9 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X9) ** 2) + GL32_W9 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X9) ** 2) + GL32_W10 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X10) ** 2) + GL32_W10 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X10) ** 2) + GL32_W11 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X11) ** 2) + GL32_W11 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X11) ** 2) + GL32_W12 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X12) ** 2) + GL32_W12 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X12) ** 2) + GL32_W13 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X13) ** 2) + GL32_W13 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X13) ** 2) + GL32_W14 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X14) ** 2) + GL32_W14 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X14) ** 2) + GL32_W15 * Math.sqrt(1 + solve$2(d, shift + scale * -GL32_X15) ** 2) + GL32_W15 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X15) ** 2)) * scale
107
+ (GL32_W0 * Math.sqrt(1 + solve$2(d, shift + scale * -0.9972638618494816) ** 2) + GL32_W0 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X0) ** 2) + GL32_W1 * Math.sqrt(1 + solve$2(d, shift + scale * -0.9856115115452684) ** 2) + GL32_W1 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X1) ** 2) + GL32_W2 * Math.sqrt(1 + solve$2(d, shift + scale * -0.9647622555875064) ** 2) + GL32_W2 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X2) ** 2) + GL32_W3 * Math.sqrt(1 + solve$2(d, shift + scale * -0.9349060759377397) ** 2) + GL32_W3 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X3) ** 2) + GL32_W4 * Math.sqrt(1 + solve$2(d, shift + scale * -0.8963211557660521) ** 2) + GL32_W4 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X4) ** 2) + GL32_W5 * Math.sqrt(1 + solve$2(d, shift + scale * -0.84936761373257) ** 2) + GL32_W5 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X5) ** 2) + GL32_W6 * Math.sqrt(1 + solve$2(d, shift + scale * -0.7944837959679424) ** 2) + GL32_W6 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X6) ** 2) + GL32_W7 * Math.sqrt(1 + solve$2(d, shift + scale * -0.7321821187402897) ** 2) + GL32_W7 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X7) ** 2) + GL32_W8 * Math.sqrt(1 + solve$2(d, shift + scale * -0.6630442669302152) ** 2) + GL32_W8 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X8) ** 2) + GL32_W9 * Math.sqrt(1 + solve$2(d, shift + scale * -0.5877157572407623) ** 2) + GL32_W9 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X9) ** 2) + GL32_W10 * Math.sqrt(1 + solve$2(d, shift + scale * -0.5068999089322294) ** 2) + GL32_W10 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X10) ** 2) + GL32_W11 * Math.sqrt(1 + solve$2(d, shift + scale * -0.42135127613063533) ** 2) + GL32_W11 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X11) ** 2) + GL32_W12 * Math.sqrt(1 + solve$2(d, shift + scale * -0.33186860228212767) ** 2) + GL32_W12 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X12) ** 2) + GL32_W13 * Math.sqrt(1 + solve$2(d, shift + scale * -0.23928736225213706) ** 2) + GL32_W13 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X13) ** 2) + GL32_W14 * Math.sqrt(1 + solve$2(d, shift + scale * -0.1444719615827965) ** 2) + GL32_W14 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X14) ** 2) + GL32_W15 * Math.sqrt(1 + solve$2(d, shift + scale * -0.04830766568773831) ** 2) + GL32_W15 * Math.sqrt(1 + solve$2(d, shift + scale * GL32_X15) ** 2)) * scale
122
108
  );
123
109
  });
124
110
  const curvature$1 = dual(2, (p, x) => {
125
111
  const d = derivative$1(p);
126
112
  const dd = derivative$2(d);
127
- return round(
128
- Math.abs(solve$3(dd, x)) / (1 + solve$2(d, x) ** 2) ** 1.5
129
- );
113
+ return round(Math.abs(solve$3(dd, x)) / (1 + solve$2(d, x) ** 2) ** 1.5);
130
114
  });
131
115
 
132
116
  const isCubicPolynomial = isCubicPolynomial$1;
@@ -146,3 +130,4 @@ const length = length$1;
146
130
  const curvature = curvature$1;
147
131
 
148
132
  export { curvature, derivative, domain, extrema, fromVector, isCubicPolynomial, length, make, monotonicity, range, roots, solve, solveInverse, toInverseSolver, toSolver };
133
+ //# sourceMappingURL=cubic.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubic.mjs","sources":["../../src/polynomial/cubic.internal.ts","../../src/polynomial/cubic.ts"],"sourcesContent":["import * as Interval from '../interval'\nimport {\n GL32_W0,\n GL32_W1,\n GL32_W2,\n GL32_W3,\n GL32_W4,\n GL32_W5,\n GL32_W6,\n GL32_W7,\n GL32_W8,\n GL32_W9,\n GL32_W10,\n GL32_W11,\n GL32_W12,\n GL32_W13,\n GL32_W14,\n GL32_W15,\n GL32_X0,\n GL32_X1,\n GL32_X2,\n GL32_X3,\n GL32_X4,\n GL32_X5,\n GL32_X6,\n GL32_X7,\n GL32_X8,\n GL32_X9,\n GL32_X10,\n GL32_X11,\n GL32_X12,\n GL32_X13,\n GL32_X14,\n GL32_X15,\n} from '../length'\nimport { dual } from '../pipe'\nimport { round } from '../utils'\nimport type { Vector4 } from '../vector/vector4'\nimport type { CubicPolynomial } from './cubic'\nimport { CubicPolynomialImpl, CubicPolynomialTypeId } from './cubic.internal.circular'\nimport * as Linear from './linear.internal'\nimport { type Monotonicity, guaranteedMonotonicityFromComparison } from './monotonicity'\nimport * as Quadratic from './quadratic.internal'\nimport type { ZeroToThree, ZeroToTwo } from './types'\n\nexport const make = (c0 = 0, c1 = 0, c2 = 0, c3 = 0): CubicPolynomial =>\n new CubicPolynomialImpl(c0, c1, c2, c3)\n\nexport const isCubicPolynomial = (v: unknown): v is CubicPolynomial =>\n typeof v === 'object' && v !== null && CubicPolynomialTypeId in v\n\nexport const fromVector = (v: Vector4) => new CubicPolynomialImpl(v.x, v.y, v.z, v.w)\n\nexport const solve = dual<\n (x: number) => (p: CubicPolynomial) => number,\n (p: CubicPolynomial, x: number) => number\n>(2, (p: CubicPolynomial, x: number) => round(p.c0 + x * p.c1 + x ** 2 * p.c2 + x ** 3 * p.c3))\n\nexport const toSolver = (p: CubicPolynomial) => (x: number) => solve(p, x)\n\nexport const solveInverse = dual<\n (y: number) => (p: CubicPolynomial) => ZeroToThree,\n (p: CubicPolynomial, y: number) => ZeroToThree\n>(2, (self: CubicPolynomial, y: number) => {\n if (self.c3 === 0) {\n return Quadratic.solveInverse(Quadratic.make(self.c0, self.c1, self.c2), 0) as ZeroToThree\n }\n\n const shift = self.c2 / (3 * self.c3)\n\n const d0 = self.c2 ** 2 - 3 * self.c3 * self.c1\n const d1 = 2 * self.c2 ** 3 - 9 * self.c3 * self.c2 * self.c1 + 27 * self.c3 ** 2 * (self.c0 - y)\n\n const p = -d0 / (3 * self.c3 ** 2)\n const q = d1 / (27 * self.c3 ** 3)\n\n const discriminant = round(-(4 * p ** 3 + 27 * q ** 2), 12)\n\n const roots = new Set<number>()\n\n if (discriminant > 0) {\n const r = 2 * Math.sqrt(-p / 3)\n const theta = Math.acos(((3 * q) / (2 * p)) * Math.sqrt(-3 / p)) / 3\n const offset = (2 * Math.PI) / 3\n\n roots.add(round(r * Math.cos(theta + offset) - shift))\n roots.add(round(r * Math.cos(theta) - shift))\n roots.add(round(r * Math.cos(theta - offset) - shift))\n } else if (discriminant < 0) {\n const u = Math.sqrt(q ** 2 / 4 + p ** 3 / 27)\n\n const u1 = Math.cbrt(-q / 2 + u)\n const u2 = Math.cbrt(-q / 2 - u)\n\n roots.add(round(u1 + u2 - shift))\n } else if (d0 === 0) {\n roots.add(round(-shift))\n } else {\n roots.add(round((9 * self.c3 * (self.c0 - y) - self.c2 * self.c1) / (2 * d0)))\n roots.add(\n round(\n (4 * self.c3 * self.c2 * self.c1 - 9 * self.c3 ** 2 * (self.c0 - y) - self.c2 ** 3) /\n (self.c3 * d0),\n ),\n )\n }\n\n return Array.from(roots).toSorted((a, b) => a - b) as unknown as ZeroToThree\n})\n\nexport const toInverseSolver = (p: CubicPolynomial) => (y: number) => solveInverse(p, y)\n\nexport const derivative = (p: CubicPolynomial) => Quadratic.make(p.c1, p.c2 * 2, p.c3 * 3)\n\nexport const roots = (p: CubicPolynomial): ZeroToThree => solveInverse(p, 0)\n\nexport const extrema = (p: CubicPolynomial): ZeroToTwo => Quadratic.roots(derivative(p))\n\nexport const monotonicity = dual<\n (i: Interval.Interval) => (p: CubicPolynomial) => Monotonicity,\n (p: CubicPolynomial, i?: Interval.Interval) => Monotonicity\n>(\n (args) => isCubicPolynomial(args[0]),\n (p: CubicPolynomial, i?: Interval.Interval) => {\n // shortcut to check for a horizontal line\n if (p.c3 === 0 && p.c2 === 0 && p.c1 === 0) {\n return 'constant'\n }\n\n // shortcut to check for a non-horizontal line\n if (p.c3 === 0 && p.c2 === 0) {\n return Linear.monotonicity(Linear.make(p.c0, p.c1))\n }\n\n // without an interval, the monotonicity will be none if c3 or c2 are nonzero\n if (i === undefined) {\n return 'none'\n }\n\n // if the interval is a single point, the monotonicity is constant\n if (Interval.size(i) === 0) {\n return 'constant'\n }\n\n if (p.c3 === 0) {\n return Quadratic.monotonicity(Quadratic.make(p.c0, p.c1, p.c2), i)\n }\n\n const e = Interval.filter(i, extrema(p), {\n includeStart: false,\n includeEnd: false,\n })\n\n if (e.length > 0) {\n return 'none'\n }\n\n return guaranteedMonotonicityFromComparison(solve(p, i.start), solve(p, i.end))\n },\n)\n\nexport const domain = dual<\n (range: Interval.Interval) => (p: CubicPolynomial) => Interval.Interval,\n (p: CubicPolynomial, range: Interval.Interval) => Interval.Interval\n>(2, (p: CubicPolynomial, range: Interval.Interval) =>\n Interval.fromMinMax(...solveInverse(p, range.start), ...solveInverse(p, range.end)),\n)\n\nexport const range = dual<\n (domain: Interval.Interval) => (p: CubicPolynomial) => Interval.Interval,\n (p: CubicPolynomial, domain: Interval.Interval) => Interval.Interval\n>(2, (p: CubicPolynomial, domain: Interval.Interval) =>\n Interval.fromMinMax(\n solve(p, domain.start),\n solve(p, domain.end),\n ...Interval.filter(domain, extrema(p)).map((e) => solve(p, e)),\n ),\n)\n\nexport const length = dual<\n (domain: Interval.Interval) => (p: CubicPolynomial) => number,\n (p: CubicPolynomial, domain: Interval.Interval) => number\n>(2, (p: CubicPolynomial, domain: Interval.Interval) => {\n if (Interval.size(domain) === 0) {\n return 0\n }\n\n if (p.c3 === 0) {\n if (p.c2 === 0) {\n return Linear.length(Linear.make(p.c0, p.c1), domain)\n }\n\n return Quadratic.length(Quadratic.make(p.c0, p.c1, p.c2), domain)\n }\n\n const d = derivative(p)\n\n const { scale, shift } = Interval.scaleShift(Interval.biunit, domain)\n\n return round(\n (GL32_W0 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X0) ** 2) +\n GL32_W0 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X0) ** 2) +\n GL32_W1 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X1) ** 2) +\n GL32_W1 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X1) ** 2) +\n GL32_W2 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X2) ** 2) +\n GL32_W2 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X2) ** 2) +\n GL32_W3 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X3) ** 2) +\n GL32_W3 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X3) ** 2) +\n GL32_W4 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X4) ** 2) +\n GL32_W4 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X4) ** 2) +\n GL32_W5 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X5) ** 2) +\n GL32_W5 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X5) ** 2) +\n GL32_W6 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X6) ** 2) +\n GL32_W6 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X6) ** 2) +\n GL32_W7 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X7) ** 2) +\n GL32_W7 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X7) ** 2) +\n GL32_W8 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X8) ** 2) +\n GL32_W8 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X8) ** 2) +\n GL32_W9 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X9) ** 2) +\n GL32_W9 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X9) ** 2) +\n GL32_W10 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X10) ** 2) +\n GL32_W10 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X10) ** 2) +\n GL32_W11 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X11) ** 2) +\n GL32_W11 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X11) ** 2) +\n GL32_W12 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X12) ** 2) +\n GL32_W12 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X12) ** 2) +\n GL32_W13 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X13) ** 2) +\n GL32_W13 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X13) ** 2) +\n GL32_W14 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X14) ** 2) +\n GL32_W14 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X14) ** 2) +\n GL32_W15 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * -GL32_X15) ** 2) +\n GL32_W15 * Math.sqrt(1 + Quadratic.solve(d, shift + scale * GL32_X15) ** 2)) *\n scale,\n )\n})\n\nexport const curvature = dual(2, (p: CubicPolynomial, x: number) => {\n const d = derivative(p)\n const dd = Quadratic.derivative(d)\n\n return round(Math.abs(Linear.solve(dd, x)) / (1 + Quadratic.solve(d, x) ** 2) ** 1.5)\n})\n","import type { Interval } from '../interval'\nimport type { Pipeable } from '../pipe'\nimport type { Vector4 } from '../vector/vector4'\nimport * as internal from './cubic.internal'\nimport type { CubicPolynomialTypeId } from './cubic.internal.circular'\nimport type { Monotonicity } from './monotonicity'\nimport type { QuadraticPolynomial } from './quadratic'\nimport type { ZeroToThree, ZeroToTwo } from './types'\n\n/**\n * A cubic polynomial.\n *\n * All fields are readonly and immutable, and all operations create new instances.\n *\n * @since 1.0.0\n */\nexport interface CubicPolynomial extends Pipeable {\n readonly [CubicPolynomialTypeId]: CubicPolynomialTypeId\n\n /**\n * The coefficient of the x^0 term.\n */\n readonly c0: number\n /**\n * The coefficient of the x^1 term.\n */\n readonly c1: number\n /**\n * The coefficient of the x^2 term.\n */\n readonly c2: number\n /**\n * The coefficient of the x^3 term.\n */\n readonly c3: number\n}\n\n/**\n * Checks if a value is a `CubicPolynomial`.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a `CubicPolynomial`, `false` otherwise.\n * @since 1.0.0\n */\nexport const isCubicPolynomial: (value: unknown) => value is CubicPolynomial =\n internal.isCubicPolynomial\n\n/**\n * Creates a new `CubicPolynomial` instance.\n *\n * @param c0 - The coefficient of the x^0 term.\n * @param c1 - The coefficient of the x^1 term.\n * @param c2 - The coefficient of the x^2 term.\n * @param c3 - The coefficient of the x^3 term.\n */\nexport const make: (c0: number, c1: number, c2: number, c3: number) => CubicPolynomial =\n internal.make\n\n/**\n * Creates a new `CubicPolynomial` instance from a vector.\n *\n * @param v - The vector to convert.\n * @returns A new `CubicPolynomial` instance.\n * @since 1.0.0\n */\nexport const fromVector: (v: Vector4) => CubicPolynomial = internal.fromVector\n\nexport const solve: {\n /**\n * Solves a cubic polynomial for a given value of x.\n *\n * @param p - The cubic polynomial to solve.\n * @param x - The value of x to solve for.\n * @returns The result of the polynomial evaluation at x.\n * @since 1.0.0\n */\n (p: CubicPolynomial, x: number): number\n /**\n * Solves a cubic polynomial for a given value of x.\n *\n * @param x - The value of x to solve for.\n * @returns A function that takes a cubic polynomial and returns the result of the polynomial evaluation at x.\n * @since 1.0.0\n */\n (x: number): (p: CubicPolynomial) => number\n} = internal.solve\n\n/**\n * Converts a cubic polynomial to a solver function.\n *\n * @param p - The cubic polynomial to convert.\n * @returns A function that takes a value of x and returns the result of the polynomial evaluation at x.\n * @since 1.0.0\n */\nexport const toSolver: (p: CubicPolynomial) => (x: number) => number = internal.toSolver\n\nexport const solveInverse: {\n /**\n * Solves a cubic polynomial for a given value of y.\n *\n * @param p - The cubic polynomial to solve.\n * @param y - The value of y to solve for.\n * @returns The roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\n (p: CubicPolynomial, y: number): ZeroToThree\n /**\n * Solves a cubic polynomial for a given value of y.\n *\n * @param y - The value of y to solve for.\n * @returns A function that takes a cubic polynomial and returns the roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\n (y: number): (p: CubicPolynomial) => ZeroToThree\n} = internal.solveInverse\n\n/**\n * Converts a cubic polynomial to an inverse solver function.\n *\n * @param p - The cubic polynomial to convert.\n * @returns A function that takes a value of y and returns the roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\nexport const toInverseSolver: (p: CubicPolynomial) => (y: number) => ZeroToThree =\n internal.toInverseSolver\n\n/**\n * Calculates the derivative of a cubic polynomial.\n *\n * @param p - The cubic polynomial to differentiate.\n * @returns The derivative of the cubic polynomial.\n * @since 1.0.0\n */\nexport const derivative: (p: CubicPolynomial) => QuadraticPolynomial = internal.derivative\n\n/**\n * Calculates the roots of a cubic polynomial.\n *\n * @param p - The cubic polynomial to find the roots of.\n * @returns The roots of the cubic polynomial.\n * @since 1.0.0\n */\nexport const roots: (p: CubicPolynomial) => ZeroToThree = internal.roots\n\n/**\n * Calculates the extrema of a cubic polynomial.\n *\n * @param p - The cubic polynomial to find the extrema of.\n * @returns The extrema of the cubic polynomial.\n * @since 1.0.0\n */\nexport const extrema: (p: CubicPolynomial) => ZeroToTwo = internal.extrema\n\nexport const monotonicity: {\n /**\n * Calculates the monotonicity of a cubic polynomial.\n *\n * @param p - The cubic polynomial to analyze.\n * @param i - The interval to restrict the analysis to.\n * @returns The monotonicity of the cubic polynomial in the specified interval.\n * @since 1.0.0\n */\n (p: CubicPolynomial, i?: Interval): Monotonicity\n /**\n * Calculates the monotonicity of a cubic polynomial.\n *\n * @param i - The interval to restrict the analysis to.\n * @returns A function that takes a cubic polynomial and returns the monotonicity of the cubic polynomial in the specified interval.\n * @since 1.0.0\n */\n (i: Interval): (p: CubicPolynomial) => Monotonicity\n} = internal.monotonicity\n\nexport const domain: {\n /**\n * Calculates the domain of a cubic polynomial.\n *\n * @param p - The cubic polynomial to analyze.\n * @param range - The range to restrict the analysis to.\n * @returns The domain of the cubic polynomial in the specified range.\n * @since 1.0.0\n */\n (p: CubicPolynomial, range: Interval): Interval\n /**\n * Calculates the domain of a cubic polynomial.\n *\n * @param range - The range to restrict the analysis to.\n * @returns A function that takes a cubic polynomial and returns the domain of the cubic polynomial in the specified range.\n * @since 1.0.0\n */\n (range: Interval): (p: CubicPolynomial) => Interval\n} = internal.domain\n\nexport const range: {\n /**\n * Calculates the range of a cubic polynomial.\n *\n * @param p - The cubic polynomial to analyze.\n * @param domain - The domain to restrict the analysis to.\n * @returns The range of the cubic polynomial in the specified domain.\n * @since 1.0.0\n */\n (p: CubicPolynomial, domain: Interval): Interval\n /**\n * Calculates the range of a cubic polynomial.\n *\n * @param domain - The domain to restrict the analysis to.\n * @returns A function that takes a cubic polynomial and returns the range of the cubic polynomial in the specified domain.\n * @since 1.0.0\n */\n (domain: Interval): (p: CubicPolynomial) => Interval\n} = internal.range\n\nexport const length: {\n /**\n * Calculates the length of a cubic polynomial.\n *\n * @param p - The cubic polynomial to analyze.\n * @param domain - The domain to restrict the analysis to.\n * @returns The length of the cubic polynomial in the specified domain.\n * @since 1.0.0\n */\n (p: CubicPolynomial, domain: Interval): number\n /**\n * Calculates the length of a cubic polynomial.\n *\n * @param domain - The domain to restrict the analysis to.\n * @returns A function that takes a cubic polynomial and returns the length of the cubic polynomial in the specified domain.\n * @since 1.0.0\n */\n (domain: Interval): (p: CubicPolynomial) => number\n} = internal.length\n\nexport const curvature: {\n /**\n * Calculates the curvature of a cubic polynomial.\n *\n * @param p - The cubic polynomial to analyze.\n * @param x - The value of x to calculate the curvature at.\n * @returns The curvature of the cubic polynomial at the specified value of x.\n * @since 1.0.0\n */\n (p: CubicPolynomial, x: number): number\n /**\n * Calculates the curvature of a cubic polynomial.\n *\n * @param x - The value of x to calculate the curvature at.\n * @returns A function that takes a cubic polynomial and returns the curvature of the cubic polynomial at the specified value of x.\n * @since 1.0.0\n */\n (x: number): (p: CubicPolynomial) => number\n} = internal.curvature\n"],"names":["make","isCubicPolynomial","fromVector","solve","toSolver","solveInverse","Quadratic.solveInverse","Quadratic.make","roots","toInverseSolver","derivative","extrema","Quadratic.roots","monotonicity","Linear.monotonicity","Linear.make","Interval.size","Quadratic.monotonicity","Interval.filter","domain","range","Interval.fromMinMax","length","Linear.length","Quadratic.length","Interval.scaleShift","Interval.biunit","Quadratic.solve","curvature","Quadratic.derivative","Linear.solve","internal.isCubicPolynomial","internal.make","internal.fromVector","internal.solve","internal.toSolver","internal.solveInverse","internal.toInverseSolver","internal.derivative","internal.roots","internal.extrema","internal.monotonicity","internal.domain","internal.range","internal.length","internal.curvature"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import '../interval.mjs';
2
2
  import '../pipe.mjs';
3
3
  import '../vector/vector2.mjs';
4
- export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.NsmY7zcr.mjs';
4
+ export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.FDaj5rlj.mjs';
5
5
  import '../shared/curvy.Bf5TIk31.mjs';
6
6
  import '../vector/vector3.mjs';
7
7
  import '../vector/vector4.mjs';
@@ -1,7 +1,7 @@
1
1
  import '../interval.js';
2
2
  import '../pipe.js';
3
3
  import '../vector/vector2.js';
4
- export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.BsHoYJNv.js';
4
+ export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.Cg8lZVUz.js';
5
5
  import '../shared/curvy.Bf5TIk31.js';
6
6
  import '../vector/vector3.js';
7
7
  import '../vector/vector4.js';
@@ -1,4 +1,4 @@
1
- import { i as isLinearPolynomial$1, a as make$1, f as fromVector$1, d as fromPointSlope$1, e as fromPoints$1, s as solve$1, t as toSolver$1, c as solveInverse$1, g as toInverseSolver$1, m as monotonicity$1, h as derivative$1, j as antiderivative$1, k as domain$1, r as range$1, l as length$1 } from '../shared/curvy.BDhiZ7He.mjs';
1
+ import { i as isLinearPolynomial$1, a as make$1, f as fromVector$1, d as fromPointSlope$1, e as fromPoints$1, s as solve$1, t as toSolver$1, c as solveInverse$1, g as toInverseSolver$1, m as monotonicity$1, h as derivative$1, j as antiderivative$1, k as domain$1, r as range$1, l as length$1 } from '../shared/curvy.r6f1j287.mjs';
2
2
  import '../interval.mjs';
3
3
  import '../pipe.mjs';
4
4
  import '../utils.mjs';
@@ -21,3 +21,4 @@ const range = range$1;
21
21
  const length = length$1;
22
22
 
23
23
  export { antiderivative, derivative, domain, fromPointSlope, fromPoints, fromVector, isLinearPolynomial, length, make, monotonicity, range, root, solve, solveInverse, toInverseSolver, toSolver };
24
+ //# sourceMappingURL=linear.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.mjs","sources":["../../src/polynomial/linear.ts"],"sourcesContent":["import type { Interval } from '../interval'\nimport type { Pipeable } from '../pipe'\nimport type { Vector2 } from '../vector/vector2'\nimport * as internal from './linear.internal'\nimport type { LinearPolynomialTypeId } from './linear.internal'\nimport type { GuaranteedMonotonicity } from './monotonicity'\nimport type { QuadraticPolynomial } from './quadratic'\nimport type { ZeroOrOne } from './types'\n\n/**\n * A linear polynomial.\n *\n * All fields are readonly and immutable, and all operations create new instances.\n *\n * @since 1.0.0\n */\nexport interface LinearPolynomial extends Pipeable {\n readonly [LinearPolynomialTypeId]: LinearPolynomialTypeId\n\n /**\n * The coefficient of the x^0 term.\n */\n readonly c0: number\n\n /**\n * The coefficient of the x^1 term.\n */\n readonly c1: number\n}\n\n/**\n * Checks if a value is a `LinearPolynomial`.\n *\n * @param v - The value to check.\n * @returns `true` if the value is a `LinearPolynomial`, `false` otherwise.\n * @since 1.0.0\n */\nexport const isLinearPolynomial: (v: unknown) => v is LinearPolynomial = internal.isLinearPolynomial\n\n/**\n * Creates a new `LinearPolynomial` instance.\n *\n * @param c0 - The coefficient of the x^0 term. Defaults to 0.\n * @param c1 - The coefficient of the x^1 term. Defaults to 0.\n * @returns A new `LinearPolynomial` instance.\n * @since 1.0.0\n */\nexport const make: (c0?: number, c1?: number) => LinearPolynomial = internal.make\n\n/**\n * Creates a new `LinearPolynomial` instance from a vector.\n *\n * @param v - The vector to create the polynomial from.\n * @returns A new `LinearPolynomial` instance.\n * @since 1.0.0\n */\nexport const fromVector: (v: Vector2) => LinearPolynomial = internal.fromVector\n\n/**\n * Creates a new `LinearPolynomial` instance from a point and slope.\n *\n * @param p - The point on the line.\n * @param slope - The slope of the line.\n * @returns A new `LinearPolynomial` instance.\n * @since 1.0.0\n */\nexport const fromPointSlope: (p: Vector2, slope: number) => LinearPolynomial =\n internal.fromPointSlope\n\n/**\n * Creates a new `LinearPolynomial` instance from two points.\n *\n * @param p1 - The first point.\n * @param p2 - The second point.\n * @returns A new `LinearPolynomial` instance.\n * @since 1.0.0\n */\nexport const fromPoints: (p1: Vector2, p2: Vector2) => LinearPolynomial = internal.fromPoints\n\nexport const solve: {\n /**\n * Solves a linear polynomial for a given value of x.\n *\n * @param p - The linear polynomial to solve.\n * @param x - The value of x to solve for.\n * @returns The result of the polynomial evaluated at x.\n * @since 1.0.0\n */\n (p: LinearPolynomial, x: number): number\n /**\n * Solves a linear polynomial for a given value of x.\n *\n * @param x - The value of x to solve for.\n * @returns A function that takes a `LinearPolynomial` and returns the result of the polynomial evaluated at x.\n * @since 1.0.0\n */\n (x: number): (p: LinearPolynomial) => number\n} = internal.solve\n\n/**\n * Converts a linear polynomial to a solver function.\n *\n * @param p - The linear polynomial to convert.\n * @returns A function that takes a value of x and returns the result of the polynomial evaluated at x.\n * @since 1.0.0\n */\nexport const toSolver: (p: LinearPolynomial) => (x: number) => number = internal.toSolver\n\nexport const solveInverse: {\n /**\n * Solves a linear polynomial for a given value of y.\n *\n * @param p - The linear polynomial to solve.\n * @param y - The value of y to solve for.\n * @returns The roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\n (p: LinearPolynomial, y: number): ZeroOrOne\n /**\n * Solves a linear polynomial for a given value of y.\n *\n * @param y - The value of y to solve for.\n * @returns A function that takes a `LinearPolynomial` and returns the roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\n (y: number): (p: LinearPolynomial) => ZeroOrOne\n} = internal.solveInverse\n\n/**\n * Converts a linear polynomial to an inverse solver function.\n *\n * @param p - The linear polynomial to convert.\n * @returns A function that takes a value of y and returns the roots of the polynomial equation p(x) = y.\n * @since 1.0.0\n */\nexport const toInverseSolver: (p: LinearPolynomial) => (y: number) => ZeroOrOne =\n internal.toInverseSolver\n\n/**\n * Finds the roots of a linear polynomial.\n *\n * @param p - The linear polynomial to find the roots of.\n * @returns The roots of the polynomial equation p(x) = 0.\n * @since 1.0.0\n */\nexport const root: (p: LinearPolynomial) => ZeroOrOne = (p) => internal.solveInverse(p, 0)\n\n/**\n * Calculates the monotonicity of a linear polynomial.\n *\n * @param p - The linear polynomial to check.\n * @returns The guaranteed monotonicity of the polynomial.\n * @since 1.0.0\n */\nexport const monotonicity: (p: LinearPolynomial) => GuaranteedMonotonicity = internal.monotonicity\n\n/**\n * Calculates the derivative of a linear polynomial.\n *\n * @param p - The linear polynomial to differentiate.\n * @returns The derivative of the linear polynomial.\n * @since 1.0.0\n */\nexport const derivative: (p: LinearPolynomial) => number = internal.derivative\n\nexport const antiderivative: {\n /**\n * Calculates the antiderivative of a linear polynomial.\n *\n * @param p - The linear polynomial to integrate.\n * @param constant - The constant of integration. Defaults to 0.\n * @returns The antiderivative of the linear polynomial.\n * @since 1.0.0\n */\n (p: LinearPolynomial, constant?: number): QuadraticPolynomial\n /**\n * Calculates the antiderivative of a linear polynomial.\n *\n * @param constant - The constant of integration. Defaults to 0.\n * @returns A function that takes a `LinearPolynomial` and returns the antiderivative of the polynomial.\n * @since 1.0.0\n */\n (constant: number): (p: LinearPolynomial) => QuadraticPolynomial\n} = internal.antiderivative\n\nexport const domain: {\n /**\n * Calculates the domain of a linear polynomial.\n *\n * @param p - The linear polynomial to check.\n * @param range - The range to check against.\n * @returns The domain of the polynomial within the given range.\n * @since 1.0.0\n */\n (p: LinearPolynomial, range: Interval): ZeroOrOne<Interval>\n /**\n * Calculates the domain of a linear polynomial.\n *\n * @param range - The range to check against.\n * @returns A function that takes a `LinearPolynomial` and returns the domain of the polynomial within the given range.\n * @since 1.0.0\n */\n (range: Interval): (p: LinearPolynomial) => ZeroOrOne<Interval>\n} = internal.domain\n\nexport const range: {\n /**\n * Calculates the range of a linear polynomial.\n *\n * @param p - The linear polynomial to check.\n * @param domain - The domain to check against.\n * @returns The range of the polynomial within the given domain.\n * @since 1.0.0\n */\n (p: LinearPolynomial, domain: Interval): Interval\n /**\n * Calculates the range of a linear polynomial.\n *\n * @param domain - The domain to check against.\n * @returns A function that takes a `LinearPolynomial` and returns the range of the polynomial within the given domain.\n * @since 1.0.0\n */\n (domain: Interval): (p: LinearPolynomial) => Interval\n} = internal.range\n\nexport const length: {\n /**\n * Calculates the length of a linear polynomial within a particular domain `Interval`.\n *\n * @param p - The linear polynomial to analyze.\n * @param domain - The domain to restrict the analysis to.\n * @returns The length of the linear polynomial in the specified domain.\n * @since 1.0.0\n */\n (p: LinearPolynomial, domain: Interval): number\n /**\n * Calculates the length of a linear polynomial within a particular domain `Interval`.\n *\n * @param domain - The domain to restrict the analysis to.\n * @returns A function that takes a `LinearPolynomial` and returns the length of the polynomial in the specified domain.\n * @since 1.0.0\n */\n (domain: Interval): (p: LinearPolynomial) => number\n} = internal.length\n"],"names":["internal.isLinearPolynomial","internal.make","internal.fromVector","internal.fromPointSlope","internal.fromPoints","internal.solve","internal.toSolver","internal.solveInverse","internal.toInverseSolver","internal.monotonicity","internal.derivative","internal.antiderivative","internal.domain","internal.range","internal.length"],"mappings":";;;;;AAqCO,MAAM,qBAA4DA;AAUlE,MAAM,OAAuDC;AAS7D,MAAM,aAA+CC;AAUrD,MAAM,iBACXC;AAUK,MAAM,aAA6DC;AAEnE,MAAM,QAkBTC;AASG,MAAM,WAA2DC;AAEjE,MAAM,eAkBTC;AASG,MAAM,kBACXC;AASK,MAAM,OAA2C,CAAC,CAAA,KAAMD,cAAS,CAAa,GAAG,CAAC;AASlF,MAAM,eAAgEE;AAStE,MAAM,aAA8CC;AAEpD,MAAM,iBAkBTC;AAEG,MAAM,SAkBTC;AAEG,MAAM,QAkBTC;AAEG,MAAM,SAkBTC;;;;"}
@@ -1,7 +1,7 @@
1
1
  import '../interval.mjs';
2
2
  import '../pipe.mjs';
3
+ import '../vector/vector2.mjs';
3
4
  import '../vector/vector3.mjs';
4
- export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.NsmY7zcr.mjs';
5
+ export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.FDaj5rlj.mjs';
5
6
  import '../shared/curvy.Bf5TIk31.mjs';
6
- import '../vector/vector2.mjs';
7
7
  import '../vector/vector4.mjs';
@@ -1,7 +1,7 @@
1
1
  import '../interval.js';
2
2
  import '../pipe.js';
3
+ import '../vector/vector2.js';
3
4
  import '../vector/vector3.js';
4
- export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.BsHoYJNv.js';
5
+ export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.Cg8lZVUz.js';
5
6
  import '../shared/curvy.Bf5TIk31.js';
6
- import '../vector/vector2.js';
7
7
  import '../vector/vector4.js';
@@ -1,8 +1,10 @@
1
- import { i as isQuadraticPolynomial$1, m as make$1, f as fromVector$1, c as solve$1, t as toSolver$1, s as solveInverse$1, e as toInverseSolver$1, d as derivative$1, r as roots$1, h as extreme$1, b as monotonicity$1, j as antiderivative$1, k as domain$1, n as range$1, l as length$1, o as curvature$1 } from '../shared/curvy.BzVmUIKm.mjs';
1
+ import { i as isQuadraticPolynomial$1, m as make$1, f as fromVector$1, c as solve$1, t as toSolver$1, s as solveInverse$1, e as toInverseSolver$1, d as derivative$1, r as roots$1, h as extreme$1, b as monotonicity$1, j as antiderivative$1, k as domain$1, n as range$1, l as length$1, o as curvature$1 } from '../shared/curvy.BxdGW9he.mjs';
2
2
  import '../interval.mjs';
3
3
  import '../pipe.mjs';
4
4
  import '../utils.mjs';
5
- import '../shared/curvy.BDhiZ7He.mjs';
5
+ import '../vector/vector2.mjs';
6
+ import '../shared/curvy.DJ4xO0al.mjs';
7
+ import '../shared/curvy.r6f1j287.mjs';
6
8
 
7
9
  const isQuadraticPolynomial = isQuadraticPolynomial$1;
8
10
  const make = make$1;
@@ -22,3 +24,4 @@ const length = length$1;
22
24
  const curvature = curvature$1;
23
25
 
24
26
  export { antiderivative, curvature, derivative, domain, extreme, fromVector, isQuadraticPolynomial, length, make, monotonicity, range, roots, solve, solveInverse, toInverseSolver, toSolver };
27
+ //# sourceMappingURL=quadratic.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadratic.mjs","sources":["../../src/polynomial/quadratic.ts"],"sourcesContent":["import type { Interval } from '../interval'\nimport type { Pipeable } from '../pipe'\nimport type { Vector2 } from '../vector/vector2'\nimport type { Vector3 } from '../vector/vector3'\nimport type { CubicPolynomial } from './cubic'\nimport type { LinearPolynomial } from './linear'\nimport type { Monotonicity } from './monotonicity'\nimport * as internal from './quadratic.internal'\nimport type { QuadraticPolynomialTypeId } from './quadratic.internal.circular'\nimport type { ZeroOrOne, ZeroToTwo } from './types'\n\n/**\n * A quadratic polynomial.\n *\n * All fields are readonly and immutable, and all operations create new instances.\n *\n * @since 1.0.0\n */\nexport interface QuadraticPolynomial extends Pipeable {\n readonly [QuadraticPolynomialTypeId]: QuadraticPolynomialTypeId\n\n /**\n * The coefficient of the x^0 term.\n */\n readonly c0: number\n /**\n * The coefficient of the x^1 term.\n */\n readonly c1: number\n /**\n * The coefficient of the x^2 term.\n */\n readonly c2: number\n}\n\n/**\n * Checks if a value is a `QuadraticPolynomial`.\n *\n * @param v - The value to check.\n * @returns `true` if the value is a `QuadraticPolynomial`, `false` otherwise.\n * @since 1.0.0\n */\nexport const isQuadraticPolynomial: (v: unknown) => v is QuadraticPolynomial =\n internal.isQuadraticPolynomial\n\n/**\n * Creates a new `QuadraticPolynomial` instance.\n *\n * @param c0 - The coefficient of the x^0 term. Defaults to 0.\n * @param c1 - The coefficient of the x^1 term. Defaults to 0.\n * @param c2 - The coefficient of the x^2 term. Defaults to 1.\n * @returns A new `QuadraticPolynomial` instance.\n * @since 1.0.0\n */\nexport const make: (c0?: number, c1?: number, c2?: number) => QuadraticPolynomial = internal.make\n\n/**\n * Creates a new `QuadraticPolynomial` instance from a vector.\n *\n * @param v - The vector to create the polynomial from.\n * @returns A new `QuadraticPolynomial` instance.\n * @since 1.0.0\n */\nexport const fromVector: (v: Vector3) => QuadraticPolynomial = internal.fromVector\n\nexport const solve: {\n /**\n * Solves the quadratic polynomial for a given x value.\n *\n * @param p - The quadratic polynomial.\n * @param x - The x value to solve for.\n * @returns The result of the polynomial at the given x value.\n */\n (p: QuadraticPolynomial, x: number): number\n /**\n * Solves the quadratic polynomial for a given x value.\n *\n * @param x - The x value to solve for.\n * @returns A function that takes a quadratic polynomial and returns the result of the polynomial at the given x value.\n */\n (x: number): (p: QuadraticPolynomial) => number\n} = internal.solve\n\n/**\n * Creates a solver function for the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @returns A function that takes an x value and returns the result of the polynomial at that x value.\n */\nexport const toSolver: (p: QuadraticPolynomial) => (x: number) => number = internal.toSolver\n\nexport const solveInverse: {\n /**\n * Solves the quadratic polynomial for a given y value.\n *\n * @param p - The quadratic polynomial.\n * @param y - The y value to solve for.\n * @returns The solutions to the polynomial at the given y value.\n */\n (p: QuadraticPolynomial, y: number): ZeroToTwo\n /**\n * Solves the quadratic polynomial for a given y value.\n *\n * @param y - The y value to solve for.\n * @returns A function that takes a quadratic polynomial and returns the solutions to the polynomial at the given y value.\n */\n (y: number): (p: QuadraticPolynomial) => ZeroToTwo\n} = internal.solveInverse\n\n/**\n * Creates an inverse solver function for the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @returns A function that takes a y value and returns the solutions to the polynomial at that y value.\n */\nexport const toInverseSolver: (p: QuadraticPolynomial) => (y: number) => ZeroToTwo =\n internal.toInverseSolver\n\n/**\n * Computes the derivative of the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @returns The derivative of the polynomial as a linear polynomial.\n * @since 1.0.0\n */\nexport const derivative: (p: QuadraticPolynomial) => LinearPolynomial = internal.derivative\n\n/**\n * Finds the roots of the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @returns The roots of the polynomial as a tuple of solutions.\n * @since 1.0.0\n */\nexport const roots: (p: QuadraticPolynomial) => ZeroToTwo = internal.roots\n\n/**\n * Finds the extreme point of the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @returns The extreme point of the polynomial as a solution.\n * @since 1.0.0\n */\nexport const extreme: (p: QuadraticPolynomial) => ZeroOrOne<Vector2> = internal.extreme\n\nexport const monotonicity: {\n /**\n * Computes the monotonicity of the quadratic polynomial over a given interval.\n *\n * @param p - The quadratic polynomial.\n * @param i - The interval to compute the monotonicity over.\n * @returns The monotonicity of the polynomial over the interval.\n */\n (p: QuadraticPolynomial, i?: Interval): Monotonicity\n /**\n * Computes the monotonicity of the quadratic polynomial over a given interval.\n *\n * @param i - The interval to compute the monotonicity over.\n * @returns A function that takes a quadratic polynomial and returns the monotonicity of the polynomial over the interval.\n */\n (i: Interval): (p: QuadraticPolynomial) => Monotonicity\n} = internal.monotonicity\n\nexport const antiderivative: {\n /**\n * Computes the antiderivative of the quadratic polynomial.\n *\n * @param p - The quadratic polynomial.\n * @param constant - The constant of integration. Defaults to 0.\n * @returns The antiderivative of the polynomial as a cubic polynomial.\n */\n (p: QuadraticPolynomial, constant?: number): CubicPolynomial\n /**\n * Computes the antiderivative of the quadratic polynomial.\n *\n * @param constant - The constant of integration. Defaults to 0.\n * @returns A function that takes a quadratic polynomial and returns the antiderivative of the polynomial as a cubic polynomial.\n */\n (constant: number): (p: QuadraticPolynomial) => CubicPolynomial\n} = internal.antiderivative\n\nexport const domain: {\n /**\n * Computes the domain of the quadratic polynomial over a given range.\n *\n * @param p - The quadratic polynomial.\n * @param range - The range to compute the domain over.\n * @returns The domain of the polynomial over the range.\n */\n (p: QuadraticPolynomial, range: Interval): Interval | null\n /**\n * Computes the domain of the quadratic polynomial over a given range.\n *\n * @param range - The range to compute the domain over.\n * @returns A function that takes a quadratic polynomial and returns the domain of the polynomial over the range.\n */\n (range: Interval): (p: QuadraticPolynomial) => Interval | null\n} = internal.domain\n\nexport const range: {\n /**\n * Computes the range of the quadratic polynomial over a given domain.\n *\n * @param p - The quadratic polynomial.\n * @param domain - The domain to compute the range over.\n * @returns The range of the polynomial over the domain.\n */\n (p: QuadraticPolynomial, domain: Interval): Interval\n /**\n * Computes the range of the quadratic polynomial over a given domain.\n *\n * @param domain - The domain to compute the range over.\n * @returns A function that takes a quadratic polynomial and returns the range of the polynomial over the domain.\n */\n (domain: Interval): (p: QuadraticPolynomial) => Interval\n} = internal.range\n\nexport const length: {\n /**\n * Computes the length of the quadratic polynomial over a given interval.\n *\n * @param p - The quadratic polynomial.\n * @param i - The interval to compute the length over.\n * @returns The length of the polynomial over the interval.\n */\n (p: QuadraticPolynomial, i: Interval): number\n /**\n * Computes the length of the quadratic polynomial over a given interval.\n *\n * @param i - The interval to compute the length over.\n * @returns A function that takes a quadratic polynomial and returns the length of the polynomial over the interval.\n */\n (i: Interval): (p: QuadraticPolynomial) => number\n} = internal.length\n\nexport const curvature: {\n /**\n * Computes the curvature of the quadratic polynomial at a given x value.\n *\n * @param p - The quadratic polynomial.\n * @param x - The x value to compute the curvature at.\n * @returns The curvature of the polynomial at the given x value.\n */\n (p: QuadraticPolynomial, x: number): number\n /**\n * Computes the curvature of the quadratic polynomial at a given x value.\n *\n * @param x - The x value to compute the curvature at.\n * @returns A function that takes a quadratic polynomial and returns the curvature of the polynomial at the given x value.\n */\n (x: number): (p: QuadraticPolynomial) => number\n} = internal.curvature\n"],"names":["internal.isQuadraticPolynomial","internal.make","internal.fromVector","internal.solve","internal.toSolver","internal.solveInverse","internal.toInverseSolver","internal.derivative","internal.roots","internal.extreme","internal.monotonicity","internal.antiderivative","internal.domain","internal.range","internal.length","internal.curvature"],"mappings":";;;;;;;;AA0CO,MAAM,wBACXA;AAWK,MAAM,OAAuEC;AAS7E,MAAM,aAAkDC;AAExD,MAAM,QAgBTC;AAQG,MAAM,WAA8DC;AAEpE,MAAM,eAgBTC;AAQG,MAAM,kBACXC;AASK,MAAM,aAA2DC;AASjE,MAAM,QAA+CC;AASrD,MAAM,UAA0DC;AAEhE,MAAM,eAgBTC;AAEG,MAAM,iBAgBTC;AAEG,MAAM,SAgBTC;AAEG,MAAM,QAgBTC;AAEG,MAAM,SAgBTC;AAEG,MAAM,YAgBTC;;;;"}