formulab 0.1.0 → 0.1.11

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 (164) hide show
  1. package/CHANGELOG.md +185 -1
  2. package/README.md +38 -31
  3. package/dist/automotive/gearRatio.d.ts +2 -2
  4. package/dist/automotive/gearRatio.d.ts.map +1 -1
  5. package/dist/automotive/gearRatio.js +1 -1
  6. package/dist/automotive/gearRatio.js.map +1 -1
  7. package/dist/automotive/index.d.ts +1 -1
  8. package/dist/automotive/index.d.ts.map +1 -1
  9. package/dist/automotive/types.d.ts +2 -2
  10. package/dist/automotive/types.d.ts.map +1 -1
  11. package/dist/chemical/injectionCycle.d.ts +3 -0
  12. package/dist/chemical/injectionCycle.d.ts.map +1 -1
  13. package/dist/chemical/injectionCycle.js +1 -4
  14. package/dist/chemical/injectionCycle.js.map +1 -1
  15. package/dist/chemical/ph.d.ts +3 -0
  16. package/dist/chemical/ph.d.ts.map +1 -1
  17. package/dist/chemical/ph.js +1 -4
  18. package/dist/chemical/ph.js.map +1 -1
  19. package/dist/chemical/reactor.d.ts +3 -0
  20. package/dist/chemical/reactor.d.ts.map +1 -1
  21. package/dist/chemical/reactor.js +1 -4
  22. package/dist/chemical/reactor.js.map +1 -1
  23. package/dist/chemical/shelfLife.d.ts.map +1 -1
  24. package/dist/chemical/shelfLife.js +1 -7
  25. package/dist/chemical/shelfLife.js.map +1 -1
  26. package/dist/electronics/awg.d.ts.map +1 -1
  27. package/dist/electronics/awg.js +1 -4
  28. package/dist/electronics/awg.js.map +1 -1
  29. package/dist/electronics/capacitor.d.ts +3 -0
  30. package/dist/electronics/capacitor.d.ts.map +1 -1
  31. package/dist/electronics/capacitor.js +1 -4
  32. package/dist/electronics/capacitor.js.map +1 -1
  33. package/dist/electronics/led.d.ts.map +1 -1
  34. package/dist/electronics/led.js +1 -4
  35. package/dist/electronics/led.js.map +1 -1
  36. package/dist/electronics/smt-takt.d.ts +3 -0
  37. package/dist/electronics/smt-takt.d.ts.map +1 -1
  38. package/dist/electronics/smt-takt.js +1 -4
  39. package/dist/electronics/smt-takt.js.map +1 -1
  40. package/dist/electronics/solder.d.ts +3 -0
  41. package/dist/electronics/solder.d.ts.map +1 -1
  42. package/dist/electronics/solder.js +1 -4
  43. package/dist/electronics/solder.js.map +1 -1
  44. package/dist/electronics/stencil.d.ts.map +1 -1
  45. package/dist/electronics/stencil.js +1 -4
  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 +1 -4
  49. package/dist/electronics/trace.js.map +1 -1
  50. package/dist/electronics/via.d.ts.map +1 -1
  51. package/dist/electronics/via.js +1 -4
  52. package/dist/electronics/via.js.map +1 -1
  53. package/dist/index.d.ts +7 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +7 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/logistics/eoq.d.ts.map +1 -1
  58. package/dist/logistics/eoq.js +11 -0
  59. package/dist/logistics/eoq.js.map +1 -1
  60. package/dist/metal/bearing.d.ts.map +1 -1
  61. package/dist/metal/bearing.js +1 -4
  62. package/dist/metal/bearing.js.map +1 -1
  63. package/dist/metal/bolt.d.ts.map +1 -1
  64. package/dist/metal/bolt.js +1 -4
  65. package/dist/metal/bolt.js.map +1 -1
  66. package/dist/metal/cutting.d.ts.map +1 -1
  67. package/dist/metal/cutting.js +1 -4
  68. package/dist/metal/cutting.js.map +1 -1
  69. package/dist/metal/cuttingStock.d.ts.map +1 -1
  70. package/dist/metal/cuttingStock.js +1 -4
  71. package/dist/metal/cuttingStock.js.map +1 -1
  72. package/dist/metal/gear.d.ts.map +1 -1
  73. package/dist/metal/gear.js +1 -4
  74. package/dist/metal/gear.js.map +1 -1
  75. package/dist/metal/hardness.d.ts.map +1 -1
  76. package/dist/metal/hardness.js +1 -4
  77. package/dist/metal/hardness.js.map +1 -1
  78. package/dist/metal/pressFit.d.ts.map +1 -1
  79. package/dist/metal/pressFit.js +1 -4
  80. package/dist/metal/pressFit.js.map +1 -1
  81. package/dist/metal/pressTonnage.d.ts +10 -4
  82. package/dist/metal/pressTonnage.d.ts.map +1 -1
  83. package/dist/metal/pressTonnage.js +199 -25
  84. package/dist/metal/pressTonnage.js.map +1 -1
  85. package/dist/metal/roughness.d.ts.map +1 -1
  86. package/dist/metal/roughness.js +1 -4
  87. package/dist/metal/roughness.js.map +1 -1
  88. package/dist/metal/screw.d.ts.map +1 -1
  89. package/dist/metal/screw.js +1 -4
  90. package/dist/metal/screw.js.map +1 -1
  91. package/dist/metal/spring.d.ts.map +1 -1
  92. package/dist/metal/spring.js +1 -4
  93. package/dist/metal/spring.js.map +1 -1
  94. package/dist/metal/tap.d.ts.map +1 -1
  95. package/dist/metal/tap.js +1 -4
  96. package/dist/metal/tap.js.map +1 -1
  97. package/dist/metal/thread.d.ts.map +1 -1
  98. package/dist/metal/thread.js +1 -4
  99. package/dist/metal/thread.js.map +1 -1
  100. package/dist/metal/tolerance.d.ts.map +1 -1
  101. package/dist/metal/tolerance.js +1 -4
  102. package/dist/metal/tolerance.js.map +1 -1
  103. package/dist/metal/types.d.ts +14 -0
  104. package/dist/metal/types.d.ts.map +1 -1
  105. package/dist/metal/vibration.d.ts.map +1 -1
  106. package/dist/metal/vibration.js +1 -4
  107. package/dist/metal/vibration.js.map +1 -1
  108. package/dist/metal/weldHeat.d.ts +2 -1
  109. package/dist/metal/weldHeat.d.ts.map +1 -1
  110. package/dist/metal/weldHeat.js +203 -44
  111. package/dist/metal/weldHeat.js.map +1 -1
  112. package/dist/quality/aql.d.ts.map +1 -1
  113. package/dist/quality/aql.js +1 -4
  114. package/dist/quality/aql.js.map +1 -1
  115. package/dist/quality/downtime.d.ts.map +1 -1
  116. package/dist/quality/downtime.js +1 -4
  117. package/dist/quality/downtime.js.map +1 -1
  118. package/dist/quality/dpmo.d.ts.map +1 -1
  119. package/dist/quality/dpmo.js +1 -4
  120. package/dist/quality/dpmo.js.map +1 -1
  121. package/dist/quality/lineBalancing.d.ts.map +1 -1
  122. package/dist/quality/lineBalancing.js +1 -4
  123. package/dist/quality/lineBalancing.js.map +1 -1
  124. package/dist/quality/mtbf.d.ts.map +1 -1
  125. package/dist/quality/mtbf.js +1 -4
  126. package/dist/quality/mtbf.js.map +1 -1
  127. package/dist/quality/oee.d.ts +1 -0
  128. package/dist/quality/oee.d.ts.map +1 -1
  129. package/dist/quality/oee.js +9 -0
  130. package/dist/quality/oee.js.map +1 -1
  131. package/dist/quality/ppk.d.ts.map +1 -1
  132. package/dist/quality/ppk.js +1 -4
  133. package/dist/quality/ppk.js.map +1 -1
  134. package/dist/quality/ppm.d.ts.map +1 -1
  135. package/dist/quality/ppm.js +1 -4
  136. package/dist/quality/ppm.js.map +1 -1
  137. package/dist/quality/rpn.d.ts.map +1 -1
  138. package/dist/quality/rpn.js +1 -4
  139. package/dist/quality/rpn.js.map +1 -1
  140. package/dist/quality/yield.d.ts.map +1 -1
  141. package/dist/quality/yield.js +1 -4
  142. package/dist/quality/yield.js.map +1 -1
  143. package/dist/safety/fallClearance.d.ts +12 -3
  144. package/dist/safety/fallClearance.d.ts.map +1 -1
  145. package/dist/safety/fallClearance.js +72 -17
  146. package/dist/safety/fallClearance.js.map +1 -1
  147. package/dist/safety/types.d.ts +6 -0
  148. package/dist/safety/types.d.ts.map +1 -1
  149. package/dist/utility/assignment.d.ts.map +1 -1
  150. package/dist/utility/assignment.js +1 -7
  151. package/dist/utility/assignment.js.map +1 -1
  152. package/dist/utility/index.d.ts +1 -1
  153. package/dist/utility/index.d.ts.map +1 -1
  154. package/dist/utility/index.js +1 -1
  155. package/dist/utility/index.js.map +1 -1
  156. package/dist/utility/unit.d.ts +1 -1
  157. package/dist/utility/unit.d.ts.map +1 -1
  158. package/dist/utility/unit.js +2 -8
  159. package/dist/utility/unit.js.map +1 -1
  160. package/dist/utils.d.ts +4 -1
  161. package/dist/utils.d.ts.map +1 -1
  162. package/dist/utils.js +9 -2
  163. package/dist/utils.js.map +1 -1
  164. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,190 @@ 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.1.11] - 2026-02-06
9
+
10
+ ### Enhanced
11
+ - **`fallClearance()`**: Complete rewrite with ANSI Z359.1/Z359.4 compliance
12
+ - Added `rescueClearance` parameter (default 0.9m per ANSI Z359.4)
13
+ - Added `obstacleHeight` parameter for elevated obstacle detection
14
+ - Added `freeSpaceRequired` and `clearanceAboveObstacle` outputs
15
+ - Added `warnings` array with validation against OSHA/ANSI limits
16
+ - Separated physical fall distance from safety factor (correct per standards)
17
+
18
+ - **`weldHeat()`**: Major enhancement with industry standards
19
+ - Added AWS D1.1:2020 Table 5.8 preheat requirements with CE×thickness interaction
20
+ - Added Rosenthal cooling time equations (t8/5) for thick and thin plate heat flow
21
+ - Added Yurioka HAZ hardness formula with cooling rate factor
22
+ - Added Carbon Equivalent Pcm formula for low-alloy steels (C < 0.18%)
23
+ - Added hydrogen control level determination
24
+ - Added source attribution for preheat recommendations
25
+
26
+ - **`pressTonnage()`**: Deep drawing enhancements with DIN 8584 basis
27
+ - Added Siebel formula for drawing force with friction and bending effects
28
+ - Added blank holder force calculation: F_bh = π/4 × (D² - d²) × p_bh
29
+ - Added multi-draw detection and estimation for deep draws (d/D < 0.55)
30
+ - Added `frictionCoefficient`, `blankHolderPressure`, `dieRadius` parameters
31
+ - Added `warnings` array for process risk assessment
32
+
33
+ ### Added
34
+ - **Test suite**: `pressTonnage` (19 test cases covering blanking, bending, enhanced drawing)
35
+ - Total test count: 1648 tests across 103 test files
36
+
37
+ ### Changed
38
+ - Formula review completed for high-risk domains (safety, metal)
39
+ - Three functions upgraded from 70-85% to 95%+ theoretical completeness
40
+
41
+ ## [0.1.10] - 2026-02-06
42
+
43
+ ### Added
44
+ - **Test suites (Cycle 14)**: 28개 함수 완전 테스트 추가 (437 test cases)
45
+ - metal: `bendAllowance`, `bolt`, `cuttingStock`, `flatPattern`, `gear`, `kFactorReverse`, `material`, `pressFit`, `pressTonnage`, `roughness`, `screw`, `spring`, `tap`, `thread`, `tolerance`, `vibration`, `weldHeat`, `welding`
46
+ - logistics: `containerFit`, `fillRate`, `freightClass`, `pallet3d`, `palletStack`, `pickTime`, `shipping`, `tsp`
47
+ - construction: `roof`, `stair`
48
+ - Total test count: 1622 tests across 102 test files
49
+
50
+ ### Changed
51
+ - Coverage dramatically improved: 62.09% → 98.11% lines (+36.02%)
52
+ - Branch coverage: 88.72% → 90.55%
53
+ - Function coverage: 89.63% → 100%
54
+ - All domains now have 95%+ line coverage
55
+ - **Milestone**: 100% function coverage achieved, 98%+ line coverage, library fully tested
56
+
57
+ ## [0.1.9] - 2025-02-05
58
+
59
+ ### Added
60
+ - **Test suites (Cycle 13)**: 25개 함수 대규모 테스트 추가 (488 test cases)
61
+ - quality: `aql`, `cycle`, `downtime`, `lineBalancing`, `ppk`
62
+ - chemical: `concentration`, `ph`, `reactor`, `shelfLife`, `injectionCycle`
63
+ - electronics: `reflow`, `resistor`, `smt-takt`, `solder`, `trace`, `capacitor`, `stencil`, `via`
64
+ - construction: `beamLoad`, `concreteMix`, `formwork`, `rebar`, `aggregate`, `brick`, `pert`
65
+ - Total test count: 1185 tests across 74 test files
66
+
67
+ ### Changed
68
+ - Coverage improved: 36.46% → 62.09% lines (+25.63%)
69
+ - quality 도메인: 98.68% lines
70
+ - chemical 도메인: 99.40% lines
71
+ - electronics 도메인: 98.37% lines
72
+ - construction 도메인: 83.30% lines
73
+ - **Milestone**: Line coverage 60% 돌파, 6개 도메인 90%+ 커버리지 달성
74
+
75
+ ## [0.1.8] - 2025-02-05
76
+
77
+ ### Added
78
+ - **Test suites (Cycle 11)**: `yieldCalc`, `rpn`, `ppm` (quality), `safetyStock`, `kanban` (logistics)
79
+ - **Test suites (Cycle 12)**: 17개 함수 대규모 테스트 추가
80
+ - safety: `fallClearance`, `noiseExposure`, `wbgtCalculate`, `havsCalculate`, `respiratorCalculate`
81
+ - food: `haccp`, `expiry`
82
+ - automotive: `batteryRuntime`, `evCharging`, `fuelEconomy`, `tireCompare`, `torque`, `power`
83
+ - energy: `compressedAirCost`, `motorEfficiency`, `pfCorrection`, `vfdSavings`
84
+ - Total test count: 697 tests across 49 test files
85
+
86
+ ### Changed
87
+ - Coverage improved: 20.74% → 36.46% lines (+15.72%)
88
+ - safety 도메인: 39.63% → 100% lines
89
+ - food 도메인: 45.45% → 100% lines
90
+ - automotive 도메인: 11.89% → 68.96% lines
91
+ - energy 도메인: 26.45% → 100% lines
92
+ - **Milestone**: Line coverage 35% 돌파, 4개 도메인 100% 커버리지 달성
93
+
94
+ ## [0.1.7] - 2025-02-05
95
+
96
+ ### Added
97
+ - **Test suites**: `cutting`, `bearing`, `hardness` (metal domain, 45 test cases)
98
+ - Total test count: 371 tests across 27 test files
99
+
100
+ ### Changed
101
+ - Coverage improved: 18.71% → 20.74% lines (+2.03%)
102
+ - metal 도메인: 4.78% → 11.54% lines
103
+ - **Milestone**: Line coverage 20% 돌파
104
+
105
+ ## [0.1.6] - 2025-02-05
106
+
107
+ ### Added
108
+ - **Test suites**: `calculateUnit`, `getUnitCategories`, `getUnitsForCategory` (unit conversion, 29 test cases)
109
+ - **Test suites**: `solveAssignment` (Hungarian algorithm, 12 test cases)
110
+ - Total test count: 326 tests across 24 test files
111
+
112
+ ### Changed
113
+ - Coverage improved: 15.21% → 18.71% lines (+3.5%)
114
+ - utility 도메인: 0% → 78.83% lines
115
+ - Branches coverage: 76.89% → 80.96%
116
+
117
+ ## [0.1.5] - 2025-02-05
118
+
119
+ ### Added
120
+ - **Test suites**: `ledResistor`, `awgProperties` (electronics domain, 33 test cases)
121
+ - **Test suites**: `calorie`, `nutrition` (food domain, 23 test cases)
122
+ - Total test count: 285 tests across 22 test files
123
+
124
+ ### Changed
125
+ - Coverage improved: 12.08% → 15.21% lines
126
+ - electronics 도메인: 0% → 18.77% lines
127
+ - food 도메인: 0% → 45.45% lines
128
+
129
+ ## [0.1.4] - 2025-02-05
130
+
131
+ ### Added
132
+ - **Test suites**: `slope`, `earthwork` (construction domain, 27 test cases)
133
+ - **Test suites**: `powerCost`, `carbonFootprint` (energy domain, 24 test cases)
134
+ - Total test count: 229 tests across 18 test files
135
+
136
+ ### Changed
137
+ - Coverage improved: 10.38% → 12.08% lines
138
+ - construction 도메인: 0% → 7.73% lines
139
+ - energy 도메인: 0% → 26.45% lines
140
+
141
+ ## [0.1.3] - 2025-02-05
142
+
143
+ ### Added
144
+ - **Test suites**: `dilution`, `batch` (chemical domain, 25 test cases)
145
+ - **Input validation tests**: `eoq` validation edge cases (5 test cases)
146
+ - Total test count: 178 tests across 14 test files
147
+
148
+ ### Fixed
149
+ - **`eoq()` input validation**: Returns zeros for invalid inputs (negative/zero demand, cost)
150
+ - **`gearRatio()` NaN bug**: `mechanicalAdvantage` now returns 0 when `inputTorque` is 0
151
+
152
+ ### Changed
153
+ - Coverage improved: 8.8% → 10.38% lines
154
+
155
+ ## [0.1.2] - 2025-02-05
156
+
157
+ ### Added
158
+ - **Test suites**: `eoq`, `dimWeight`, `gearRatio` (40 additional test cases)
159
+ - Total test count: 148 tests across 12 test files
160
+ - Coverage measurement infrastructure fully operational
161
+
162
+ ### Fixed
163
+ - **Coverage tool version mismatch**: Downgraded `@vitest/coverage-v8` from 4.x to 3.x to match vitest 3.x
164
+
165
+ ### Changed
166
+ - **Coverage thresholds**: Adjusted to realistic baseline (lines: 5%, functions: 50%, branches: 50%)
167
+ - Current coverage metrics: 8.8% lines, 62.38% functions, 72.25% branches
168
+
169
+ ## [0.1.1] - 2025-02-05
170
+
171
+ ### Fixed
172
+ - **Main entry point**: Added missing exports for 5 domains (metal, chemical, electronics, construction, energy)
173
+ - **`roundTo()` precision bug**: Fixed IEEE 754 floating-point rounding issues (e.g., `roundTo(0.615, 2)` now correctly returns `0.62`)
174
+ - **Massive duplicate code removal**: Consolidated `roundTo()` from 36 files to single source in `utils.ts`
175
+ - Removed from: quality (8 files), metal (15 files), electronics (8 files), chemical (3 files)
176
+ - **README documentation**: Updated all API examples to match actual implementation
177
+
178
+ ### Changed
179
+ - **BREAKING**: `GearInput` → `GearRatioInput` (automotive domain) to avoid collision with metal domain
180
+ - **BREAKING**: `GearResult` → `GearRatioResult` (automotive domain)
181
+ - **BREAKING**: `getCategories()` → `getUnitCategories()` (utility domain) to avoid collision with metal domain
182
+ - Removed `--passWithNoTests` flag from test script (tests are now mandatory)
183
+
184
+ ### Added
185
+ - Input validation for `oee()`: throws error when `goodCount > totalCount`
186
+ - Input validation for `oee()`: throws error when `goodCount < 0`
187
+ - Test suites: `oee`, `cpk`, `taktTime`, `dpmo`, `mtbf`, `metalWeight`, `cbm`, `nioshLifting`, `roundTo` (108 test cases)
188
+ - NaN/Infinity handling in `roundTo()`
189
+ - Vitest coverage configuration with thresholds
190
+ - `test:coverage` npm script
191
+
8
192
  ## [0.1.0] - 2025-02-05
9
193
 
10
194
  ### Added
@@ -134,7 +318,7 @@ Initial release with 103 calculation functions across 11 domains.
134
318
  #### Utility (3 functions)
135
319
  - `solveAssignment()` - Hungarian algorithm optimization
136
320
  - `calculateUnit()` - Unit conversion
137
- - `getCategories()` - Get unit categories
321
+ - `getUnitCategories()` - Get unit categories
138
322
 
139
323
  ### Technical Features
140
324
  - Zero dependencies
package/README.md CHANGED
@@ -35,28 +35,35 @@ import { oee, metalWeight, cbm } from 'formulab';
35
35
 
36
36
  // Calculate OEE (Overall Equipment Effectiveness)
37
37
  const result = oee({
38
- availability: 0.90,
39
- performance: 0.95,
40
- quality: 0.99
38
+ rawData: {
39
+ plannedTime: 480, // minutes (8 hours)
40
+ runTime: 432, // minutes (90% availability)
41
+ totalCount: 1000,
42
+ goodCount: 990, // 99% quality
43
+ idealCycleTime: 0.456, // minutes per piece (95% performance)
44
+ },
41
45
  });
42
- console.log(result.oee); // 0.846 (84.6%)
46
+ console.log(result.percentages.oee); // 84.6%
43
47
 
44
48
  // Calculate metal weight
45
49
  const weight = metalWeight({
46
- material: 'steel',
47
50
  shape: 'plate',
48
- dimensions: { length: 1000, width: 500, thickness: 10 },
51
+ materialName: 'steel',
52
+ length: 1000, // mm
53
+ width: 500, // mm
54
+ thickness: 10, // mm
49
55
  });
50
56
  console.log(weight.weight); // 39.25 kg
51
57
 
52
- // Calculate CBM
58
+ // Calculate CBM (Cubic Meter)
53
59
  const volume = cbm({
54
60
  length: 120,
55
61
  width: 80,
56
62
  height: 100,
57
- unit: 'cm'
63
+ quantity: 1,
64
+ unit: 'cm',
58
65
  });
59
- console.log(volume.cbm); // 0.96 m³
66
+ console.log(volume.totalCbm); // 0.96 m³
60
67
  ```
61
68
 
62
69
  ## Domains
@@ -261,7 +268,7 @@ import { solveAssignment, calculateUnit } from 'formulab/utility';
261
268
  |----------|-------------|
262
269
  | `solveAssignment()` | Hungarian algorithm optimization |
263
270
  | `calculateUnit()` | Unit conversion |
264
- | `getCategories()` | Get unit categories |
271
+ | `getUnitCategories()` | Get unit categories |
265
272
 
266
273
  ## API Examples
267
274
 
@@ -271,19 +278,19 @@ import { solveAssignment, calculateUnit } from 'formulab/utility';
271
278
  import { oee } from 'formulab/quality';
272
279
 
273
280
  const result = oee({
274
- plannedTime: 480, // minutes
275
- operatingTime: 420,
276
- totalPieces: 1000,
277
- goodPieces: 990,
278
- idealCycleTime: 0.5,
281
+ rawData: {
282
+ plannedTime: 480, // minutes
283
+ runTime: 420, // actual running time
284
+ totalCount: 1000, // total pieces produced
285
+ goodCount: 990, // good pieces
286
+ idealCycleTime: 0.4, // minutes per piece
287
+ },
279
288
  });
280
289
 
281
290
  console.log(result);
282
291
  // {
283
- // oee: 0.846,
284
- // availability: 0.875,
285
- // performance: 0.952,
286
- // quality: 0.99,
292
+ // factors: { availability: 0.875, performance: 0.952, quality: 0.99, oee: 0.825 },
293
+ // percentages: { availability: 87.5, performance: 95.2, quality: 99, oee: 82.5 }
287
294
  // }
288
295
  ```
289
296
 
@@ -293,22 +300,22 @@ console.log(result);
293
300
  import { nioshLifting } from 'formulab/safety';
294
301
 
295
302
  const result = nioshLifting({
296
- loadWeight: 23,
297
- horizontalDistance: 25,
298
- verticalLocation: 75,
299
- verticalTravel: 25,
300
- asymmetryAngle: 0,
301
- couplingQuality: 'good',
302
- frequency: 1,
303
- duration: 'moderate',
303
+ loadWeight: 23, // kg
304
+ horizontalDistance: 25, // cm
305
+ verticalDistance: 75, // cm (height at lift origin)
306
+ verticalTravel: 25, // cm (vertical travel distance)
307
+ asymmetryAngle: 0, // degrees
308
+ coupling: 'good', // 'good' | 'fair' | 'poor'
309
+ frequency: 1, // lifts per minute
310
+ duration: 'short', // 'short' | 'medium' | 'long'
304
311
  });
305
312
 
306
313
  console.log(result);
307
314
  // {
308
- // rwl: 23.0, // Recommended Weight Limit (kg)
309
- // liftingIndex: 1.0, // LI = Load / RWL
310
- // riskLevel: 'low',
311
- // multipliers: { hm: 1.0, vm: 1.0, dm: 0.93, am: 1.0, fm: 0.94, cm: 1.0 }
315
+ // rwl: 21.62, // Recommended Weight Limit (kg)
316
+ // liftingIndex: 1.06, // LI = Load / RWL
317
+ // riskLevel: 'moderate',
318
+ // hm: 1.0, vm: 1.0, dm: 1.0, am: 1.0, fm: 0.94, cm: 1.0
312
319
  // }
313
320
  ```
314
321
 
@@ -1,4 +1,4 @@
1
- import type { GearInput, GearResult } from './types.js';
1
+ import type { GearRatioInput, GearRatioResult } from './types.js';
2
2
  /**
3
3
  * Calculate gear ratio and output characteristics
4
4
  *
@@ -11,5 +11,5 @@ import type { GearInput, GearResult } from './types.js';
11
11
  * @param input - Gear parameters
12
12
  * @returns Gear result with ratio, speed, and torque
13
13
  */
14
- export declare function gearRatio(input: GearInput): GearResult;
14
+ export declare function gearRatio(input: GearRatioInput): GearRatioResult;
15
15
  //# sourceMappingURL=gearRatio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gearRatio.d.ts","sourceRoot":"","sources":["../../src/automotive/gearRatio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CA2BtD"}
1
+ {"version":3,"file":"gearRatio.d.ts","sourceRoot":"","sources":["../../src/automotive/gearRatio.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,CA2BhE"}
@@ -27,7 +27,7 @@ export function gearRatio(input) {
27
27
  const outputSpeed = inputSpeed / ratio;
28
28
  const outputTorque = inputTorque * ratio * efficiency;
29
29
  const speedReduction = ratio > 1;
30
- const mechanicalAdvantage = outputTorque / inputTorque;
30
+ const mechanicalAdvantage = inputTorque === 0 ? 0 : outputTorque / inputTorque;
31
31
  return {
32
32
  gearRatio: roundTo(ratio, 2),
33
33
  outputSpeed: roundTo(outputSpeed, 2),
@@ -1 +1 @@
1
- {"version":3,"file":"gearRatio.js","sourceRoot":"","sources":["../../src/automotive/gearRatio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEjF,wCAAwC;IACxC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,CAAC;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;IACvC,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,CAAC;IACtD,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,CAAC;IAEvD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc;QACd,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"gearRatio.js","sourceRoot":"","sources":["../../src/automotive/gearRatio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEjF,wCAAwC;IACxC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,CAAC;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;IACvC,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,CAAC;IACtD,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC;IAE/E,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc;QACd,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC"}
@@ -5,5 +5,5 @@ export { gearRatio } from './gearRatio.js';
5
5
  export { tireCompare } from './tireCompare.js';
6
6
  export { torque } from './torque.js';
7
7
  export { power } from './power.js';
8
- export type { BatteryInput, BatteryResult, ChargingInput, ChargingResult, FuelUnit, FuelInput, FuelResult, GearInput, GearResult, TireSpec, TireInput, TireData, TireResult, TorqueUnit, TorqueInput, TorqueResult, PowerUnit, PowerInput, PowerResult, } from './types.js';
8
+ export type { BatteryInput, BatteryResult, ChargingInput, ChargingResult, FuelUnit, FuelInput, FuelResult, GearRatioInput, GearRatioResult, TireSpec, TireInput, TireData, TireResult, TorqueUnit, TorqueInput, TorqueResult, PowerUnit, PowerInput, PowerResult, } from './types.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/automotive/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,YAAY,EAEV,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,cAAc,EAEd,QAAQ,EACR,SAAS,EACT,UAAU,EAEV,SAAS,EACT,UAAU,EAEV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EAEV,UAAU,EACV,WAAW,EACX,YAAY,EAEZ,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/automotive/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,YAAY,EAEV,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,cAAc,EAEd,QAAQ,EACR,SAAS,EACT,UAAU,EAEV,cAAc,EACd,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EAEV,UAAU,EACV,WAAW,EACX,YAAY,EAEZ,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -47,14 +47,14 @@ export interface FuelResult {
47
47
  /**
48
48
  * Gear Ratio Calculator Types
49
49
  */
50
- export interface GearInput {
50
+ export interface GearRatioInput {
51
51
  drivingTeeth: number;
52
52
  drivenTeeth: number;
53
53
  inputSpeed: number;
54
54
  inputTorque: number;
55
55
  efficiency: number;
56
56
  }
57
- export interface GearResult {
57
+ export interface GearRatioResult {
58
58
  gearRatio: number;
59
59
  outputSpeed: number;
60
60
  outputTorque: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automotive/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automotive/types.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,7 @@ import type { InjectionCycleInput, InjectionCycleResult } from './types.js';
16
16
  * @returns Cycle time breakdown and total
17
17
  */
18
18
  export declare function injectionCycle(input: InjectionCycleInput): InjectionCycleResult;
19
+ /**
20
+ * Round to specified decimal places
21
+ */
19
22
  //# sourceMappingURL=injectionCycle.d.ts.map
@@ -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;AA6E5G;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAqG/E"}
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,3 +1,4 @@
1
+ import { roundTo } from '../utils.js';
1
2
  const RESIN_PROPERTIES = {
2
3
  abs: {
3
4
  thermalDiffusivity: 0.12,
@@ -163,8 +164,4 @@ export function injectionCycle(input) {
163
164
  /**
164
165
  * Round to specified decimal places
165
166
  */
166
- function roundTo(value, decimals) {
167
- const factor = Math.pow(10, decimals);
168
- return Math.round(value * factor) / factor;
169
- }
170
167
  //# sourceMappingURL=injectionCycle.js.map
@@ -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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"}
@@ -10,4 +10,7 @@ import type { PhInput, PhResult } from './types.js';
10
10
  * @returns pH result with pKa, buffer capacity, and effective range
11
11
  */
12
12
  export declare function ph(input: PhInput): PhResult;
13
+ /**
14
+ * Round to specified decimal places
15
+ */
13
16
  //# sourceMappingURL=ph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ph.d.ts","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAyBlE;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAkD3C"}
1
+ {"version":3,"file":"ph.d.ts","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AA0BlE;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAkD3C;AAED;;GAEG"}
@@ -1,3 +1,4 @@
1
+ import { roundTo } from '../utils.js';
1
2
  /**
2
3
  * pKa values at 25C for common buffer systems
3
4
  */
@@ -76,8 +77,4 @@ export function ph(input) {
76
77
  /**
77
78
  * Round to specified decimal places
78
79
  */
79
- function roundTo(value, decimals) {
80
- const factor = Math.pow(10, decimals);
81
- return Math.round(value * factor) / factor;
82
- }
83
80
  //# sourceMappingURL=ph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,GAAoD;IAClE,OAAO,EAAE,IAAI,EAAK,wBAAwB;IAC1C,SAAS,EAAE,IAAI,EAAG,0BAA0B;IAC5C,IAAI,EAAE,IAAI,EAAQ,sBAAsB;IACxC,OAAO,EAAE,IAAI,EAAK,mBAAmB;IACrC,SAAS,EAAE,IAAI,EAAG,uBAAuB;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAoD;IAC/D,OAAO,EAAE,GAAG,EAAM,aAAa;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAM,sCAAsC;IACxD,OAAO,EAAE,CAAC,KAAK;IACf,SAAS,EAAE,CAAC,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7F,2CAA2C;IAC3C,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IAEnB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC;QAC3B,MAAM,GAAG,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAExC,qDAAqD;IACrD,MAAM,KAAK,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACjE,MAAM,cAAc,GAAG,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5F,oCAAoC;IACpC,MAAM,cAAc,GAAG;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;KACzB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,GAAoD;IAClE,OAAO,EAAE,IAAI,EAAK,wBAAwB;IAC1C,SAAS,EAAE,IAAI,EAAG,0BAA0B;IAC5C,IAAI,EAAE,IAAI,EAAQ,sBAAsB;IACxC,OAAO,EAAE,IAAI,EAAK,mBAAmB;IACrC,SAAS,EAAE,IAAI,EAAG,uBAAuB;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAoD;IAC/D,OAAO,EAAE,GAAG,EAAM,aAAa;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAM,sCAAsC;IACxD,OAAO,EAAE,CAAC,KAAK;IACf,SAAS,EAAE,CAAC,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7F,2CAA2C;IAC3C,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IAEnB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC;QAC3B,MAAM,GAAG,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAExC,qDAAqD;IACrD,MAAM,KAAK,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACjE,MAAM,cAAc,GAAG,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5F,oCAAoC;IACpC,MAAM,cAAc,GAAG;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;KACzB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG"}
@@ -16,4 +16,7 @@ import type { ReactorInput, ReactorResult } from './types.js';
16
16
  * @returns Reactor volumes and surface area
17
17
  */
18
18
  export declare function reactor(input: ReactorInput): ReactorResult;
19
+ /**
20
+ * Round to specified decimal places
21
+ */
19
22
  //# sourceMappingURL=reactor.d.ts.map
@@ -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;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAmC1D"}
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,CAmC1D;AAED;;GAEG"}
@@ -1,3 +1,4 @@
1
+ import { roundTo } from '../utils.js';
1
2
  /**
2
3
  * Calculate reactor vessel dimensions and volumes.
3
4
  *
@@ -50,8 +51,4 @@ export function reactor(input) {
50
51
  /**
51
52
  * Round to specified decimal places
52
53
  */
53
- function roundTo(value, decimals) {
54
- const factor = Math.pow(10, decimals);
55
- return Math.round(value * factor) / factor;
56
- }
57
54
  //# sourceMappingURL=reactor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAErD,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,MAAO,CAAC;QAClB,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;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}
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,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAErD,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,MAAO,CAAC;QAClB,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 +1 @@
1
- {"version":3,"file":"shelfLife.d.ts","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAAA,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;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmBhE"}
@@ -1,3 +1,4 @@
1
+ import { roundTo } from '../utils.js';
1
2
  /**
2
3
  * Estimate shelf life at different storage temperatures using Q10 rule.
3
4
  *
@@ -26,11 +27,4 @@ export function shelfLife(input) {
26
27
  tempDifference,
27
28
  };
28
29
  }
29
- /**
30
- * Round to specified decimal places
31
- */
32
- function roundTo(value, decimals) {
33
- const factor = Math.pow(10, decimals);
34
- return Math.round(value * factor) / factor;
35
- }
36
30
  //# sourceMappingURL=shelfLife.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shelfLife.js","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;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;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}
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 +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;AA6BnE;;;;;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;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA2C/D"}
@@ -1,10 +1,7 @@
1
+ import { roundTo } from '../utils.js';
1
2
  /**
2
3
  * Round to specified decimal places
3
4
  */
4
- function roundTo(value, decimals) {
5
- const factor = Math.pow(10, decimals);
6
- return Math.round(value * factor) / factor;
7
- }
8
5
  // Resistivity at 20°C in Ω·mm²/m
9
6
  const RESISTIVITY_20C = {
10
7
  copper: 0.01724,
@@ -1 +1 @@
1
- {"version":3,"file":"awg.js","sourceRoot":"","sources":["../../src/electronics/awg.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,iCAAiC;AACjC,MAAM,eAAe,GAAgC;IACnD,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,kCAAkC;AAClC,MAAM,gBAAgB,GAAgC;IACpD,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,eAAe,GAAgC;IACnD,MAAM,EAAE,GAAG,EAAM,QAAQ;IACzB,QAAQ,EAAE,GAAG,EAAI,sCAAsC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEvC,uBAAuB;IACvB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,wEAAwE;IACxE,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAEzC,uBAAuB;IACvB,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE9C,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;IAErD,gDAAgD;IAChD,8BAA8B;IAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC;IAE5D,wCAAwC;IACxC,MAAM,eAAe,GAAG,cAAc,GAAG,MAAM,CAAC;IAEhD,sCAAsC;IACtC,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC;IAEjD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"awg.js","sourceRoot":"","sources":["../../src/electronics/awg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH,iCAAiC;AACjC,MAAM,eAAe,GAAgC;IACnD,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,kCAAkC;AAClC,MAAM,gBAAgB,GAAgC;IACpD,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,eAAe,GAAgC;IACnD,MAAM,EAAE,GAAG,EAAM,QAAQ;IACzB,QAAQ,EAAE,GAAG,EAAI,sCAAsC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEvC,uBAAuB;IACvB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,wEAAwE;IACxE,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAEzC,uBAAuB;IACvB,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE9C,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;IAErD,gDAAgD;IAChD,8BAA8B;IAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC;IAE5D,wCAAwC;IACxC,MAAM,eAAe,GAAG,cAAc,GAAG,MAAM,CAAC;IAEhD,sCAAsC;IACtC,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC;IAEjD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import type { CapacitorCodeInput, CapacitorCodeResult } from './types.js';
2
+ /**
3
+ * Round to specified decimal places
4
+ */
2
5
  /**
3
6
  * Decode a 3-digit capacitor code to capacitance values
4
7
  * @param input - The 3-digit capacitor code (e.g., "104")
@@ -1 +1 @@
1
- {"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/electronics/capacitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAU1E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAyC9E"}
1
+ {"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/electronics/capacitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG1E;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAyC9E"}
@@ -1,10 +1,7 @@
1
+ import { roundTo } from '../utils.js';
1
2
  /**
2
3
  * Round to specified decimal places
3
4
  */
4
- function roundTo(value, decimals) {
5
- const factor = Math.pow(10, decimals);
6
- return Math.round(value * factor) / factor;
7
- }
8
5
  /**
9
6
  * Decode a 3-digit capacitor code to capacitance values
10
7
  * @param input - The 3-digit capacitor code (e.g., "104")
@@ -1 +1 @@
1
- {"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/electronics/capacitor.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,qCAAqC;IACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,4CAA4C;IAC5C,MAAM,kBAAkB,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;IAEhD,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAEjD,sBAAsB;IACtB,MAAM,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAErD,uBAAuB;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,SAAS,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,SAAS,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,UAAU,IAAI,CAAC;IAChC,CAAC;IAED,OAAO;QACL,UAAU;QACV,UAAU;QACV,WAAW;QACX,SAAS;QACT,kBAAkB;QAClB,UAAU;KACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/electronics/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,qCAAqC;IACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,4CAA4C;IAC5C,MAAM,kBAAkB,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;IAEhD,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAEjD,sBAAsB;IACtB,MAAM,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAErD,uBAAuB;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,SAAS,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,SAAS,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,UAAU,IAAI,CAAC;IAChC,CAAC;IAED,OAAO;QACL,UAAU;QACV,UAAU;QACV,WAAW;QACX,SAAS;QACT,kBAAkB;QAClB,UAAU;KACX,CAAC;AACJ,CAAC"}