formulab 0.38.0 → 0.40.0

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 (90) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/chemical/flowControl.d.ts +1 -0
  3. package/dist/chemical/flowControl.d.ts.map +1 -1
  4. package/dist/chemical/flowControl.js +10 -0
  5. package/dist/chemical/flowControl.js.map +1 -1
  6. package/dist/chemical/injectionCycle.d.ts +1 -0
  7. package/dist/chemical/injectionCycle.d.ts.map +1 -1
  8. package/dist/chemical/injectionCycle.js +8 -1
  9. package/dist/chemical/injectionCycle.js.map +1 -1
  10. package/dist/chemical/reactor.d.ts +1 -0
  11. package/dist/chemical/reactor.d.ts.map +1 -1
  12. package/dist/chemical/reactor.js +5 -0
  13. package/dist/chemical/reactor.js.map +1 -1
  14. package/dist/chemical/shelfLife.d.ts +1 -0
  15. package/dist/chemical/shelfLife.d.ts.map +1 -1
  16. package/dist/chemical/shelfLife.js +5 -0
  17. package/dist/chemical/shelfLife.js.map +1 -1
  18. package/dist/energy/insulationRoi.d.ts +2 -2
  19. package/dist/energy/insulationRoi.d.ts.map +1 -1
  20. package/dist/energy/insulationRoi.js +8 -2
  21. package/dist/energy/insulationRoi.js.map +1 -1
  22. package/dist/logistics/containerFit.d.ts +1 -0
  23. package/dist/logistics/containerFit.d.ts.map +1 -1
  24. package/dist/logistics/containerFit.js +5 -0
  25. package/dist/logistics/containerFit.js.map +1 -1
  26. package/dist/logistics/pallet3d.d.ts +1 -0
  27. package/dist/logistics/pallet3d.d.ts.map +1 -1
  28. package/dist/logistics/pallet3d.js +7 -0
  29. package/dist/logistics/pallet3d.js.map +1 -1
  30. package/dist/logistics/palletStack.d.ts +1 -0
  31. package/dist/logistics/palletStack.d.ts.map +1 -1
  32. package/dist/logistics/palletStack.js +5 -0
  33. package/dist/logistics/palletStack.js.map +1 -1
  34. package/dist/logistics/safetyStock.d.ts +1 -0
  35. package/dist/logistics/safetyStock.d.ts.map +1 -1
  36. package/dist/logistics/safetyStock.js +5 -0
  37. package/dist/logistics/safetyStock.js.map +1 -1
  38. package/dist/machining/cycleTimeEstimator.d.ts +1 -0
  39. package/dist/machining/cycleTimeEstimator.d.ts.map +1 -1
  40. package/dist/machining/cycleTimeEstimator.js +4 -0
  41. package/dist/machining/cycleTimeEstimator.js.map +1 -1
  42. package/dist/machining/sineBarHeight.d.ts +1 -0
  43. package/dist/machining/sineBarHeight.d.ts.map +1 -1
  44. package/dist/machining/sineBarHeight.js +10 -0
  45. package/dist/machining/sineBarHeight.js.map +1 -1
  46. package/dist/machining/toolDeflection.d.ts +1 -0
  47. package/dist/machining/toolDeflection.d.ts.map +1 -1
  48. package/dist/machining/toolDeflection.js +3 -0
  49. package/dist/machining/toolDeflection.js.map +1 -1
  50. package/dist/math.d.ts +26 -0
  51. package/dist/math.d.ts.map +1 -1
  52. package/dist/math.js +19 -0
  53. package/dist/math.js.map +1 -1
  54. package/dist/metal/minBendRadius.d.ts +1 -1
  55. package/dist/metal/pressTonnage.d.ts +3 -1
  56. package/dist/metal/pressTonnage.d.ts.map +1 -1
  57. package/dist/metal/pressTonnage.js +15 -1
  58. package/dist/metal/pressTonnage.js.map +1 -1
  59. package/dist/metal/vibration.d.ts +1 -0
  60. package/dist/metal/vibration.d.ts.map +1 -1
  61. package/dist/metal/vibration.js +13 -0
  62. package/dist/metal/vibration.js.map +1 -1
  63. package/dist/quality/index.d.ts +1 -1
  64. package/dist/quality/index.d.ts.map +1 -1
  65. package/dist/quality/oee.d.ts +4 -2
  66. package/dist/quality/oee.d.ts.map +1 -1
  67. package/dist/quality/oee.js +30 -15
  68. package/dist/quality/oee.js.map +1 -1
  69. package/dist/quality/types.d.ts +12 -0
  70. package/dist/quality/types.d.ts.map +1 -1
  71. package/dist/quality/weibull.d.ts +1 -0
  72. package/dist/quality/weibull.d.ts.map +1 -1
  73. package/dist/quality/weibull.js +16 -0
  74. package/dist/quality/weibull.js.map +1 -1
  75. package/dist/quality/yield.d.ts +3 -1
  76. package/dist/quality/yield.d.ts.map +1 -1
  77. package/dist/quality/yield.js +17 -25
  78. package/dist/quality/yield.js.map +1 -1
  79. package/dist/safety/index.d.ts +1 -1
  80. package/dist/safety/index.d.ts.map +1 -1
  81. package/dist/safety/nioshLifting.d.ts +2 -1
  82. package/dist/safety/nioshLifting.d.ts.map +1 -1
  83. package/dist/safety/nioshLifting.js +14 -3
  84. package/dist/safety/nioshLifting.js.map +1 -1
  85. package/dist/safety/noiseExposure.d.ts.map +1 -1
  86. package/dist/safety/noiseExposure.js +13 -9
  87. package/dist/safety/noiseExposure.js.map +1 -1
  88. package/dist/safety/types.d.ts +15 -0
  89. package/dist/safety/types.d.ts.map +1 -1
  90. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,62 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.40.0] - 2026-09-15
9
+
10
+ ### Added
11
+
12
+ - **`quality/oee()`, `quality/yieldCalc()` and `safety/nioshLifting()` now return `cascade`** — the
13
+ product each result is built from, expanded into running steps: OEE as 100 % reduced by
14
+ availability, then performance, then quality; RTY as 100 % reduced by each step's first pass
15
+ yield; RWL as the 23 kg load constant reduced by HM, VM, DM, AM, FM and CM in equation order.
16
+ Each step carries its `multiplier`, its signed `change` and the `remaining` value, unrounded, so
17
+ the changes add up exactly to the last `remaining`. A product cannot be charted as a waterfall
18
+ by subtracting each factor's loss from the base — 95 % × 90 % × 98 % is 83.79 %, not 83 % — and
19
+ consumers that derived the steps themselves did it from rounded percentages. New type:
20
+ `CascadeStep`.
21
+
22
+ ### Changed
23
+
24
+ - **`oee()` throws `RangeError` for a non-positive `plannedTime`, `runTime`, `idealCycleTime` or
25
+ `totalCount`, and for `runTime` greater than `plannedTime`.** `ERRORS.md` already documented a
26
+ throw for `plannedTime ≤ 0`, but the function returned an all-zero result instead, so an empty
27
+ or impossible shift read as a measured OEE of 0 %. **Breaking** for callers relying on the zeros.
28
+ - **`yieldCalc()` throws `RangeError` for an empty step list and for a step whose `total` is not
29
+ positive or whose `good` is negative or exceeds `total`.** It previously returned zeros for the
30
+ first two and a first pass yield above 100 % for the last. **Breaking** for callers relying on the
31
+ zeros.
32
+
33
+ ## [0.39.0] - 2026-09-15
34
+
35
+ ### Added
36
+
37
+ - **`safety/noiseExposure()`** now returns `contributions` — one entry per input exposure, in
38
+ input order, with its allowable time and its share of the dose. The shares add up to `dose`
39
+ by construction. An exposure below 80 dB is listed with `allowableTime: null` and a share of
40
+ 0, the same rule the dose already applied. Consumers that charted each exposure's share had
41
+ to repeat the OSHA formula to get it, and a repeat that missed the 80 dB cutoff drew bars
42
+ that no longer summed to the reported dose. New type: `NoiseExposureContribution`.
43
+
44
+ ### Fixed
45
+
46
+ - **Seventeen functions returned `NaN` or `Infinity` for degenerate inputs**, against the
47
+ documented "no silent NaN/Infinity" policy. They now throw `RangeError` naming the input,
48
+ only for the inputs that actually produced a non-finite value:
49
+ `flowControl()` (gas: molecularWeight ≤ 0, temperature at or below absolute zero),
50
+ `injectionCycle()` (density ≤ 0, injectionRate ≤ 0), `reactor()` (cylindrical height ≤ 0),
51
+ `shelfLife()` (q10 ≤ 0), `insulationRoi()` (surfaceCoefficient or boilerEfficiency ≤ 0),
52
+ `containerFit()` / `palletStack()` (a cargo or box dimension ≤ 0), `pallet3d()` (box weight ≤ 0),
53
+ `safetyStock()` (avgLeadTime < 0), `cycleTimeEstimator()` (rapid rate ≤ 0),
54
+ `sineBarHeight()` (bar length ≤ 0, or a block increment that rounds the stack past the bar),
55
+ `toolDeflection()` (Young's modulus ≤ 0), `vibration()` (custom E, density or G ≤ 0),
56
+ `pressTonnage()` (thickness ≤ 0, die opening ≤ 0, drawing with punch diameter ≤ 0) and
57
+ `weibull()` (fewer than 2 times, a time ≤ 0, all times identical, missionTime < 0).
58
+ The earlier audit changed only top-level fields; these sat in nested values or in functions
59
+ it had no fixture for. `ERRORS.md` rows for these functions now describe what the source does —
60
+ several claimed throws the code never made (`weibull()` "< 3 data points", `sineBarHeight()`
61
+ "angle out of range"), and three were listed as `safe`.
62
+ - Because inputs that used to return a value now throw, this is a contract change, not a patch.
63
+
8
64
  ## [0.38.0] - 2026-09-09
9
65
 
10
66
  ### Fixed
@@ -9,6 +9,7 @@ import type { FlowControlInput, FlowControlResult } from './types.js';
9
9
  *
10
10
  * @reference ISA-75.01.01-2012 — Flow equations for sizing control valves
11
11
  * @reference IEC 60534-2-1 — Industrial-process control valves
12
+ * @throws RangeError if inletPressure or fluidDensity is not greater than 0; for gas/steam, if molecularWeight is given and not greater than 0, or temperature is not above -273.15 °C
12
13
  */
13
14
  export declare function flowControl(input: FlowControlInput): FlowControlResult;
14
15
  //# sourceMappingURL=flowControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowControl.d.ts","sourceRoot":"","sources":["../../src/chemical/flowControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2EtE"}
1
+ {"version":3,"file":"flowControl.d.ts","sourceRoot":"","sources":["../../src/chemical/flowControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAoFtE"}
@@ -9,6 +9,7 @@ import { roundTo } from '../utils.js';
9
9
  *
10
10
  * @reference ISA-75.01.01-2012 — Flow equations for sizing control valves
11
11
  * @reference IEC 60534-2-1 — Industrial-process control valves
12
+ * @throws RangeError if inletPressure or fluidDensity is not greater than 0; for gas/steam, if molecularWeight is given and not greater than 0, or temperature is not above -273.15 °C
12
13
  */
13
14
  export function flowControl(input) {
14
15
  const { flowRate, inletPressure, outletPressure, fluidDensity, fluidType, temperature = 20, molecularWeight, specificHeatRatio = 1.4, } = input;
@@ -20,6 +21,15 @@ export function flowControl(input) {
20
21
  if (!(fluidDensity > 0)) {
21
22
  throw new RangeError('fluidDensity must be greater than 0');
22
23
  }
24
+ // Gas sizing takes the square root of MW × absolute temperature.
25
+ if (fluidType !== 'liquid') {
26
+ if (molecularWeight !== undefined && !(molecularWeight > 0)) {
27
+ throw new RangeError('molecularWeight must be greater than 0');
28
+ }
29
+ if (!(temperature > -273.15)) {
30
+ throw new RangeError('temperature must be above absolute zero (-273.15 °C)');
31
+ }
32
+ }
23
33
  const pressureDrop = inletPressure - outletPressure; // kPa
24
34
  // Reference density: water = 999 kg/m³
25
35
  const sg = fluidDensity / 999;
@@ -1 +1 @@
1
- {"version":3,"file":"flowControl.js","sourceRoot":"","sources":["../../src/chemical/flowControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowControl.js","sourceRoot":"","sources":["../../src/chemical/flowControl.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import type { InjectionCycleInput, InjectionCycleResult } from './types.js';
14
14
  *
15
15
  * @param input - Injection cycle input with resin type and dimensions
16
16
  * @returns Cycle time breakdown and total
17
+ * @throws RangeError if the resin density is not greater than 0, or injectionRate is given and not greater than 0
17
18
  */
18
19
  export declare function injectionCycle(input: InjectionCycleInput): InjectionCycleResult;
19
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"injectionCycle.d.ts","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAkC,MAAM,YAAY,CAAC;AA8E5G;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAqG/E;AAED;;GAEG"}
1
+ {"version":3,"file":"injectionCycle.d.ts","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAkC,MAAM,YAAY,CAAC;AA8E5G;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA2G/E;AAED;;GAEG"}
@@ -72,6 +72,7 @@ const RESIN_PROPERTIES = {
72
72
  *
73
73
  * @param input - Injection cycle input with resin type and dimensions
74
74
  * @returns Cycle time breakdown and total
75
+ * @throws RangeError if the resin density is not greater than 0, or injectionRate is given and not greater than 0
75
76
  */
76
77
  export function injectionCycle(input) {
77
78
  const { resin, wallThickness, shotWeight, injectionRate, moldOpenCloseTime = 3, ejectionTime = 0.5, } = input;
@@ -110,7 +111,13 @@ export function injectionCycle(input) {
110
111
  }
111
112
  }
112
113
  // Calculate fill time
113
- // Volume = shot weight / density (g / (g/cm^3) = cm^3)
114
+ // Volume = shot weight / density (g / (g/cm^3) = cm^3); fill time then divides by the rate.
115
+ if (!(props.density > 0)) {
116
+ throw new RangeError('density must be greater than 0');
117
+ }
118
+ if (injectionRate !== undefined && !(injectionRate > 0)) {
119
+ throw new RangeError('injectionRate must be greater than 0');
120
+ }
114
121
  const volume = shotWeight / props.density;
115
122
  // Default injection rate: estimate based on typical machine (~50-150 cm^3/s)
116
123
  const effectiveInjectionRate = injectionRate ?? 80;
@@ -1 +1 @@
1
- {"version":3,"file":"injectionCycle.js","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injectionCycle.js","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import type { ReactorInput, ReactorResult } from './types.js';
14
14
  *
15
15
  * @param input - Reactor dimensions and fill ratio
16
16
  * @returns Reactor volumes and surface area
17
+ * @throws RangeError if diameter is not greater than 0, or a cylindrical height is not greater than 0
17
18
  */
18
19
  export declare function reactor(input: ReactorInput): ReactorResult;
19
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAuC1D;AAED;;GAEG"}
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA2C1D;AAED;;GAEG"}
@@ -14,6 +14,7 @@ import { roundTo } from '../utils.js';
14
14
  *
15
15
  * @param input - Reactor dimensions and fill ratio
16
16
  * @returns Reactor volumes and surface area
17
+ * @throws RangeError if diameter is not greater than 0, or a cylindrical height is not greater than 0
17
18
  */
18
19
  export function reactor(input) {
19
20
  const { shape, diameter, fillRatio } = input;
@@ -27,6 +28,10 @@ export function reactor(input) {
27
28
  if (shape === 'cylindrical') {
28
29
  // Cylindrical reactor
29
30
  const h = input.height;
31
+ // A negative height can cancel the end caps and leave zero surface area to divide by.
32
+ if (!(h > 0)) {
33
+ throw new RangeError('height must be greater than 0');
34
+ }
30
35
  // V = PI * r^2 * h
31
36
  totalVolume = Math.PI * radius * radius * h;
32
37
  // Surface Area = 2 * PI * r^2 (ends) + 2 * PI * r * h (lateral)
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7C,kFAAkF;IAClF,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5B,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAmB,CAAC;IAExB,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,sBAAsB;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,mBAAmB;QACnB,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QAC5C,gEAAgE;QAChE,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,uBAAuB;QACvB,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3D,8BAA8B;QAC9B,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,MAAM,iBAAiB,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,gBAAgB;IAC9D,MAAM,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC;IACjD,MAAM,oBAAoB,GAAG,WAAW,GAAG,WAAW,CAAC;IAEvD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;GAEG"}
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7C,kFAAkF;IAClF,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5B,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAmB,CAAC;IAExB,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,sBAAsB;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,sFAAsF;QACtF,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;QACxD,CAAC;QACD,mBAAmB;QACnB,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QAC5C,gEAAgE;QAChE,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,uBAAuB;QACvB,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3D,8BAA8B;QAC9B,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,MAAM,iBAAiB,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,gBAAgB;IAC9D,MAAM,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC;IACjD,MAAM,oBAAoB,GAAG,WAAW,GAAG,WAAW,CAAC;IAEvD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;GAEG"}
@@ -10,6 +10,7 @@ import type { ShelfLifeInput, ShelfLifeResult } from './types.js';
10
10
  *
11
11
  * @param input - Shelf life input with reference values and Q10 factor
12
12
  * @returns Estimated shelf life at target temperature
13
+ * @throws RangeError if q10 is not greater than 0
13
14
  */
14
15
  export declare function shelfLife(input: ShelfLifeInput): ShelfLifeResult;
15
16
  //# sourceMappingURL=shelfLife.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shelfLife.d.ts","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmBhE"}
1
+ {"version":3,"file":"shelfLife.d.ts","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAwBhE"}
@@ -10,9 +10,14 @@ import { roundTo } from '../utils.js';
10
10
  *
11
11
  * @param input - Shelf life input with reference values and Q10 factor
12
12
  * @returns Estimated shelf life at target temperature
13
+ * @throws RangeError if q10 is not greater than 0
13
14
  */
14
15
  export function shelfLife(input) {
15
16
  const { shelfLifeAtRef, refTemp, targetTemp, q10 } = input;
17
+ // Q10 is raised to a possibly negative or fractional power.
18
+ if (!(q10 > 0)) {
19
+ throw new RangeError('q10 must be greater than 0');
20
+ }
16
21
  const tempDifference = refTemp - targetTemp;
17
22
  // Acceleration factor: Q10 ^ (deltaT / 10)
18
23
  // If target is colder, factor > 1 (longer shelf life)
@@ -1 +1 @@
1
- {"version":3,"file":"shelfLife.js","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAE3D,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;IAE5C,2CAA2C;IAC3C,sDAAsD;IACtD,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAE/D,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,OAAO;QACP,UAAU;QACV,cAAc;KACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"shelfLife.js","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAE3D,4DAA4D;IAC5D,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;IAE5C,2CAA2C;IAC3C,sDAAsD;IACtD,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAE/D,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,OAAO;QACP,UAAU;QACV,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -9,8 +9,8 @@ import type { InsulationRoiInput, InsulationRoiResult } from './types.js';
9
9
  *
10
10
  * @param input - Insulation parameters
11
11
  * @returns Insulation ROI result with heat savings and payback
12
- * @throws RangeError if surfaceArea, tempDifference, insulationK, or
13
- * insulationThickness is not greater than 0
12
+ * @throws RangeError if surfaceArea, tempDifference, insulationK, insulationThickness,
13
+ * surfaceCoefficient or boilerEfficiency is not greater than 0
14
14
  */
15
15
  export declare function insulationRoi(input: InsulationRoiInput): InsulationRoiResult;
16
16
  //# sourceMappingURL=insulationRoi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insulationRoi.d.ts","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAwD5E"}
1
+ {"version":3,"file":"insulationRoi.d.ts","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA8D5E"}
@@ -9,8 +9,8 @@ import { roundTo } from '../utils.js';
9
9
  *
10
10
  * @param input - Insulation parameters
11
11
  * @returns Insulation ROI result with heat savings and payback
12
- * @throws RangeError if surfaceArea, tempDifference, insulationK, or
13
- * insulationThickness is not greater than 0
12
+ * @throws RangeError if surfaceArea, tempDifference, insulationK, insulationThickness,
13
+ * surfaceCoefficient or boilerEfficiency is not greater than 0
14
14
  */
15
15
  export function insulationRoi(input) {
16
16
  const { surfaceArea, tempDifference, insulationK, insulationThickness, surfaceCoefficient = 10, operatingHours, energyCost, boilerEfficiency = 0.8, installationCost, } = input;
@@ -26,6 +26,12 @@ export function insulationRoi(input) {
26
26
  if (insulationThickness <= 0) {
27
27
  throw new RangeError('insulationThickness must be greater than 0');
28
28
  }
29
+ if (!(surfaceCoefficient > 0)) {
30
+ throw new RangeError('surfaceCoefficient must be greater than 0');
31
+ }
32
+ if (!(boilerEfficiency > 0)) {
33
+ throw new RangeError('boilerEfficiency must be greater than 0');
34
+ }
29
35
  // Bare surface heat loss: Q = h × A × ΔT (W)
30
36
  const bareHeatLoss = surfaceCoefficient * surfaceArea * tempDifference;
31
37
  // Insulated heat loss: Q = A × ΔT / (1/h + thickness_m / k)
@@ -1 +1 @@
1
- {"version":3,"file":"insulationRoi.js","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GAAG,EAAE,EACvB,cAAc,EACd,UAAU,EACV,gBAAgB,GAAG,GAAG,EACtB,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACrE,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,kBAAkB,GAAG,WAAW,GAAG,cAAc,CAAC;IAEvE,4DAA4D;IAC5D,MAAM,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAAC,CAAC,SAAS;IACxD,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,iBAAiB,CAAC;IAE7E,MAAM,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnD,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,gBAAgB,CAAC;IACjF,MAAM,eAAe,GAAG,iBAAiB,GAAG,UAAU,CAAC;IAEvD,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAClF,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC;IACrD,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"insulationRoi.js","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GAAG,EAAE,EACvB,cAAc,EACd,UAAU,EACV,gBAAgB,GAAG,GAAG,EACtB,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,kBAAkB,GAAG,WAAW,GAAG,cAAc,CAAC;IAEvE,4DAA4D;IAC5D,MAAM,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAAC,CAAC,SAAS;IACxD,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,iBAAiB,CAAC;IAE7E,MAAM,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnD,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,gBAAgB,CAAC;IACjF,MAAM,eAAe,GAAG,iBAAiB,GAAG,UAAU,CAAC;IAEvD,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAClF,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC;IACrD,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACzE,CAAC;AACJ,CAAC"}
@@ -7,6 +7,7 @@ import type { ContainerFitInput, ContainerFitResult } from './types.js';
7
7
  *
8
8
  * @param input - Container and cargo dimensions
9
9
  * @returns Number of units that fit
10
+ * @throws RangeError if any cargo dimension is not greater than 0
10
11
  */
11
12
  export declare function containerFit(input: ContainerFitInput): ContainerFitResult;
12
13
  //# sourceMappingURL=containerFit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"containerFit.d.ts","sourceRoot":"","sources":["../../src/logistics/containerFit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAiCxF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAwCzE"}
1
+ {"version":3,"file":"containerFit.d.ts","sourceRoot":"","sources":["../../src/logistics/containerFit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAiCxF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA6CzE"}
@@ -35,9 +35,14 @@ function getOrientations(l, w, h, allowRotation) {
35
35
  *
36
36
  * @param input - Container and cargo dimensions
37
37
  * @returns Number of units that fit
38
+ * @throws RangeError if any cargo dimension is not greater than 0
38
39
  */
39
40
  export function containerFit(input) {
40
41
  const { container, cargo, allowRotation } = input;
42
+ // Each container dimension is divided by a cargo dimension.
43
+ if (!(cargo.length > 0) || !(cargo.width > 0) || !(cargo.height > 0)) {
44
+ throw new RangeError('cargo length, width and height must be greater than 0');
45
+ }
41
46
  // Get all possible orientations
42
47
  const orientations = getOrientations(cargo.length, cargo.width, cargo.height, allowRotation);
43
48
  let bestResult = {
@@ -1 +1 @@
1
- {"version":3,"file":"containerFit.js","sourceRoot":"","sources":["../../src/logistics/containerFit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containerFit.js","sourceRoot":"","sources":["../../src/logistics/containerFit.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import type { Pallet3DInput, Pallet3DResult } from './types.js';
11
11
  *
12
12
  * @param input - Pallet specifications and box types
13
13
  * @returns Placement results with metrics
14
+ * @throws RangeError if any box weight is not greater than 0
14
15
  */
15
16
  export declare function pallet3d(input: Pallet3DInput): Pallet3DResult;
16
17
  //# sourceMappingURL=pallet3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pallet3d.d.ts","sourceRoot":"","sources":["../../src/logistics/pallet3d.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EAIf,MAAM,YAAY,CAAC;AAoVpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAsJ7D"}
1
+ {"version":3,"file":"pallet3d.d.ts","sourceRoot":"","sources":["../../src/logistics/pallet3d.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EAIf,MAAM,YAAY,CAAC;AAoVpB;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA6J7D"}
@@ -257,6 +257,7 @@ function calculateFloorCoverage(placedBoxes) {
257
257
  *
258
258
  * @param input - Pallet specifications and box types
259
259
  * @returns Placement results with metrics
260
+ * @throws RangeError if any box weight is not greater than 0
260
261
  */
261
262
  export function pallet3d(input) {
262
263
  const warnings = [];
@@ -272,6 +273,12 @@ export function pallet3d(input) {
272
273
  warnings: ['No boxes provided'],
273
274
  };
274
275
  }
276
+ // The centre of gravity is weighted by box weight; weightless boxes would divide 0 by 0.
277
+ for (const box of input.boxes) {
278
+ if (!(box.weight > 0)) {
279
+ throw new RangeError('box weight must be greater than 0');
280
+ }
281
+ }
275
282
  if (input.boxes.length > 5) {
276
283
  warnings.push('Maximum 5 box types supported, extra types ignored');
277
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pallet3d.js","sourceRoot":"","sources":["../../src/logistics/pallet3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pallet3d.js","sourceRoot":"","sources":["../../src/logistics/pallet3d.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import type { PalletStackInput, PalletStackResult } from './types.js';
7
7
  *
8
8
  * @param input - Pallet dimensions, box dimensions, and constraints
9
9
  * @returns Stacking configuration
10
+ * @throws RangeError if any box dimension is not greater than 0
10
11
  */
11
12
  export declare function palletStack(input: PalletStackInput): PalletStackResult;
12
13
  //# sourceMappingURL=palletStack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"palletStack.d.ts","sourceRoot":"","sources":["../../src/logistics/palletStack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAoBtF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA+CtE"}
1
+ {"version":3,"file":"palletStack.d.ts","sourceRoot":"","sources":["../../src/logistics/palletStack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAoBtF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAoDtE"}
@@ -22,9 +22,14 @@ function getFloorOrientations(l, w, h, allowRotation) {
22
22
  *
23
23
  * @param input - Pallet dimensions, box dimensions, and constraints
24
24
  * @returns Stacking configuration
25
+ * @throws RangeError if any box dimension is not greater than 0
25
26
  */
26
27
  export function palletStack(input) {
27
28
  const { pallet, box, maxHeight, allowRotation } = input;
29
+ // Each pallet dimension and the stack height are divided by a box dimension.
30
+ if (!(box.length > 0) || !(box.width > 0) || !(box.height > 0)) {
31
+ throw new RangeError('box length, width and height must be greater than 0');
32
+ }
28
33
  // Get all possible orientations
29
34
  const orientations = getFloorOrientations(box.length, box.width, box.height, allowRotation);
30
35
  let bestResult = {
@@ -1 +1 @@
1
- {"version":3,"file":"palletStack.js","sourceRoot":"","sources":["../../src/logistics/palletStack.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,aAAsB;IACnF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,mDAAmD;IACnD,OAAO;QACL,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAClC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KACnC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAExD,gCAAgC;IAChC,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE5F,IAAI,UAAU,GAAsB;QAClC,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;KAC9E,CAAC;IAEF,6CAA6C;IAC7C,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,iDAAiD;QACjD,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACjE,SAAS;QACX,CAAC;QAED,6CAA6C;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;QAElC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;QAE1C,gDAAgD;QAChD,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YACvC,UAAU,GAAG;gBACX,aAAa;gBACb,MAAM;gBACN,UAAU;gBACV,eAAe,EAAE,MAAM;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"palletStack.js","sourceRoot":"","sources":["../../src/logistics/palletStack.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,aAAsB;IACnF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,mDAAmD;IACnD,OAAO;QACL,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAClC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KACnC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAExD,6EAA6E;IAC7E,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAC9E,CAAC;IAED,gCAAgC;IAChC,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE5F,IAAI,UAAU,GAAsB;QAClC,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;KAC9E,CAAC;IAEF,6CAA6C;IAC7C,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,iDAAiD;QACjD,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACjE,SAAS;QACX,CAAC;QAED,6CAA6C;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;QAElC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;QAE1C,gDAAgD;QAChD,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YACvC,UAAU,GAAG;gBACX,aAAa;gBACb,MAAM;gBACN,UAAU;gBACV,eAAe,EAAE,MAAM;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -19,6 +19,7 @@ import type { SafetyStockInput, SafetyStockResult } from './types.js';
19
19
  *
20
20
  * @param input - Demand and lead time parameters with service level
21
21
  * @returns Safety stock, reorder point, and related metrics
22
+ * @throws RangeError if serviceLevel is not strictly between 0 and 1, or avgLeadTime is negative
22
23
  */
23
24
  export declare function safetyStock(input: SafetyStockInput): SafetyStockResult;
24
25
  //# sourceMappingURL=safetyStock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAiCtE"}
1
+ {"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAsCtE"}
@@ -20,6 +20,7 @@ import { normalInvCDF } from '../math.js';
20
20
  *
21
21
  * @param input - Demand and lead time parameters with service level
22
22
  * @returns Safety stock, reorder point, and related metrics
23
+ * @throws RangeError if serviceLevel is not strictly between 0 and 1, or avgLeadTime is negative
23
24
  */
24
25
  export function safetyStock(input) {
25
26
  const { avgDemand, demandStdDev, avgLeadTime, leadTimeStdDev, serviceLevel } = input;
@@ -29,6 +30,10 @@ export function safetyStock(input) {
29
30
  throw new RangeError('serviceLevel must be greater than 0 and less than 1');
30
31
  }
31
32
  // Calculate z-score for the desired service level
33
+ // Lead-time demand variance scales with the lead time and is square-rooted.
34
+ if (!(avgLeadTime >= 0)) {
35
+ throw new RangeError('avgLeadTime must not be negative');
36
+ }
32
37
  const zScore = normalInvCDF(serviceLevel);
33
38
  // Average demand during lead time
34
39
  const demandDuringLeadTime = avgDemand * avgLeadTime;
@@ -1 +1 @@
1
- {"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErF,qFAAqF;IACrF,uFAAuF;IACvF,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAC9E,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE1C,kCAAkC;IAClC,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;IAErD,uDAAuD;IACvD,sCAAsC;IACtC,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;IAE7C,8CAA8C;IAC9C,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErF,qFAAqF;IACrF,uFAAuF;IACvF,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAC9E,CAAC;IAED,kDAAkD;IAClD,4EAA4E;IAC5E,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE1C,kCAAkC;IAClC,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;IAErD,uDAAuD;IACvD,sCAAsC;IACtC,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;IAE7C,8CAA8C;IAC9C,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -13,6 +13,7 @@ import type { CycleTimeEstimatorInput, CycleTimeEstimatorResult } from './types.
13
13
  *
14
14
  * @param input - Cycle time parameters
15
15
  * @returns CycleTimeEstimatorResult with time breakdown and utilization
16
+ * @throws RangeError if a rapid move has a rapid rate that is not greater than 0
16
17
  */
17
18
  export declare function cycleTimeEstimator(input: CycleTimeEstimatorInput): CycleTimeEstimatorResult;
18
19
  //# sourceMappingURL=cycleTimeEstimator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cycleTimeEstimator.d.ts","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAIpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA+C3F"}
1
+ {"version":3,"file":"cycleTimeEstimator.d.ts","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAIpF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAkD3F"}
@@ -14,6 +14,7 @@ const DEFAULT_RAPID_RATE = 10000; // mm/min
14
14
  *
15
15
  * @param input - Cycle time parameters
16
16
  * @returns CycleTimeEstimatorResult with time breakdown and utilization
17
+ * @throws RangeError if a rapid move has a rapid rate that is not greater than 0
17
18
  */
18
19
  export function cycleTimeEstimator(input) {
19
20
  const { operations, setupTime = 0, partCount = 1 } = input;
@@ -32,6 +33,9 @@ export function cycleTimeEstimator(input) {
32
33
  case 'rapid': {
33
34
  if (op.distance !== undefined) {
34
35
  const rate = op.rapidRate ?? DEFAULT_RAPID_RATE;
36
+ if (!(rate > 0)) {
37
+ throw new RangeError('rapidRate must be greater than 0');
38
+ }
35
39
  rapidTime += (op.distance / rate) * 60;
36
40
  }
37
41
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"cycleTimeEstimator.js","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,SAAS;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAE3D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAG,UAAU;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IACjC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU;IAClC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IAEjC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC9E,WAAW,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;gBAC7E,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAChD,SAAS,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,cAAc,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IACvE,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cycleTimeEstimator.js","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,SAAS;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAE3D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAG,UAAU;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IACjC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU;IAClC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IAEjC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC9E,WAAW,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;gBAC7E,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAChD,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;wBAChB,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC;oBAC3D,CAAC;oBACD,SAAS,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,cAAc,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IACvE,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}