formulab 0.9.0 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -21
  3. package/README.md +659 -633
  4. package/dist/automotive/brakingDistance.d.ts +4 -0
  5. package/dist/automotive/brakingDistance.d.ts.map +1 -1
  6. package/dist/automotive/brakingDistance.js +8 -4
  7. package/dist/automotive/brakingDistance.js.map +1 -1
  8. package/dist/battery/cRate.d.ts.map +1 -1
  9. package/dist/battery/cRate.js +6 -0
  10. package/dist/battery/cRate.js.map +1 -1
  11. package/dist/chemical/dilution.js +4 -4
  12. package/dist/chemical/dilution.js.map +1 -1
  13. package/dist/chemical/heatTransfer.d.ts +6 -0
  14. package/dist/chemical/heatTransfer.d.ts.map +1 -1
  15. package/dist/chemical/heatTransfer.js +15 -9
  16. package/dist/chemical/heatTransfer.js.map +1 -1
  17. package/dist/chemical/pipeFlow.d.ts +6 -0
  18. package/dist/chemical/pipeFlow.d.ts.map +1 -1
  19. package/dist/chemical/pipeFlow.js +12 -6
  20. package/dist/chemical/pipeFlow.js.map +1 -1
  21. package/dist/construction/aggregate.d.ts +4 -0
  22. package/dist/construction/aggregate.d.ts.map +1 -1
  23. package/dist/construction/aggregate.js +8 -4
  24. package/dist/construction/aggregate.js.map +1 -1
  25. package/dist/construction/momentOfInertia.d.ts +7 -0
  26. package/dist/construction/momentOfInertia.d.ts.map +1 -1
  27. package/dist/construction/momentOfInertia.js +19 -12
  28. package/dist/construction/momentOfInertia.js.map +1 -1
  29. package/dist/construction/roof.js +2 -2
  30. package/dist/construction/roof.js.map +1 -1
  31. package/dist/electronics/awg.d.ts +3 -2
  32. package/dist/electronics/awg.d.ts.map +1 -1
  33. package/dist/electronics/awg.js +3 -3
  34. package/dist/electronics/awg.js.map +1 -1
  35. package/dist/electronics/capacitor.js +1 -1
  36. package/dist/electronics/capacitor.js.map +1 -1
  37. package/dist/electronics/led.js +2 -2
  38. package/dist/electronics/led.js.map +1 -1
  39. package/dist/electronics/ohmsLaw.d.ts +3 -0
  40. package/dist/electronics/ohmsLaw.d.ts.map +1 -1
  41. package/dist/electronics/ohmsLaw.js +11 -8
  42. package/dist/electronics/ohmsLaw.js.map +1 -1
  43. package/dist/electronics/stencil.d.ts +2 -1
  44. package/dist/electronics/stencil.d.ts.map +1 -1
  45. package/dist/electronics/stencil.js +4 -3
  46. package/dist/electronics/stencil.js.map +1 -1
  47. package/dist/electronics/trace.d.ts.map +1 -1
  48. package/dist/electronics/trace.js +4 -7
  49. package/dist/electronics/trace.js.map +1 -1
  50. package/dist/energy/solarOutput.d.ts +4 -0
  51. package/dist/energy/solarOutput.d.ts.map +1 -1
  52. package/dist/energy/solarOutput.js +8 -4
  53. package/dist/energy/solarOutput.js.map +1 -1
  54. package/dist/environmental/scope2Emissions.d.ts +1 -0
  55. package/dist/environmental/scope2Emissions.d.ts.map +1 -1
  56. package/dist/environmental/scope2Emissions.js +2 -1
  57. package/dist/environmental/scope2Emissions.js.map +1 -1
  58. package/dist/machining/boringBarDeflection.d.ts.map +1 -1
  59. package/dist/machining/boringBarDeflection.js +7 -1
  60. package/dist/machining/boringBarDeflection.js.map +1 -1
  61. package/dist/machining/gaugeBlockStack.d.ts.map +1 -1
  62. package/dist/machining/gaugeBlockStack.js +18 -15
  63. package/dist/machining/gaugeBlockStack.js.map +1 -1
  64. package/dist/machining/toolDeflection.d.ts.map +1 -1
  65. package/dist/machining/toolDeflection.js +7 -1
  66. package/dist/machining/toolDeflection.js.map +1 -1
  67. package/dist/machining/triangleSolver.d.ts +2 -1
  68. package/dist/machining/triangleSolver.d.ts.map +1 -1
  69. package/dist/machining/triangleSolver.js +6 -5
  70. package/dist/machining/triangleSolver.js.map +1 -1
  71. package/dist/metal/flangeSpec.d.ts +3 -0
  72. package/dist/metal/flangeSpec.d.ts.map +1 -1
  73. package/dist/metal/flangeSpec.js +6 -3
  74. package/dist/metal/flangeSpec.js.map +1 -1
  75. package/dist/metal/metalWeight.d.ts.map +1 -1
  76. package/dist/metal/metalWeight.js +20 -0
  77. package/dist/metal/metalWeight.js.map +1 -1
  78. package/dist/metal/pipeSpec.d.ts +3 -0
  79. package/dist/metal/pipeSpec.d.ts.map +1 -1
  80. package/dist/metal/pipeSpec.js +6 -3
  81. package/dist/metal/pipeSpec.js.map +1 -1
  82. package/dist/quality/controlChart.d.ts +3 -0
  83. package/dist/quality/controlChart.d.ts.map +1 -1
  84. package/dist/quality/controlChart.js +6 -3
  85. package/dist/quality/controlChart.js.map +1 -1
  86. package/dist/quality/oee.js +2 -2
  87. package/dist/quality/oee.js.map +1 -1
  88. package/dist/safety/ventilationRate.d.ts +3 -0
  89. package/dist/safety/ventilationRate.d.ts.map +1 -1
  90. package/dist/safety/ventilationRate.js +6 -3
  91. package/dist/safety/ventilationRate.js.map +1 -1
  92. package/package.json +15 -17
@@ -9,6 +9,10 @@ import type { BrakingDistanceInput, BrakingDistanceResult } from './types.js';
9
9
  *
10
10
  * Reference: AASHTO "A Policy on Geometric Design of Highways and Streets"
11
11
  *
12
+ * @throws {RangeError} Speed must be positive
13
+ * @throws {RangeError} Friction coefficient must be positive
14
+ * @throws {RangeError} Reaction time must be non-negative
15
+ * @throws {RangeError} Effective friction (friction + grade) must be positive — vehicle cannot stop on this grade
12
16
  * @param input - speed, friction, reaction time, grade
13
17
  * @returns stopping distance components
14
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"brakingDistance.d.ts","sourceRoot":"","sources":["../../src/automotive/brakingDistance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAqClF"}
1
+ {"version":3,"file":"brakingDistance.d.ts","sourceRoot":"","sources":["../../src/automotive/brakingDistance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAqClF"}
@@ -9,17 +9,21 @@ import { roundTo } from '../utils.js';
9
9
  *
10
10
  * Reference: AASHTO "A Policy on Geometric Design of Highways and Streets"
11
11
  *
12
+ * @throws {RangeError} Speed must be positive
13
+ * @throws {RangeError} Friction coefficient must be positive
14
+ * @throws {RangeError} Reaction time must be non-negative
15
+ * @throws {RangeError} Effective friction (friction + grade) must be positive — vehicle cannot stop on this grade
12
16
  * @param input - speed, friction, reaction time, grade
13
17
  * @returns stopping distance components
14
18
  */
15
19
  export function brakingDistance(input) {
16
20
  const { speed, friction, reactionTime, grade } = input;
17
21
  if (speed <= 0)
18
- throw new Error('Speed must be positive');
22
+ throw new RangeError('Speed must be positive');
19
23
  if (friction <= 0)
20
- throw new Error('Friction coefficient must be positive');
24
+ throw new RangeError('Friction coefficient must be positive');
21
25
  if (reactionTime < 0)
22
- throw new Error('Reaction time must be non-negative');
26
+ throw new RangeError('Reaction time must be non-negative');
23
27
  const g = 9.81; // m/s²
24
28
  const speedMps = speed / 3.6; // km/h → m/s
25
29
  const gradeDecimal = grade / 100; // % → decimal
@@ -29,7 +33,7 @@ export function brakingDistance(input) {
29
33
  // Uphill (positive grade) helps braking, downhill (negative) hinders
30
34
  const effectiveFriction = friction + gradeDecimal;
31
35
  if (effectiveFriction <= 0) {
32
- throw new Error('Effective friction (friction + grade) must be positive — vehicle cannot stop on this grade');
36
+ throw new RangeError('Effective friction (friction + grade) must be positive — vehicle cannot stop on this grade');
33
37
  }
34
38
  // Deceleration: a = g × (f ± G)
35
39
  const deceleration = g * effectiveFriction;
@@ -1 +1 @@
1
- {"version":3,"file":"brakingDistance.js","sourceRoot":"","sources":["../../src/automotive/brakingDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEvD,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC5E,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE5E,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;IACvB,MAAM,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,aAAa;IAC3C,MAAM,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,cAAc;IAEhD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;IAE7C,uCAAuC;IACvC,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;IAElD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IAED,gCAAgC;IAChC,MAAM,YAAY,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAE3C,qCAAqC;IACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;IAE/D,MAAM,qBAAqB,GAAG,YAAY,GAAG,WAAW,CAAC;IAEzD,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"brakingDistance.js","sourceRoot":"","sources":["../../src/automotive/brakingDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEvD,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;IAC/D,IAAI,QAAQ,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IACjF,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAEjF,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;IACvB,MAAM,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,aAAa;IAC3C,MAAM,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,cAAc;IAEhD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;IAE7C,uCAAuC;IACvC,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;IAElD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,4FAA4F,CAAC,CAAC;IACrH,CAAC;IAED,gCAAgC;IAChC,MAAM,YAAY,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAE3C,qCAAqC;IACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;IAE/D,MAAM,qBAAqB,GAAG,YAAY,GAAG,WAAW,CAAC;IAEzD,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KACvC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cRate.d.ts","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqBpD"}
1
+ {"version":3,"file":"cRate.d.ts","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAyBpD"}
@@ -7,13 +7,19 @@ import { roundTo } from '../utils.js';
7
7
  * @returns C-rate, current, and theoretical charge/discharge time
8
8
  */
9
9
  export function cRate(input) {
10
+ if (input.capacityAh <= 0)
11
+ throw new RangeError('capacityAh must be positive');
10
12
  let cRateValue;
11
13
  let currentA;
12
14
  if (input.mode === 'currentToRate') {
15
+ if (input.currentA <= 0)
16
+ throw new RangeError('currentA must be positive');
13
17
  currentA = input.currentA;
14
18
  cRateValue = currentA / input.capacityAh;
15
19
  }
16
20
  else {
21
+ if (input.cRate <= 0)
22
+ throw new RangeError('cRate must be positive');
17
23
  cRateValue = input.cRate;
18
24
  currentA = cRateValue * input.capacityAh;
19
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cRate.js","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAgB,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cRate.js","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAE/E,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAgB,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC,CAAC;QAC3E,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACrE,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -16,7 +16,7 @@ export function dilution(input) {
16
16
  case 'c2':
17
17
  // C2 = C1 * V1 / V2
18
18
  if (input.v2 === 0) {
19
- throw new Error('Cannot solve for c2: v2 must be non-zero');
19
+ throw new RangeError('Cannot solve for c2: v2 must be non-zero');
20
20
  }
21
21
  resultC1 = input.c1;
22
22
  resultV1 = input.v1;
@@ -26,7 +26,7 @@ export function dilution(input) {
26
26
  case 'v2':
27
27
  // V2 = C1 * V1 / C2
28
28
  if (input.c2 === 0) {
29
- throw new Error('Cannot solve for v2: c2 must be non-zero');
29
+ throw new RangeError('Cannot solve for v2: c2 must be non-zero');
30
30
  }
31
31
  resultC1 = input.c1;
32
32
  resultV1 = input.v1;
@@ -36,7 +36,7 @@ export function dilution(input) {
36
36
  case 'c1':
37
37
  // C1 = C2 * V2 / V1
38
38
  if (input.v1 === 0) {
39
- throw new Error('Cannot solve for c1: v1 must be non-zero');
39
+ throw new RangeError('Cannot solve for c1: v1 must be non-zero');
40
40
  }
41
41
  resultV1 = input.v1;
42
42
  resultC2 = input.c2;
@@ -46,7 +46,7 @@ export function dilution(input) {
46
46
  case 'v1':
47
47
  // V1 = C2 * V2 / C1
48
48
  if (input.c1 === 0) {
49
- throw new Error('Cannot solve for v1: c1 must be non-zero');
49
+ throw new RangeError('Cannot solve for v1: c1 must be non-zero');
50
50
  }
51
51
  resultC1 = input.c1;
52
52
  resultC2 = input.c2;
@@ -1 +1 @@
1
- {"version":3,"file":"dilution.js","sourceRoot":"","sources":["../../src/chemical/dilution.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;IACV,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,YAAY,EAAE,QAAQ,GAAG,QAAQ;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dilution.js","sourceRoot":"","sources":["../../src/chemical/dilution.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM;IACV,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,YAAY,EAAE,QAAQ,GAAG,QAAQ;KAClC,CAAC;AACJ,CAAC"}
@@ -9,6 +9,12 @@ import type { HeatTransferInput, HeatTransferResult } from './types.js';
9
9
  *
10
10
  * All temperatures in °C internally converted to K for radiation.
11
11
  *
12
+ * @throws {RangeError} Thermal conductivity must be positive
13
+ * @throws {RangeError} Area must be positive
14
+ * @throws {RangeError} Thickness must be positive
15
+ * @throws {RangeError} Convection coefficient must be positive
16
+ * @throws {RangeError} Emissivity must be between 0 and 1
17
+ * @throws {RangeError} Absolute temperature must be positive
12
18
  * @param input - discriminated union by `mode`
13
19
  * @returns heat transfer rate and related quantities
14
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"heatTransfer.d.ts","sourceRoot":"","sources":["../../src/chemical/heatTransfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA4DzE"}
1
+ {"version":3,"file":"heatTransfer.d.ts","sourceRoot":"","sources":["../../src/chemical/heatTransfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOxE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA4DzE"}
@@ -13,6 +13,12 @@ const STEFAN_BOLTZMANN = 5.670374419e-8;
13
13
  *
14
14
  * All temperatures in °C internally converted to K for radiation.
15
15
  *
16
+ * @throws {RangeError} Thermal conductivity must be positive
17
+ * @throws {RangeError} Area must be positive
18
+ * @throws {RangeError} Thickness must be positive
19
+ * @throws {RangeError} Convection coefficient must be positive
20
+ * @throws {RangeError} Emissivity must be between 0 and 1
21
+ * @throws {RangeError} Absolute temperature must be positive
16
22
  * @param input - discriminated union by `mode`
17
23
  * @returns heat transfer rate and related quantities
18
24
  */
@@ -26,11 +32,11 @@ export function heatTransfer(input) {
26
32
  const { conductivity, thickness, tempHot, tempCold } = input;
27
33
  area = input.area;
28
34
  if (conductivity <= 0)
29
- throw new Error('Thermal conductivity must be positive');
35
+ throw new RangeError('Thermal conductivity must be positive');
30
36
  if (area <= 0)
31
- throw new Error('Area must be positive');
37
+ throw new RangeError('Area must be positive');
32
38
  if (thickness <= 0)
33
- throw new Error('Thickness must be positive');
39
+ throw new RangeError('Thickness must be positive');
34
40
  tempDifference = tempHot - tempCold;
35
41
  // Fourier's Law: Q = k × A × ΔT / L
36
42
  heatRate = (conductivity * area * tempDifference) / thickness;
@@ -42,9 +48,9 @@ export function heatTransfer(input) {
42
48
  const { coefficient, tempSurface, tempFluid } = input;
43
49
  area = input.area;
44
50
  if (coefficient <= 0)
45
- throw new Error('Convection coefficient must be positive');
51
+ throw new RangeError('Convection coefficient must be positive');
46
52
  if (area <= 0)
47
- throw new Error('Area must be positive');
53
+ throw new RangeError('Area must be positive');
48
54
  tempDifference = tempSurface - tempFluid;
49
55
  // Newton's Law of Cooling: Q = h × A × ΔT
50
56
  heatRate = coefficient * area * tempDifference;
@@ -56,21 +62,21 @@ export function heatTransfer(input) {
56
62
  const { emissivity, tempHot, tempCold } = input;
57
63
  area = input.area;
58
64
  if (emissivity <= 0 || emissivity > 1)
59
- throw new Error('Emissivity must be between 0 and 1');
65
+ throw new RangeError('Emissivity must be between 0 and 1');
60
66
  if (area <= 0)
61
- throw new Error('Area must be positive');
67
+ throw new RangeError('Area must be positive');
62
68
  tempDifference = tempHot - tempCold;
63
69
  // Convert to Kelvin for Stefan-Boltzmann
64
70
  const tHotK = tempHot + 273.15;
65
71
  const tColdK = tempCold + 273.15;
66
72
  if (tHotK <= 0 || tColdK <= 0)
67
- throw new Error('Absolute temperature must be positive');
73
+ throw new RangeError('Absolute temperature must be positive');
68
74
  // Stefan-Boltzmann Law: Q = ε × σ × A × (T_h⁴ - T_c⁴)
69
75
  heatRate = emissivity * STEFAN_BOLTZMANN * area * (Math.pow(tHotK, 4) - Math.pow(tColdK, 4));
70
76
  // Linearized thermal resistance (approximate): R ≈ 1 / (h_rad × A)
71
77
  // where h_rad = ε × σ × (T_h² + T_c²) × (T_h + T_c)
72
78
  const hRad = emissivity * STEFAN_BOLTZMANN * (tHotK * tHotK + tColdK * tColdK) * (tHotK + tColdK);
73
- thermalResistance = hRad > 0 ? 1 / (hRad * area) : Infinity;
79
+ thermalResistance = 1 / (hRad * area);
74
80
  break;
75
81
  }
76
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heatTransfer.js","sourceRoot":"","sources":["../../src/chemical/heatTransfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heatTransfer.js","sourceRoot":"","sources":["../../src/chemical/heatTransfer.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@ import type { PipeFlowInput, PipeFlowResult } from './types.js';
10
10
  *
11
11
  * Darcy-Weisbach: ΔP = f × (L/D) × (ρv²/2)
12
12
  *
13
+ * @throws {RangeError} Flow rate must be positive
14
+ * @throws {RangeError} Pipe diameter must be positive
15
+ * @throws {RangeError} Pipe length must be positive
16
+ * @throws {RangeError} Fluid density must be positive
17
+ * @throws {RangeError} Fluid viscosity must be positive
18
+ * @throws {RangeError} Custom roughness must be provided and non-negative
13
19
  * @param input - flow rate, pipe geometry, fluid properties
14
20
  * @returns pressure drop, velocity, Reynolds number, flow regime
15
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pipeFlow.d.ts","sourceRoot":"","sources":["../../src/chemical/pipeFlow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAiC9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAoE7D"}
1
+ {"version":3,"file":"pipeFlow.d.ts","sourceRoot":"","sources":["../../src/chemical/pipeFlow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAiC9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAoE7D"}
@@ -39,26 +39,32 @@ function swameeJainFriction(Re, epsilonM, diameterM) {
39
39
  *
40
40
  * Darcy-Weisbach: ΔP = f × (L/D) × (ρv²/2)
41
41
  *
42
+ * @throws {RangeError} Flow rate must be positive
43
+ * @throws {RangeError} Pipe diameter must be positive
44
+ * @throws {RangeError} Pipe length must be positive
45
+ * @throws {RangeError} Fluid density must be positive
46
+ * @throws {RangeError} Fluid viscosity must be positive
47
+ * @throws {RangeError} Custom roughness must be provided and non-negative
42
48
  * @param input - flow rate, pipe geometry, fluid properties
43
49
  * @returns pressure drop, velocity, Reynolds number, flow regime
44
50
  */
45
51
  export function pipeFlow(input) {
46
52
  const { flowRate, pipeDiameter, pipeLength, pipeMaterial, fluidDensity, fluidViscosity, customRoughness } = input;
47
53
  if (flowRate <= 0)
48
- throw new Error('Flow rate must be positive');
54
+ throw new RangeError('Flow rate must be positive');
49
55
  if (pipeDiameter <= 0)
50
- throw new Error('Pipe diameter must be positive');
56
+ throw new RangeError('Pipe diameter must be positive');
51
57
  if (pipeLength <= 0)
52
- throw new Error('Pipe length must be positive');
58
+ throw new RangeError('Pipe length must be positive');
53
59
  if (fluidDensity <= 0)
54
- throw new Error('Fluid density must be positive');
60
+ throw new RangeError('Fluid density must be positive');
55
61
  if (fluidViscosity <= 0)
56
- throw new Error('Fluid viscosity must be positive');
62
+ throw new RangeError('Fluid viscosity must be positive');
57
63
  // Get pipe roughness
58
64
  let roughnessMm;
59
65
  if (pipeMaterial === 'custom') {
60
66
  if (customRoughness == null || customRoughness < 0) {
61
- throw new Error('Custom roughness must be provided and non-negative');
67
+ throw new RangeError('Custom roughness must be provided and non-negative');
62
68
  }
63
69
  roughnessMm = customRoughness;
64
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeFlow.js","sourceRoot":"","sources":["../../src/chemical/pipeFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeFlow.js","sourceRoot":"","sources":["../../src/chemical/pipeFlow.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare function getAggregateDensity(type: AggregateType): number;
13
13
  /**
14
14
  * Calculate how much area can be covered with a given volume at a specific depth
15
15
  *
16
+ * @throws {RangeError} Volume and depth must be greater than zero
16
17
  * @param volumeM3 - Volume in cubic meters
17
18
  * @param depthCm - Depth in centimeters
18
19
  * @returns Coverage area in square meters
@@ -26,6 +27,9 @@ export declare function aggregateCoverage(volumeM3: number, depthCm: number): nu
26
27
  * - Weight = volume × density
27
28
  * - Coverage area = length × width (footprint)
28
29
  *
30
+ * @throws {RangeError} All dimensions must be greater than zero
31
+ * @throws {RangeError} Custom density must be provided and greater than zero
32
+ * @throws {RangeError} Unknown aggregate type: {aggregateType}
29
33
  * @param input - Aggregate input parameters
30
34
  * @returns Aggregate calculation results
31
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnG;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAOjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG/D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmDhE"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnG;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAOjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG/D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmDhE"}
@@ -23,13 +23,14 @@ export function getAggregateDensity(type) {
23
23
  /**
24
24
  * Calculate how much area can be covered with a given volume at a specific depth
25
25
  *
26
+ * @throws {RangeError} Volume and depth must be greater than zero
26
27
  * @param volumeM3 - Volume in cubic meters
27
28
  * @param depthCm - Depth in centimeters
28
29
  * @returns Coverage area in square meters
29
30
  */
30
31
  export function aggregateCoverage(volumeM3, depthCm) {
31
32
  if (volumeM3 <= 0 || depthCm <= 0) {
32
- throw new Error('Volume and depth must be greater than zero');
33
+ throw new RangeError('Volume and depth must be greater than zero');
33
34
  }
34
35
  const depthM = depthCm / 100;
35
36
  return roundTo(volumeM3 / depthM, 2);
@@ -42,6 +43,9 @@ export function aggregateCoverage(volumeM3, depthCm) {
42
43
  * - Weight = volume × density
43
44
  * - Coverage area = length × width (footprint)
44
45
  *
46
+ * @throws {RangeError} All dimensions must be greater than zero
47
+ * @throws {RangeError} Custom density must be provided and greater than zero
48
+ * @throws {RangeError} Unknown aggregate type: {aggregateType}
45
49
  * @param input - Aggregate input parameters
46
50
  * @returns Aggregate calculation results
47
51
  */
@@ -49,7 +53,7 @@ export function aggregate(input) {
49
53
  const { length, width, depth, depthUnit, aggregateType, customDensity } = input;
50
54
  // Validate inputs
51
55
  if (length <= 0 || width <= 0 || depth <= 0) {
52
- throw new Error('All dimensions must be greater than zero');
56
+ throw new RangeError('All dimensions must be greater than zero');
53
57
  }
54
58
  // Convert depth to meters if in centimeters
55
59
  const depthInMeters = depthUnit === 'centimeters' ? depth / 100 : depth;
@@ -57,14 +61,14 @@ export function aggregate(input) {
57
61
  let density;
58
62
  if (aggregateType === 'custom') {
59
63
  if (customDensity === undefined || customDensity <= 0) {
60
- throw new Error('Custom density must be provided and greater than zero');
64
+ throw new RangeError('Custom density must be provided and greater than zero');
61
65
  }
62
66
  density = customDensity;
63
67
  }
64
68
  else {
65
69
  const aggregateInfo = AGGREGATE_DENSITIES.find(a => a.type === aggregateType);
66
70
  if (!aggregateInfo) {
67
- throw new Error(`Unknown aggregate type: ${aggregateType}`);
71
+ throw new RangeError(`Unknown aggregate type: ${aggregateType}`);
68
72
  }
69
73
  density = aggregateInfo.density;
70
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,13 @@ import type { MomentOfInertiaInput, MomentOfInertiaResult } from './types.js';
10
10
  * Formulas from: Timoshenko "Mechanics of Materials", AISC Steel Manual,
11
11
  * Roark's "Formulas for Stress and Strain"
12
12
  *
13
+ * @throws {RangeError} Dimensions must be positive
14
+ * @throws {RangeError} Diameter must be positive
15
+ * @throws {RangeError} Diameters must be positive
16
+ * @throws {RangeError} Inner dimensions must be smaller than outer
17
+ * @throws {RangeError} Inner diameter must be smaller than outer
18
+ * @throws {RangeError} Web thickness must be less than flange width
19
+ * @throws {RangeError} 2 x flange thickness must be less than total height
13
20
  * @param input - discriminated union by `shape`
14
21
  * @returns section properties
15
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"momentOfInertia.d.ts","sourceRoot":"","sources":["../../src/construction/momentOfInertia.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAiBlF"}
1
+ {"version":3,"file":"momentOfInertia.d.ts","sourceRoot":"","sources":["../../src/construction/momentOfInertia.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAiBlF"}
@@ -10,6 +10,13 @@ import { roundTo } from '../utils.js';
10
10
  * Formulas from: Timoshenko "Mechanics of Materials", AISC Steel Manual,
11
11
  * Roark's "Formulas for Stress and Strain"
12
12
  *
13
+ * @throws {RangeError} Dimensions must be positive
14
+ * @throws {RangeError} Diameter must be positive
15
+ * @throws {RangeError} Diameters must be positive
16
+ * @throws {RangeError} Inner dimensions must be smaller than outer
17
+ * @throws {RangeError} Inner diameter must be smaller than outer
18
+ * @throws {RangeError} Web thickness must be less than flange width
19
+ * @throws {RangeError} 2 x flange thickness must be less than total height
13
20
  * @param input - discriminated union by `shape`
14
21
  * @returns section properties
15
22
  */
@@ -46,7 +53,7 @@ function roundResult(r) {
46
53
  /** Solid Rectangle: I_x = bh³/12, I_y = hb³/12 */
47
54
  function calcRectangle(b, h) {
48
55
  if (b <= 0 || h <= 0)
49
- throw new Error('Dimensions must be positive');
56
+ throw new RangeError('Dimensions must be positive');
50
57
  const area = b * h;
51
58
  const Ix = (b * h * h * h) / 12;
52
59
  const Iy = (h * b * b * b) / 12;
@@ -62,7 +69,7 @@ function calcRectangle(b, h) {
62
69
  /** Solid Circle: I = πd⁴/64 */
63
70
  function calcCircle(d) {
64
71
  if (d <= 0)
65
- throw new Error('Diameter must be positive');
72
+ throw new RangeError('Diameter must be positive');
66
73
  const area = (Math.PI * d * d) / 4;
67
74
  const I = (Math.PI * d * d * d * d) / 64;
68
75
  const S = (Math.PI * d * d * d) / 32;
@@ -76,9 +83,9 @@ function calcCircle(d) {
76
83
  /** Hollow Rectangle (Box): I_x = (BH³ - bh³)/12 */
77
84
  function calcHollowRectangle(B, H, b, h) {
78
85
  if (B <= 0 || H <= 0 || b <= 0 || h <= 0)
79
- throw new Error('Dimensions must be positive');
86
+ throw new RangeError('Dimensions must be positive');
80
87
  if (b >= B || h >= H)
81
- throw new Error('Inner dimensions must be smaller than outer');
88
+ throw new RangeError('Inner dimensions must be smaller than outer');
82
89
  const area = B * H - b * h;
83
90
  const Ix = (B * H * H * H - b * h * h * h) / 12;
84
91
  const Iy = (H * B * B * B - h * b * b * b) / 12;
@@ -94,9 +101,9 @@ function calcHollowRectangle(B, H, b, h) {
94
101
  /** Hollow Circle (Pipe): I = π(D⁴-d⁴)/64 */
95
102
  function calcHollowCircle(D, d) {
96
103
  if (D <= 0 || d <= 0)
97
- throw new Error('Diameters must be positive');
104
+ throw new RangeError('Diameters must be positive');
98
105
  if (d >= D)
99
- throw new Error('Inner diameter must be smaller than outer');
106
+ throw new RangeError('Inner diameter must be smaller than outer');
100
107
  const area = (Math.PI * (D * D - d * d)) / 4;
101
108
  const I = (Math.PI * (D * D * D * D - d * d * d * d)) / 64;
102
109
  const S = I / (D / 2);
@@ -110,11 +117,11 @@ function calcHollowCircle(D, d) {
110
117
  /** I-Beam (symmetric): I_x = (B×H³ - (B-tw)×(H-2tf)³) / 12 */
111
118
  function calcIBeam(B, H, tw, tf) {
112
119
  if (B <= 0 || H <= 0 || tw <= 0 || tf <= 0)
113
- throw new Error('Dimensions must be positive');
120
+ throw new RangeError('Dimensions must be positive');
114
121
  if (tw >= B)
115
- throw new Error('Web thickness must be less than flange width');
122
+ throw new RangeError('Web thickness must be less than flange width');
116
123
  if (2 * tf >= H)
117
- throw new Error('2 × flange thickness must be less than total height');
124
+ throw new RangeError('2 × flange thickness must be less than total height');
118
125
  const hw = H - 2 * tf; // clear web height
119
126
  const area = 2 * B * tf + tw * hw;
120
127
  const Ix = (B * H * H * H - (B - tw) * hw * hw * hw) / 12;
@@ -137,7 +144,7 @@ function calcIBeam(B, H, tw, tf) {
137
144
  */
138
145
  function calcTSection(bf, tf, tw, hw) {
139
146
  if (bf <= 0 || tf <= 0 || tw <= 0 || hw <= 0)
140
- throw new Error('Dimensions must be positive');
147
+ throw new RangeError('Dimensions must be positive');
141
148
  const H = tf + hw; // total height
142
149
  const aFlange = bf * tf;
143
150
  const aWeb = tw * hw;
@@ -169,9 +176,9 @@ function calcTSection(bf, tf, tw, hw) {
169
176
  */
170
177
  function calcCChannel(bf, H, tw, tf) {
171
178
  if (bf <= 0 || H <= 0 || tw <= 0 || tf <= 0)
172
- throw new Error('Dimensions must be positive');
179
+ throw new RangeError('Dimensions must be positive');
173
180
  if (2 * tf >= H)
174
- throw new Error('2 × flange thickness must be less than total height');
181
+ throw new RangeError('2 × flange thickness must be less than total height');
175
182
  const hw = H - 2 * tf; // clear web height
176
183
  const area = 2 * bf * tf + hw * tw;
177
184
  // Strong axis (Ix) — symmetric about x-axis
@@ -1 +1 @@
1
- {"version":3,"file":"momentOfInertia.js","sourceRoot":"","sources":["../../src/construction/momentOfInertia.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"momentOfInertia.js","sourceRoot":"","sources":["../../src/construction/momentOfInertia.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,10 @@ export function roof(input) {
30
30
  const { rise, run, footprintLength, footprintWidth } = input;
31
31
  // Validate inputs
32
32
  if (run <= 0) {
33
- throw new Error('Run must be greater than zero');
33
+ throw new RangeError('Run must be greater than zero');
34
34
  }
35
35
  if (rise < 0) {
36
- throw new Error('Rise must be non-negative');
36
+ throw new RangeError('Rise must be non-negative');
37
37
  }
38
38
  // Calculate slope ratio (normalized to 12-unit run for pitch notation)
39
39
  const risePerTwelve = (rise / run) * 12;
@@ -1 +1 @@
1
- {"version":3,"file":"roof.js","sourceRoot":"","sources":["../../src/construction/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,SAAS,mBAAmB,CAAC,aAAqB;IAChD,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC7C,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE7D,kBAAkB;IAClB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,uEAAuE;IACvE,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;IAErD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,gCAAgC;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpD,uCAAuC;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,sBAAsB;IACtB,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAEzD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAE5D,OAAO;QACL,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,QAAQ;QACR,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"roof.js","sourceRoot":"","sources":["../../src/construction/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,SAAS,mBAAmB,CAAC,aAAqB;IAChD,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC7C,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE7D,kBAAkB;IAClB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IAED,uEAAuE;IACvE,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;IAErD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,gCAAgC;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpD,uCAAuC;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,sBAAsB;IACtB,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAEzD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAE5D,OAAO;QACL,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,QAAQ;QACR,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -3,7 +3,8 @@ import type { AwgInput, AwgResult } from './types.js';
3
3
  * Calculate AWG wire properties
4
4
  * AWG diameter formula: d(mm) = 0.127 × 92^((36-AWG)/39)
5
5
  * @param input - AWG gauge number, material, and temperature
6
- * @returns Wire properties or null if invalid input
6
+ * @returns Wire properties
7
+ * @throws {RangeError} If AWG is not between 0 and 40
7
8
  */
8
- export declare function awgProperties(input: AwgInput): AwgResult | null;
9
+ export declare function awgProperties(input: AwgInput): AwgResult;
9
10
  //# sourceMappingURL=awg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"awg.d.ts","sourceRoot":"","sources":["../../src/electronics/awg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AA0BnE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA2C/D"}
1
+ {"version":3,"file":"awg.d.ts","sourceRoot":"","sources":["../../src/electronics/awg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AA0BnE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CA0CxD"}