formulab 0.1.0 → 0.5.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 (450) hide show
  1. package/CHANGELOG.md +283 -2
  2. package/README.md +147 -48
  3. package/dist/automotive/brakingDistance.d.ts +16 -0
  4. package/dist/automotive/brakingDistance.d.ts.map +1 -0
  5. package/dist/automotive/brakingDistance.js +47 -0
  6. package/dist/automotive/brakingDistance.js.map +1 -0
  7. package/dist/automotive/gearRatio.d.ts +2 -2
  8. package/dist/automotive/gearRatio.d.ts.map +1 -1
  9. package/dist/automotive/gearRatio.js +1 -1
  10. package/dist/automotive/gearRatio.js.map +1 -1
  11. package/dist/automotive/index.d.ts +2 -1
  12. package/dist/automotive/index.d.ts.map +1 -1
  13. package/dist/automotive/index.js +1 -0
  14. package/dist/automotive/index.js.map +1 -1
  15. package/dist/automotive/types.d.ts +18 -2
  16. package/dist/automotive/types.d.ts.map +1 -1
  17. package/dist/battery/batteryPackConfig.d.ts +10 -0
  18. package/dist/battery/batteryPackConfig.d.ts.map +1 -0
  19. package/dist/battery/batteryPackConfig.js +28 -0
  20. package/dist/battery/batteryPackConfig.js.map +1 -0
  21. package/dist/battery/bmsBalancing.d.ts +11 -0
  22. package/dist/battery/bmsBalancing.d.ts.map +1 -0
  23. package/dist/battery/bmsBalancing.js +47 -0
  24. package/dist/battery/bmsBalancing.js.map +1 -0
  25. package/dist/battery/cRate.d.ts +10 -0
  26. package/dist/battery/cRate.d.ts.map +1 -0
  27. package/dist/battery/cRate.js +29 -0
  28. package/dist/battery/cRate.js.map +1 -0
  29. package/dist/battery/chargingProfile.d.ts +11 -0
  30. package/dist/battery/chargingProfile.d.ts.map +1 -0
  31. package/dist/battery/chargingProfile.js +38 -0
  32. package/dist/battery/chargingProfile.js.map +1 -0
  33. package/dist/battery/cycleLife.d.ts +11 -0
  34. package/dist/battery/cycleLife.d.ts.map +1 -0
  35. package/dist/battery/cycleLife.js +70 -0
  36. package/dist/battery/cycleLife.js.map +1 -0
  37. package/dist/battery/energyDensity.d.ts +10 -0
  38. package/dist/battery/energyDensity.d.ts.map +1 -0
  39. package/dist/battery/energyDensity.js +20 -0
  40. package/dist/battery/energyDensity.js.map +1 -0
  41. package/dist/battery/index.d.ts +12 -0
  42. package/dist/battery/index.d.ts.map +1 -0
  43. package/dist/battery/index.js +12 -0
  44. package/dist/battery/index.js.map +1 -0
  45. package/dist/battery/internalResistance.d.ts +11 -0
  46. package/dist/battery/internalResistance.d.ts.map +1 -0
  47. package/dist/battery/internalResistance.js +18 -0
  48. package/dist/battery/internalResistance.js.map +1 -0
  49. package/dist/battery/selfDischarge.d.ts +10 -0
  50. package/dist/battery/selfDischarge.d.ts.map +1 -0
  51. package/dist/battery/selfDischarge.js +17 -0
  52. package/dist/battery/selfDischarge.js.map +1 -0
  53. package/dist/battery/stateOfHealth.d.ts +11 -0
  54. package/dist/battery/stateOfHealth.d.ts.map +1 -0
  55. package/dist/battery/stateOfHealth.js +33 -0
  56. package/dist/battery/stateOfHealth.js.map +1 -0
  57. package/dist/battery/thermalRunaway.d.ts +11 -0
  58. package/dist/battery/thermalRunaway.d.ts.map +1 -0
  59. package/dist/battery/thermalRunaway.js +28 -0
  60. package/dist/battery/thermalRunaway.js.map +1 -0
  61. package/dist/battery/types.d.ts +175 -0
  62. package/dist/battery/types.d.ts.map +1 -0
  63. package/dist/battery/types.js +5 -0
  64. package/dist/battery/types.js.map +1 -0
  65. package/dist/chemical/dilution.d.ts.map +1 -1
  66. package/dist/chemical/dilution.js +21 -24
  67. package/dist/chemical/dilution.js.map +1 -1
  68. package/dist/chemical/heatTransfer.d.ts +16 -0
  69. package/dist/chemical/heatTransfer.d.ts.map +1 -0
  70. package/dist/chemical/heatTransfer.js +85 -0
  71. package/dist/chemical/heatTransfer.js.map +1 -0
  72. package/dist/chemical/index.d.ts +3 -1
  73. package/dist/chemical/index.d.ts.map +1 -1
  74. package/dist/chemical/index.js +2 -0
  75. package/dist/chemical/index.js.map +1 -1
  76. package/dist/chemical/injectionCycle.d.ts +3 -0
  77. package/dist/chemical/injectionCycle.d.ts.map +1 -1
  78. package/dist/chemical/injectionCycle.js +1 -4
  79. package/dist/chemical/injectionCycle.js.map +1 -1
  80. package/dist/chemical/ph.d.ts +3 -0
  81. package/dist/chemical/ph.d.ts.map +1 -1
  82. package/dist/chemical/ph.js +1 -4
  83. package/dist/chemical/ph.js.map +1 -1
  84. package/dist/chemical/pipeFlow.d.ts +17 -0
  85. package/dist/chemical/pipeFlow.d.ts.map +1 -0
  86. package/dist/chemical/pipeFlow.js +112 -0
  87. package/dist/chemical/pipeFlow.js.map +1 -0
  88. package/dist/chemical/reactor.d.ts +3 -0
  89. package/dist/chemical/reactor.d.ts.map +1 -1
  90. package/dist/chemical/reactor.js +3 -6
  91. package/dist/chemical/reactor.js.map +1 -1
  92. package/dist/chemical/shelfLife.d.ts.map +1 -1
  93. package/dist/chemical/shelfLife.js +1 -7
  94. package/dist/chemical/shelfLife.js.map +1 -1
  95. package/dist/chemical/types.d.ts +82 -10
  96. package/dist/chemical/types.d.ts.map +1 -1
  97. package/dist/construction/index.d.ts +2 -1
  98. package/dist/construction/index.d.ts.map +1 -1
  99. package/dist/construction/index.js +1 -0
  100. package/dist/construction/index.js.map +1 -1
  101. package/dist/construction/momentOfInertia.d.ts +17 -0
  102. package/dist/construction/momentOfInertia.d.ts.map +1 -0
  103. package/dist/construction/momentOfInertia.js +204 -0
  104. package/dist/construction/momentOfInertia.js.map +1 -0
  105. package/dist/construction/pert.d.ts.map +1 -1
  106. package/dist/construction/pert.js +1 -17
  107. package/dist/construction/pert.js.map +1 -1
  108. package/dist/construction/types.d.ts +50 -0
  109. package/dist/construction/types.d.ts.map +1 -1
  110. package/dist/electronics/awg.d.ts.map +1 -1
  111. package/dist/electronics/awg.js +1 -4
  112. package/dist/electronics/awg.js.map +1 -1
  113. package/dist/electronics/capacitor.d.ts +3 -0
  114. package/dist/electronics/capacitor.d.ts.map +1 -1
  115. package/dist/electronics/capacitor.js +1 -4
  116. package/dist/electronics/capacitor.js.map +1 -1
  117. package/dist/electronics/index.d.ts +2 -1
  118. package/dist/electronics/index.d.ts.map +1 -1
  119. package/dist/electronics/index.js +1 -0
  120. package/dist/electronics/index.js.map +1 -1
  121. package/dist/electronics/led.d.ts.map +1 -1
  122. package/dist/electronics/led.js +1 -4
  123. package/dist/electronics/led.js.map +1 -1
  124. package/dist/electronics/ohmsLaw.d.ts +12 -0
  125. package/dist/electronics/ohmsLaw.d.ts.map +1 -0
  126. package/dist/electronics/ohmsLaw.js +69 -0
  127. package/dist/electronics/ohmsLaw.js.map +1 -0
  128. package/dist/electronics/smt-takt.d.ts +3 -0
  129. package/dist/electronics/smt-takt.d.ts.map +1 -1
  130. package/dist/electronics/smt-takt.js +1 -4
  131. package/dist/electronics/smt-takt.js.map +1 -1
  132. package/dist/electronics/solder.d.ts +3 -0
  133. package/dist/electronics/solder.d.ts.map +1 -1
  134. package/dist/electronics/solder.js +1 -4
  135. package/dist/electronics/solder.js.map +1 -1
  136. package/dist/electronics/stencil.d.ts.map +1 -1
  137. package/dist/electronics/stencil.js +1 -4
  138. package/dist/electronics/stencil.js.map +1 -1
  139. package/dist/electronics/trace.d.ts.map +1 -1
  140. package/dist/electronics/trace.js +1 -4
  141. package/dist/electronics/trace.js.map +1 -1
  142. package/dist/electronics/types.d.ts +24 -0
  143. package/dist/electronics/types.d.ts.map +1 -1
  144. package/dist/electronics/via.d.ts.map +1 -1
  145. package/dist/electronics/via.js +1 -4
  146. package/dist/electronics/via.js.map +1 -1
  147. package/dist/energy/carbonFootprint.d.ts.map +1 -1
  148. package/dist/energy/carbonFootprint.js +2 -1
  149. package/dist/energy/carbonFootprint.js.map +1 -1
  150. package/dist/energy/index.d.ts +2 -1
  151. package/dist/energy/index.d.ts.map +1 -1
  152. package/dist/energy/index.js +1 -0
  153. package/dist/energy/index.js.map +1 -1
  154. package/dist/energy/powerCost.d.ts.map +1 -1
  155. package/dist/energy/powerCost.js +2 -1
  156. package/dist/energy/powerCost.js.map +1 -1
  157. package/dist/energy/solarOutput.d.ts +14 -0
  158. package/dist/energy/solarOutput.d.ts.map +1 -0
  159. package/dist/energy/solarOutput.js +54 -0
  160. package/dist/energy/solarOutput.js.map +1 -0
  161. package/dist/energy/types.d.ts +20 -0
  162. package/dist/energy/types.d.ts.map +1 -1
  163. package/dist/environmental/emissionsIntensity.d.ts +11 -0
  164. package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
  165. package/dist/environmental/emissionsIntensity.js +26 -0
  166. package/dist/environmental/emissionsIntensity.js.map +1 -0
  167. package/dist/environmental/energyIntensity.d.ts +11 -0
  168. package/dist/environmental/energyIntensity.d.ts.map +1 -0
  169. package/dist/environmental/energyIntensity.js +19 -0
  170. package/dist/environmental/energyIntensity.js.map +1 -0
  171. package/dist/environmental/esgSummary.d.ts +11 -0
  172. package/dist/environmental/esgSummary.d.ts.map +1 -0
  173. package/dist/environmental/esgSummary.js +39 -0
  174. package/dist/environmental/esgSummary.js.map +1 -0
  175. package/dist/environmental/gwpCalculator.d.ts +11 -0
  176. package/dist/environmental/gwpCalculator.d.ts.map +1 -0
  177. package/dist/environmental/gwpCalculator.js +31 -0
  178. package/dist/environmental/gwpCalculator.js.map +1 -0
  179. package/dist/environmental/index.d.ts +12 -0
  180. package/dist/environmental/index.d.ts.map +1 -0
  181. package/dist/environmental/index.js +12 -0
  182. package/dist/environmental/index.js.map +1 -0
  183. package/dist/environmental/productCarbonFootprint.d.ts +11 -0
  184. package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
  185. package/dist/environmental/productCarbonFootprint.js +29 -0
  186. package/dist/environmental/productCarbonFootprint.js.map +1 -0
  187. package/dist/environmental/scope1Emissions.d.ts +11 -0
  188. package/dist/environmental/scope1Emissions.d.ts.map +1 -0
  189. package/dist/environmental/scope1Emissions.js +35 -0
  190. package/dist/environmental/scope1Emissions.js.map +1 -0
  191. package/dist/environmental/scope2Emissions.d.ts +11 -0
  192. package/dist/environmental/scope2Emissions.d.ts.map +1 -0
  193. package/dist/environmental/scope2Emissions.js +49 -0
  194. package/dist/environmental/scope2Emissions.js.map +1 -0
  195. package/dist/environmental/scope3Emissions.d.ts +11 -0
  196. package/dist/environmental/scope3Emissions.d.ts.map +1 -0
  197. package/dist/environmental/scope3Emissions.js +36 -0
  198. package/dist/environmental/scope3Emissions.js.map +1 -0
  199. package/dist/environmental/types.d.ts +165 -0
  200. package/dist/environmental/types.d.ts.map +1 -0
  201. package/dist/environmental/types.js +5 -0
  202. package/dist/environmental/types.js.map +1 -0
  203. package/dist/environmental/vocEmissions.d.ts +11 -0
  204. package/dist/environmental/vocEmissions.d.ts.map +1 -0
  205. package/dist/environmental/vocEmissions.js +23 -0
  206. package/dist/environmental/vocEmissions.js.map +1 -0
  207. package/dist/environmental/waterFootprint.d.ts +11 -0
  208. package/dist/environmental/waterFootprint.d.ts.map +1 -0
  209. package/dist/environmental/waterFootprint.js +21 -0
  210. package/dist/environmental/waterFootprint.js.map +1 -0
  211. package/dist/index.d.ts +10 -2
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +10 -2
  214. package/dist/index.js.map +1 -1
  215. package/dist/logistics/cbm.d.ts +7 -2
  216. package/dist/logistics/cbm.d.ts.map +1 -1
  217. package/dist/logistics/cbm.js +7 -2
  218. package/dist/logistics/cbm.js.map +1 -1
  219. package/dist/logistics/eoq.d.ts.map +1 -1
  220. package/dist/logistics/eoq.js +11 -0
  221. package/dist/logistics/eoq.js.map +1 -1
  222. package/dist/logistics/fillRate.d.ts.map +1 -1
  223. package/dist/logistics/fillRate.js +1 -17
  224. package/dist/logistics/fillRate.js.map +1 -1
  225. package/dist/logistics/safetyStock.d.ts.map +1 -1
  226. package/dist/logistics/safetyStock.js +2 -55
  227. package/dist/logistics/safetyStock.js.map +1 -1
  228. package/dist/machining/boltCircle.d.ts +16 -0
  229. package/dist/machining/boltCircle.d.ts.map +1 -0
  230. package/dist/machining/boltCircle.js +36 -0
  231. package/dist/machining/boltCircle.js.map +1 -0
  232. package/dist/machining/boringBarDeflection.d.ts +17 -0
  233. package/dist/machining/boringBarDeflection.d.ts.map +1 -0
  234. package/dist/machining/boringBarDeflection.js +54 -0
  235. package/dist/machining/boringBarDeflection.js.map +1 -0
  236. package/dist/machining/cuspHeight.d.ts +15 -0
  237. package/dist/machining/cuspHeight.d.ts.map +1 -0
  238. package/dist/machining/cuspHeight.js +23 -0
  239. package/dist/machining/cuspHeight.js.map +1 -0
  240. package/dist/machining/cycleTimeEstimator.d.ts +18 -0
  241. package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
  242. package/dist/machining/cycleTimeEstimator.js +62 -0
  243. package/dist/machining/cycleTimeEstimator.js.map +1 -0
  244. package/dist/machining/effectiveDiameter.d.ts +17 -0
  245. package/dist/machining/effectiveDiameter.d.ts.map +1 -0
  246. package/dist/machining/effectiveDiameter.js +24 -0
  247. package/dist/machining/effectiveDiameter.js.map +1 -0
  248. package/dist/machining/gaugeBlockStack.d.ts +16 -0
  249. package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
  250. package/dist/machining/gaugeBlockStack.js +138 -0
  251. package/dist/machining/gaugeBlockStack.js.map +1 -0
  252. package/dist/machining/index.d.ts +14 -0
  253. package/dist/machining/index.d.ts.map +1 -0
  254. package/dist/machining/index.js +14 -0
  255. package/dist/machining/index.js.map +1 -0
  256. package/dist/machining/radialChipThinning.d.ts +18 -0
  257. package/dist/machining/radialChipThinning.d.ts.map +1 -0
  258. package/dist/machining/radialChipThinning.js +30 -0
  259. package/dist/machining/radialChipThinning.js.map +1 -0
  260. package/dist/machining/sineBarHeight.d.ts +16 -0
  261. package/dist/machining/sineBarHeight.d.ts.map +1 -0
  262. package/dist/machining/sineBarHeight.js +32 -0
  263. package/dist/machining/sineBarHeight.js.map +1 -0
  264. package/dist/machining/threadOverWires.d.ts +21 -0
  265. package/dist/machining/threadOverWires.d.ts.map +1 -0
  266. package/dist/machining/threadOverWires.js +54 -0
  267. package/dist/machining/threadOverWires.js.map +1 -0
  268. package/dist/machining/toolDeflection.d.ts +16 -0
  269. package/dist/machining/toolDeflection.d.ts.map +1 -0
  270. package/dist/machining/toolDeflection.js +36 -0
  271. package/dist/machining/toolDeflection.js.map +1 -0
  272. package/dist/machining/triangleSolver.d.ts +21 -0
  273. package/dist/machining/triangleSolver.d.ts.map +1 -0
  274. package/dist/machining/triangleSolver.js +120 -0
  275. package/dist/machining/triangleSolver.js.map +1 -0
  276. package/dist/machining/truePosition.d.ts +19 -0
  277. package/dist/machining/truePosition.d.ts.map +1 -0
  278. package/dist/machining/truePosition.js +44 -0
  279. package/dist/machining/truePosition.js.map +1 -0
  280. package/dist/machining/types.d.ts +201 -0
  281. package/dist/machining/types.d.ts.map +1 -0
  282. package/dist/machining/types.js +2 -0
  283. package/dist/machining/types.js.map +1 -0
  284. package/dist/math.d.ts +26 -0
  285. package/dist/math.d.ts.map +1 -0
  286. package/dist/math.js +95 -0
  287. package/dist/math.js.map +1 -0
  288. package/dist/metal/bearing.d.ts.map +1 -1
  289. package/dist/metal/bearing.js +1 -4
  290. package/dist/metal/bearing.js.map +1 -1
  291. package/dist/metal/bendAllowance.d.ts.map +1 -1
  292. package/dist/metal/bendAllowance.js +2 -1
  293. package/dist/metal/bendAllowance.js.map +1 -1
  294. package/dist/metal/bolt.d.ts.map +1 -1
  295. package/dist/metal/bolt.js +4 -7
  296. package/dist/metal/bolt.js.map +1 -1
  297. package/dist/metal/cutting.d.ts.map +1 -1
  298. package/dist/metal/cutting.js +1 -4
  299. package/dist/metal/cutting.js.map +1 -1
  300. package/dist/metal/cuttingStock.d.ts.map +1 -1
  301. package/dist/metal/cuttingStock.js +1 -4
  302. package/dist/metal/cuttingStock.js.map +1 -1
  303. package/dist/metal/flangeSpec.d.ts +10 -0
  304. package/dist/metal/flangeSpec.d.ts.map +1 -0
  305. package/dist/metal/flangeSpec.js +81 -0
  306. package/dist/metal/flangeSpec.js.map +1 -0
  307. package/dist/metal/gear.d.ts.map +1 -1
  308. package/dist/metal/gear.js +1 -4
  309. package/dist/metal/gear.js.map +1 -1
  310. package/dist/metal/hardness.d.ts.map +1 -1
  311. package/dist/metal/hardness.js +1 -4
  312. package/dist/metal/hardness.js.map +1 -1
  313. package/dist/metal/index.d.ts +4 -1
  314. package/dist/metal/index.d.ts.map +1 -1
  315. package/dist/metal/index.js +3 -0
  316. package/dist/metal/index.js.map +1 -1
  317. package/dist/metal/materialGradeConverter.d.ts +10 -0
  318. package/dist/metal/materialGradeConverter.d.ts.map +1 -0
  319. package/dist/metal/materialGradeConverter.js +78 -0
  320. package/dist/metal/materialGradeConverter.js.map +1 -0
  321. package/dist/metal/metalWeight.d.ts +13 -3
  322. package/dist/metal/metalWeight.d.ts.map +1 -1
  323. package/dist/metal/metalWeight.js +24 -35
  324. package/dist/metal/metalWeight.js.map +1 -1
  325. package/dist/metal/pipeSpec.d.ts +10 -0
  326. package/dist/metal/pipeSpec.d.ts.map +1 -0
  327. package/dist/metal/pipeSpec.js +96 -0
  328. package/dist/metal/pipeSpec.js.map +1 -0
  329. package/dist/metal/pressFit.d.ts.map +1 -1
  330. package/dist/metal/pressFit.js +1 -4
  331. package/dist/metal/pressFit.js.map +1 -1
  332. package/dist/metal/pressTonnage.d.ts +10 -4
  333. package/dist/metal/pressTonnage.d.ts.map +1 -1
  334. package/dist/metal/pressTonnage.js +199 -25
  335. package/dist/metal/pressTonnage.js.map +1 -1
  336. package/dist/metal/roughness.d.ts.map +1 -1
  337. package/dist/metal/roughness.js +2 -5
  338. package/dist/metal/roughness.js.map +1 -1
  339. package/dist/metal/screw.d.ts.map +1 -1
  340. package/dist/metal/screw.js +1 -4
  341. package/dist/metal/screw.js.map +1 -1
  342. package/dist/metal/spring.d.ts.map +1 -1
  343. package/dist/metal/spring.js +1 -4
  344. package/dist/metal/spring.js.map +1 -1
  345. package/dist/metal/tap.d.ts.map +1 -1
  346. package/dist/metal/tap.js +1 -4
  347. package/dist/metal/tap.js.map +1 -1
  348. package/dist/metal/thread.d.ts.map +1 -1
  349. package/dist/metal/thread.js +1 -4
  350. package/dist/metal/thread.js.map +1 -1
  351. package/dist/metal/tolerance.d.ts.map +1 -1
  352. package/dist/metal/tolerance.js +1 -4
  353. package/dist/metal/tolerance.js.map +1 -1
  354. package/dist/metal/types.d.ts +100 -13
  355. package/dist/metal/types.d.ts.map +1 -1
  356. package/dist/metal/vibration.d.ts.map +1 -1
  357. package/dist/metal/vibration.js +1 -4
  358. package/dist/metal/vibration.js.map +1 -1
  359. package/dist/metal/weldHeat.d.ts +2 -1
  360. package/dist/metal/weldHeat.d.ts.map +1 -1
  361. package/dist/metal/weldHeat.js +203 -44
  362. package/dist/metal/weldHeat.js.map +1 -1
  363. package/dist/metal/welding.d.ts.map +1 -1
  364. package/dist/metal/welding.js +3 -2
  365. package/dist/metal/welding.js.map +1 -1
  366. package/dist/quality/aql.d.ts.map +1 -1
  367. package/dist/quality/aql.js +1 -4
  368. package/dist/quality/aql.js.map +1 -1
  369. package/dist/quality/controlChart.d.ts +26 -0
  370. package/dist/quality/controlChart.d.ts.map +1 -0
  371. package/dist/quality/controlChart.js +216 -0
  372. package/dist/quality/controlChart.js.map +1 -0
  373. package/dist/quality/cpk.d.ts +16 -4
  374. package/dist/quality/cpk.d.ts.map +1 -1
  375. package/dist/quality/cpk.js +16 -4
  376. package/dist/quality/cpk.js.map +1 -1
  377. package/dist/quality/downtime.d.ts.map +1 -1
  378. package/dist/quality/downtime.js +1 -4
  379. package/dist/quality/downtime.js.map +1 -1
  380. package/dist/quality/dpmo.d.ts.map +1 -1
  381. package/dist/quality/dpmo.js +2 -65
  382. package/dist/quality/dpmo.js.map +1 -1
  383. package/dist/quality/index.d.ts +2 -1
  384. package/dist/quality/index.d.ts.map +1 -1
  385. package/dist/quality/index.js +1 -0
  386. package/dist/quality/index.js.map +1 -1
  387. package/dist/quality/lineBalancing.d.ts.map +1 -1
  388. package/dist/quality/lineBalancing.js +1 -4
  389. package/dist/quality/lineBalancing.js.map +1 -1
  390. package/dist/quality/mtbf.d.ts.map +1 -1
  391. package/dist/quality/mtbf.js +1 -4
  392. package/dist/quality/mtbf.js.map +1 -1
  393. package/dist/quality/oee.d.ts +13 -1
  394. package/dist/quality/oee.d.ts.map +1 -1
  395. package/dist/quality/oee.js +30 -9
  396. package/dist/quality/oee.js.map +1 -1
  397. package/dist/quality/ppk.d.ts.map +1 -1
  398. package/dist/quality/ppk.js +2 -20
  399. package/dist/quality/ppk.js.map +1 -1
  400. package/dist/quality/ppm.d.ts.map +1 -1
  401. package/dist/quality/ppm.js +2 -84
  402. package/dist/quality/ppm.js.map +1 -1
  403. package/dist/quality/rpn.d.ts.map +1 -1
  404. package/dist/quality/rpn.js +1 -4
  405. package/dist/quality/rpn.js.map +1 -1
  406. package/dist/quality/types.d.ts +31 -0
  407. package/dist/quality/types.d.ts.map +1 -1
  408. package/dist/quality/yield.d.ts.map +1 -1
  409. package/dist/quality/yield.js +1 -4
  410. package/dist/quality/yield.js.map +1 -1
  411. package/dist/safety/fallClearance.d.ts +12 -3
  412. package/dist/safety/fallClearance.d.ts.map +1 -1
  413. package/dist/safety/fallClearance.js +73 -17
  414. package/dist/safety/fallClearance.js.map +1 -1
  415. package/dist/safety/index.d.ts +2 -1
  416. package/dist/safety/index.d.ts.map +1 -1
  417. package/dist/safety/index.js +1 -0
  418. package/dist/safety/index.js.map +1 -1
  419. package/dist/safety/nioshLifting.d.ts +19 -10
  420. package/dist/safety/nioshLifting.d.ts.map +1 -1
  421. package/dist/safety/nioshLifting.js +19 -10
  422. package/dist/safety/nioshLifting.js.map +1 -1
  423. package/dist/safety/types.d.ts +25 -0
  424. package/dist/safety/types.d.ts.map +1 -1
  425. package/dist/safety/ventilationRate.d.ts +12 -0
  426. package/dist/safety/ventilationRate.d.ts.map +1 -0
  427. package/dist/safety/ventilationRate.js +71 -0
  428. package/dist/safety/ventilationRate.js.map +1 -0
  429. package/dist/utility/assignment.d.ts.map +1 -1
  430. package/dist/utility/assignment.js +1 -7
  431. package/dist/utility/assignment.js.map +1 -1
  432. package/dist/utility/index.d.ts +2 -2
  433. package/dist/utility/index.d.ts.map +1 -1
  434. package/dist/utility/index.js +1 -1
  435. package/dist/utility/index.js.map +1 -1
  436. package/dist/utility/types.d.ts +0 -16
  437. package/dist/utility/types.d.ts.map +1 -1
  438. package/dist/utility/unit.d.ts +1 -1
  439. package/dist/utility/unit.d.ts.map +1 -1
  440. package/dist/utility/unit.js +2 -8
  441. package/dist/utility/unit.js.map +1 -1
  442. package/dist/utils.d.ts +5 -1
  443. package/dist/utils.d.ts.map +1 -1
  444. package/dist/utils.js +11 -2
  445. package/dist/utils.js.map +1 -1
  446. package/package.json +37 -4
  447. package/dist/utility/qrcode.d.ts +0 -30
  448. package/dist/utility/qrcode.d.ts.map +0 -1
  449. package/dist/utility/qrcode.js +0 -30
  450. package/dist/utility/qrcode.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Braking Distance Calculator (AASHTO method)
4
+ *
5
+ * Calculates stopping distance based on:
6
+ * - Reaction distance: d_r = v × t_reaction
7
+ * - Braking distance: d_b = v² / (2 × g × (f ± G))
8
+ * where G = grade/100 (positive uphill, negative downhill)
9
+ *
10
+ * Reference: AASHTO "A Policy on Geometric Design of Highways and Streets"
11
+ *
12
+ * @param input - speed, friction, reaction time, grade
13
+ * @returns stopping distance components
14
+ */
15
+ export function brakingDistance(input) {
16
+ const { speed, friction, reactionTime, grade } = input;
17
+ if (speed <= 0)
18
+ throw new Error('Speed must be positive');
19
+ if (friction <= 0)
20
+ throw new Error('Friction coefficient must be positive');
21
+ if (reactionTime < 0)
22
+ throw new Error('Reaction time must be non-negative');
23
+ const g = 9.81; // m/s²
24
+ const speedMps = speed / 3.6; // km/h → m/s
25
+ const gradeDecimal = grade / 100; // % → decimal
26
+ // Reaction distance: d = v × t
27
+ const reactionDist = speedMps * reactionTime;
28
+ // Effective friction considering grade
29
+ // Uphill (positive grade) helps braking, downhill (negative) hinders
30
+ const effectiveFriction = friction + gradeDecimal;
31
+ if (effectiveFriction <= 0) {
32
+ throw new Error('Effective friction (friction + grade) must be positive — vehicle cannot stop on this grade');
33
+ }
34
+ // Deceleration: a = g × (f ± G)
35
+ const deceleration = g * effectiveFriction;
36
+ // Braking distance: d = v² / (2 × a)
37
+ const brakingDist = (speedMps * speedMps) / (2 * deceleration);
38
+ const totalStoppingDistance = reactionDist + brakingDist;
39
+ return {
40
+ reactionDistance: roundTo(reactionDist, 2),
41
+ brakingDistance: roundTo(brakingDist, 2),
42
+ totalStoppingDistance: roundTo(totalStoppingDistance, 2),
43
+ speedMps: roundTo(speedMps, 2),
44
+ deceleration: roundTo(deceleration, 2),
45
+ };
46
+ }
47
+ //# sourceMappingURL=brakingDistance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brakingDistance.js","sourceRoot":"","sources":["../../src/automotive/brakingDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEvD,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC5E,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE5E,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;IACvB,MAAM,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,aAAa;IAC3C,MAAM,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,cAAc;IAEhD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;IAE7C,uCAAuC;IACvC,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;IAElD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IAED,gCAAgC;IAChC,MAAM,YAAY,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAE3C,qCAAqC;IACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;IAE/D,MAAM,qBAAqB,GAAG,YAAY,GAAG,WAAW,CAAC;IAEzD,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KACvC,CAAC;AACJ,CAAC"}
@@ -1,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"}
@@ -1,3 +1,4 @@
1
+ export { brakingDistance } from './brakingDistance.js';
1
2
  export { batteryRuntime } from './batteryRuntime.js';
2
3
  export { evCharging } from './evCharging.js';
3
4
  export { fuelEconomy } from './fuelEconomy.js';
@@ -5,5 +6,5 @@ export { gearRatio } from './gearRatio.js';
5
6
  export { tireCompare } from './tireCompare.js';
6
7
  export { torque } from './torque.js';
7
8
  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';
9
+ export type { BrakingDistanceInput, BrakingDistanceResult, BatteryInput, BatteryResult, ChargingInput, ChargingResult, FuelUnit, FuelInput, FuelResult, GearRatioInput, GearRatioResult, TireSpec, TireInput, TireData, TireResult, TorqueUnit, TorqueInput, TorqueResult, PowerUnit, PowerInput, PowerResult, } from './types.js';
9
10
  //# 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,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,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,oBAAoB,EACpB,qBAAqB,EAErB,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"}
@@ -1,4 +1,5 @@
1
1
  // Automotive domain formulas
2
+ export { brakingDistance } from './brakingDistance.js';
2
3
  export { batteryRuntime } from './batteryRuntime.js';
3
4
  export { evCharging } from './evCharging.js';
4
5
  export { fuelEconomy } from './fuelEconomy.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/automotive/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/automotive/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,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"}
@@ -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;
@@ -98,6 +98,22 @@ export interface TorqueResult {
98
98
  kgfm: number;
99
99
  ftlbf: number;
100
100
  }
101
+ /**
102
+ * Braking Distance Calculator Types (AASHTO)
103
+ */
104
+ export interface BrakingDistanceInput {
105
+ speed: number;
106
+ friction: number;
107
+ reactionTime: number;
108
+ grade: number;
109
+ }
110
+ export interface BrakingDistanceResult {
111
+ reactionDistance: number;
112
+ brakingDistance: number;
113
+ totalStoppingDistance: number;
114
+ speedMps: number;
115
+ deceleration: number;
116
+ }
101
117
  /**
102
118
  * Power Converter Types
103
119
  */
@@ -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":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,10 @@
1
+ import type { BatteryPackConfigInput, BatteryPackConfigResult } from './types.js';
2
+ /**
3
+ * Calculate battery pack series/parallel cell configuration
4
+ *
5
+ * @formula S = ceil(Vtarget / Vcell), P = ceil(Ahtarget / Ahcell)
6
+ * @param input - Cell specs and target pack specs
7
+ * @returns Series/parallel count, actual voltage/capacity, total energy
8
+ */
9
+ export declare function batteryPackConfig(input: BatteryPackConfigInput): BatteryPackConfigResult;
10
+ //# sourceMappingURL=batteryPackConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batteryPackConfig.d.ts","sourceRoot":"","sources":["../../src/battery/batteryPackConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CAqBxF"}
@@ -0,0 +1,28 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery pack series/parallel cell configuration
4
+ *
5
+ * @formula S = ceil(Vtarget / Vcell), P = ceil(Ahtarget / Ahcell)
6
+ * @param input - Cell specs and target pack specs
7
+ * @returns Series/parallel count, actual voltage/capacity, total energy
8
+ */
9
+ export function batteryPackConfig(input) {
10
+ const { cellVoltage, cellCapacityAh, targetVoltage, targetCapacityAh } = input;
11
+ const seriesCells = Math.ceil(targetVoltage / cellVoltage);
12
+ const parallelCells = Math.ceil(targetCapacityAh / cellCapacityAh);
13
+ const totalCells = seriesCells * parallelCells;
14
+ const actualVoltage = roundTo(seriesCells * cellVoltage, 2);
15
+ const actualCapacityAh = roundTo(parallelCells * cellCapacityAh, 2);
16
+ const totalEnergyWh = roundTo(actualVoltage * actualCapacityAh, 2);
17
+ const totalEnergyKWh = roundTo(totalEnergyWh / 1000, 3);
18
+ return {
19
+ seriesCells,
20
+ parallelCells,
21
+ totalCells,
22
+ actualVoltage,
23
+ actualCapacityAh,
24
+ totalEnergyWh,
25
+ totalEnergyKWh,
26
+ };
27
+ }
28
+ //# sourceMappingURL=batteryPackConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batteryPackConfig.js","sourceRoot":"","sources":["../../src/battery/batteryPackConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAE/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;IAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,WAAW;QACX,aAAa;QACb,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { BmsBalancingInput, BmsBalancingResult } from './types.js';
2
+ /**
3
+ * Calculate BMS cell balancing time
4
+ *
5
+ * @formula time = (ΔV/Vavg × Ah × 1000) / ImA (minutes)
6
+ * @reference BMS design guidelines, passive balancing
7
+ * @param input - Cell voltages array, balancing current, cell capacity
8
+ * @returns Balancing time estimates and cell-level details
9
+ */
10
+ export declare function bmsBalancing(input: BmsBalancingInput): BmsBalancingResult;
11
+ //# sourceMappingURL=bmsBalancing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bmsBalancing.d.ts","sourceRoot":"","sources":["../../src/battery/bmsBalancing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA+CzE"}
@@ -0,0 +1,47 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate BMS cell balancing time
4
+ *
5
+ * @formula time = (ΔV/Vavg × Ah × 1000) / ImA (minutes)
6
+ * @reference BMS design guidelines, passive balancing
7
+ * @param input - Cell voltages array, balancing current, cell capacity
8
+ * @returns Balancing time estimates and cell-level details
9
+ */
10
+ export function bmsBalancing(input) {
11
+ const { cellVoltages, balancingCurrentMA, cellCapacityAh } = input;
12
+ const maxVoltage = Math.max(...cellVoltages);
13
+ const minVoltage = Math.min(...cellVoltages);
14
+ const voltageDelta = roundTo(maxVoltage - minVoltage, 4);
15
+ const averageVoltage = roundTo(cellVoltages.reduce((sum, v) => sum + v, 0) / cellVoltages.length, 4);
16
+ // Balance threshold: 10mV
17
+ const isBalanced = voltageDelta <= 0.01;
18
+ const cellDetails = cellVoltages.map((voltage, index) => {
19
+ const deltaFromAvg = roundTo((voltage - averageVoltage) * 1000, 2); // mV
20
+ // Only cells above average need balancing (discharge excess energy)
21
+ let balancingTimeMin = 0;
22
+ if (deltaFromAvg > 0) {
23
+ // Energy to remove: ΔV/Vavg × Ah (in mAh), time = mAh / mA × 60
24
+ const excessMah = (deltaFromAvg / 1000) / averageVoltage * cellCapacityAh * 1000;
25
+ balancingTimeMin = roundTo(excessMah / balancingCurrentMA * 60, 1);
26
+ }
27
+ return {
28
+ cellIndex: index,
29
+ voltage: roundTo(voltage, 4),
30
+ deltaFromAvg,
31
+ balancingTimeMin,
32
+ };
33
+ });
34
+ const maxBalancingTimeMin = roundTo(Math.max(...cellDetails.map(c => c.balancingTimeMin)), 1);
35
+ const maxBalancingTimeH = roundTo(maxBalancingTimeMin / 60, 2);
36
+ return {
37
+ maxVoltage: roundTo(maxVoltage, 4),
38
+ minVoltage: roundTo(minVoltage, 4),
39
+ voltageDelta,
40
+ averageVoltage,
41
+ maxBalancingTimeMin,
42
+ maxBalancingTimeH,
43
+ isBalanced,
44
+ cellDetails,
45
+ };
46
+ }
47
+ //# sourceMappingURL=bmsBalancing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bmsBalancing.js","sourceRoot":"","sources":["../../src/battery/bmsBalancing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAC5B,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EACjE,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC;IAExC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;QACzE,oEAAoE;QACpE,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,gEAAgE;YAChE,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;YACjF,gBAAgB,GAAG,OAAO,CAAC,SAAS,GAAG,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5B,YAAY;YACZ,gBAAgB;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,OAAO,CACjC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EACrD,CAAC,CACF,CAAC;IACF,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,YAAY;QACZ,cAAc;QACd,mBAAmB;QACnB,iBAAiB;QACjB,UAAU;QACV,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CRateInput, CRateResult } from './types.js';
2
+ /**
3
+ * Calculate C-rate ↔ current/time conversion
4
+ *
5
+ * @formula C = I / Ah, time = 1/C hours
6
+ * @param input - Battery capacity with either current or C-rate
7
+ * @returns C-rate, current, and theoretical charge/discharge time
8
+ */
9
+ export declare function cRate(input: CRateInput): CRateResult;
10
+ //# sourceMappingURL=cRate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cRate.d.ts","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqBpD"}
@@ -0,0 +1,29 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate C-rate ↔ current/time conversion
4
+ *
5
+ * @formula C = I / Ah, time = 1/C hours
6
+ * @param input - Battery capacity with either current or C-rate
7
+ * @returns C-rate, current, and theoretical charge/discharge time
8
+ */
9
+ export function cRate(input) {
10
+ let cRateValue;
11
+ let currentA;
12
+ if (input.mode === 'currentToRate') {
13
+ currentA = input.currentA;
14
+ cRateValue = currentA / input.capacityAh;
15
+ }
16
+ else {
17
+ cRateValue = input.cRate;
18
+ currentA = cRateValue * input.capacityAh;
19
+ }
20
+ const theoreticalTimeH = 1 / cRateValue;
21
+ const theoreticalTimeMin = theoreticalTimeH * 60;
22
+ return {
23
+ cRate: roundTo(cRateValue, 4),
24
+ currentA: roundTo(currentA, 2),
25
+ theoreticalTimeH: roundTo(theoreticalTimeH, 2),
26
+ theoreticalTimeMin: roundTo(theoreticalTimeMin, 1),
27
+ };
28
+ }
29
+ //# sourceMappingURL=cRate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cRate.js","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAgB,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ChargingProfileInput, ChargingProfileResult } from './types.js';
2
+ /**
3
+ * Calculate CC-CV charging profile timing
4
+ *
5
+ * @formula CC: t = ccAh / I, CV: t ≈ cvAh / ((Icc + Icut) / 2)
6
+ * @reference Li-ion CC-CV charging protocol
7
+ * @param input - Battery capacity, charging current, cutoff current, CC end SOC
8
+ * @returns Phase durations, Ah delivered per phase, average C-rate
9
+ */
10
+ export declare function chargingProfile(input: ChargingProfileInput): ChargingProfileResult;
11
+ //# sourceMappingURL=chargingProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chargingProfile.d.ts","sourceRoot":"","sources":["../../src/battery/chargingProfile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAsClF"}
@@ -0,0 +1,38 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate CC-CV charging profile timing
4
+ *
5
+ * @formula CC: t = ccAh / I, CV: t ≈ cvAh / ((Icc + Icut) / 2)
6
+ * @reference Li-ion CC-CV charging protocol
7
+ * @param input - Battery capacity, charging current, cutoff current, CC end SOC
8
+ * @returns Phase durations, Ah delivered per phase, average C-rate
9
+ */
10
+ export function chargingProfile(input) {
11
+ const { capacityAh, chargingCurrentA, cutoffCurrentA, ccEndSocPercent = 80, } = input;
12
+ // CC phase delivers ccEndSocPercent of capacity
13
+ const ccPhaseAh = roundTo(capacityAh * (ccEndSocPercent / 100), 2);
14
+ const cvPhaseAh = roundTo(capacityAh - ccPhaseAh, 2);
15
+ // CC phase time = Ah / current
16
+ const ccPhaseTimeH = roundTo(ccPhaseAh / chargingCurrentA, 2);
17
+ const ccPhaseTimeMin = roundTo(ccPhaseTimeH * 60, 1);
18
+ // CV phase time approximation: average current = (Icc + Icut) / 2
19
+ const avgCvCurrent = (chargingCurrentA + cutoffCurrentA) / 2;
20
+ const cvPhaseTimeH = roundTo(cvPhaseAh / avgCvCurrent, 2);
21
+ const cvPhaseTimeMin = roundTo(cvPhaseTimeH * 60, 1);
22
+ const totalTimeH = roundTo(ccPhaseTimeH + cvPhaseTimeH, 2);
23
+ const totalTimeMin = roundTo(totalTimeH * 60, 1);
24
+ // Average C-rate over entire charge
25
+ const averageCRate = roundTo(capacityAh / (totalTimeH * capacityAh), 4);
26
+ return {
27
+ ccPhaseTimeH,
28
+ ccPhaseTimeMin,
29
+ cvPhaseTimeH,
30
+ cvPhaseTimeMin,
31
+ totalTimeH,
32
+ totalTimeMin,
33
+ ccPhaseAh,
34
+ cvPhaseAh,
35
+ averageCRate,
36
+ };
37
+ }
38
+ //# sourceMappingURL=chargingProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chargingProfile.js","sourceRoot":"","sources":["../../src/battery/chargingProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,GAAG,EAAE,GACrB,GAAG,KAAK,CAAC;IAEV,gDAAgD;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAErD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,kEAAkE;IAClE,MAAM,YAAY,GAAG,CAAC,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjD,oCAAoC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,cAAc;QACd,UAAU;QACV,YAAY;QACZ,SAAS;QACT,SAAS;QACT,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CycleLifeInput, CycleLifeResult } from './types.js';
2
+ /**
3
+ * Estimate battery cycle life based on chemistry, DOD, and temperature
4
+ *
5
+ * @formula cycles = baseCycles × dodFactor × temperatureFactor
6
+ * @reference Battery University, manufacturer datasheets
7
+ * @param input - Chemistry type, DOD percentage, temperature
8
+ * @returns Estimated cycle count with adjustment factors
9
+ */
10
+ export declare function cycleLife(input: CycleLifeInput): CycleLifeResult;
11
+ //# sourceMappingURL=cycleLife.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleLife.d.ts","sourceRoot":"","sources":["../../src/battery/cycleLife.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA6CpF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAgBhE"}
@@ -0,0 +1,70 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Base cycle life by battery chemistry (at ~80% DOD, 25°C)
4
+ * @reference Manufacturer datasheets, Battery University
5
+ */
6
+ const BASE_CYCLE_LIFE = {
7
+ LFP: 3500,
8
+ NMC: 1500,
9
+ NCA: 1000,
10
+ LTO: 15000,
11
+ LCO: 800,
12
+ LeadAcid: 500,
13
+ NiMH: 600,
14
+ };
15
+ /**
16
+ * DOD factor: how depth of discharge affects cycle life
17
+ * ≤50% → 1.5, 50-80% → 1.0, >80% → 0.7 (with linear interpolation)
18
+ */
19
+ function getDodFactor(dod) {
20
+ if (dod <= 50) {
21
+ // Linear from 1.5 at 0% to 1.5 at 50%
22
+ return 1.5;
23
+ }
24
+ else if (dod <= 80) {
25
+ // Linear from 1.5 at 50% to 1.0 at 80%
26
+ return 1.5 - ((dod - 50) / 30) * 0.5;
27
+ }
28
+ else {
29
+ // Linear from 1.0 at 80% to 0.7 at 100%
30
+ return 1.0 - ((dod - 80) / 20) * 0.3;
31
+ }
32
+ }
33
+ /**
34
+ * Temperature factor: how temperature affects cycle life
35
+ * <0°C → 0.5, 0-15 → 0.8, 15-35 → 1.0, 35-45 → 0.8, >45 → 0.5
36
+ */
37
+ function getTemperatureFactor(tempC) {
38
+ if (tempC < 0)
39
+ return 0.5;
40
+ if (tempC < 15)
41
+ return 0.8;
42
+ if (tempC <= 35)
43
+ return 1.0;
44
+ if (tempC <= 45)
45
+ return 0.8;
46
+ return 0.5;
47
+ }
48
+ /**
49
+ * Estimate battery cycle life based on chemistry, DOD, and temperature
50
+ *
51
+ * @formula cycles = baseCycles × dodFactor × temperatureFactor
52
+ * @reference Battery University, manufacturer datasheets
53
+ * @param input - Chemistry type, DOD percentage, temperature
54
+ * @returns Estimated cycle count with adjustment factors
55
+ */
56
+ export function cycleLife(input) {
57
+ const { chemistry, depthOfDischarge, temperatureC } = input;
58
+ const baseCycles = BASE_CYCLE_LIFE[chemistry];
59
+ const dodFactor = getDodFactor(depthOfDischarge);
60
+ const temperatureFactor = getTemperatureFactor(temperatureC);
61
+ const estimatedCycles = roundTo(baseCycles * dodFactor * temperatureFactor, 0);
62
+ return {
63
+ estimatedCycles,
64
+ baseCycles,
65
+ dodFactor: roundTo(dodFactor, 4),
66
+ temperatureFactor,
67
+ chemistry,
68
+ };
69
+ }
70
+ //# sourceMappingURL=cycleLife.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleLife.js","sourceRoot":"","sources":["../../src/battery/cycleLife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,eAAe,GAAqC;IACxD,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,GAAG;IACR,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACd,sCAAsC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACrB,uCAAuC;QACvC,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE5D,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE7D,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAE/E,OAAO;QACL,eAAe;QACf,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,iBAAiB;QACjB,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { EnergyDensityInput, EnergyDensityResult } from './types.js';
2
+ /**
3
+ * Calculate battery energy density (gravimetric and volumetric)
4
+ *
5
+ * @formula Wh = Ah × V, Wh/kg = Wh / mass, Wh/L = Wh / volume
6
+ * @param input - Battery capacity, voltage, and optionally mass/volume
7
+ * @returns Energy in Wh, gravimetric (Wh/kg), and volumetric (Wh/L) density
8
+ */
9
+ export declare function energyDensity(input: EnergyDensityInput): EnergyDensityResult;
10
+ //# sourceMappingURL=energyDensity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energyDensity.d.ts","sourceRoot":"","sources":["../../src/battery/energyDensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAY5E"}
@@ -0,0 +1,20 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery energy density (gravimetric and volumetric)
4
+ *
5
+ * @formula Wh = Ah × V, Wh/kg = Wh / mass, Wh/L = Wh / volume
6
+ * @param input - Battery capacity, voltage, and optionally mass/volume
7
+ * @returns Energy in Wh, gravimetric (Wh/kg), and volumetric (Wh/L) density
8
+ */
9
+ export function energyDensity(input) {
10
+ const { capacityAh, nominalVoltage, massKg, volumeL } = input;
11
+ const energyWh = roundTo(capacityAh * nominalVoltage, 2);
12
+ const gravimetricWhPerKg = massKg != null && massKg > 0
13
+ ? roundTo(energyWh / massKg, 2)
14
+ : null;
15
+ const volumetricWhPerL = volumeL != null && volumeL > 0
16
+ ? roundTo(energyWh / volumeL, 2)
17
+ : null;
18
+ return { energyWh, gravimetricWhPerKg, volumetricWhPerL };
19
+ }
20
+ //# sourceMappingURL=energyDensity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energyDensity.js","sourceRoot":"","sources":["../../src/battery/energyDensity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,gBAAgB,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type { BatteryChemistry, EnergyDensityInput, EnergyDensityResult, CRateMode, CRateInput, CRateResult, StateOfHealthInput, SohStatus, StateOfHealthResult, BatteryPackConfigInput, BatteryPackConfigResult, CycleLifeInput, CycleLifeResult, InternalResistanceInput, InternalResistanceResult, SelfDischargeInput, SelfDischargeResult, ThermalRunawayInput, ThermalRunawayResult, BmsBalancingInput, BmsBalancingResult, ChargingProfileInput, ChargingProfileResult, } from './types.js';
2
+ export { energyDensity } from './energyDensity.js';
3
+ export { cRate } from './cRate.js';
4
+ export { stateOfHealth } from './stateOfHealth.js';
5
+ export { batteryPackConfig } from './batteryPackConfig.js';
6
+ export { cycleLife } from './cycleLife.js';
7
+ export { internalResistance } from './internalResistance.js';
8
+ export { selfDischarge } from './selfDischarge.js';
9
+ export { thermalRunaway } from './thermalRunaway.js';
10
+ export { bmsBalancing } from './bmsBalancing.js';
11
+ export { chargingProfile } from './chargingProfile.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/battery/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Functions
2
+ export { energyDensity } from './energyDensity.js';
3
+ export { cRate } from './cRate.js';
4
+ export { stateOfHealth } from './stateOfHealth.js';
5
+ export { batteryPackConfig } from './batteryPackConfig.js';
6
+ export { cycleLife } from './cycleLife.js';
7
+ export { internalResistance } from './internalResistance.js';
8
+ export { selfDischarge } from './selfDischarge.js';
9
+ export { thermalRunaway } from './thermalRunaway.js';
10
+ export { bmsBalancing } from './bmsBalancing.js';
11
+ export { chargingProfile } from './chargingProfile.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/battery/index.ts"],"names":[],"mappings":"AA2BA,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { InternalResistanceInput, InternalResistanceResult } from './types.js';
2
+ /**
3
+ * Calculate battery internal resistance from OCV and load voltage
4
+ *
5
+ * @formula R = (OCV - Vload) / I
6
+ * @reference IEC 61960, direct current internal resistance (DCIR)
7
+ * @param input - Open circuit voltage, load voltage, and load current
8
+ * @returns Resistance in Ohm and mOhm, voltage drop, and power loss
9
+ */
10
+ export declare function internalResistance(input: InternalResistanceInput): InternalResistanceResult;
11
+ //# sourceMappingURL=internalResistance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalResistance.d.ts","sourceRoot":"","sources":["../../src/battery/internalResistance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAS3F"}
@@ -0,0 +1,18 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery internal resistance from OCV and load voltage
4
+ *
5
+ * @formula R = (OCV - Vload) / I
6
+ * @reference IEC 61960, direct current internal resistance (DCIR)
7
+ * @param input - Open circuit voltage, load voltage, and load current
8
+ * @returns Resistance in Ohm and mOhm, voltage drop, and power loss
9
+ */
10
+ export function internalResistance(input) {
11
+ const { openCircuitVoltage, loadVoltage, loadCurrentA } = input;
12
+ const voltageDrop = roundTo(openCircuitVoltage - loadVoltage, 4);
13
+ const resistanceOhm = roundTo(voltageDrop / loadCurrentA, 6);
14
+ const resistanceMilliOhm = roundTo(resistanceOhm * 1000, 3);
15
+ const powerLossW = roundTo(loadCurrentA * loadCurrentA * resistanceOhm, 4);
16
+ return { resistanceOhm, resistanceMilliOhm, voltageDrop, powerLossW };
17
+ }
18
+ //# sourceMappingURL=internalResistance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalResistance.js","sourceRoot":"","sources":["../../src/battery/internalResistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAEhE,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACxE,CAAC"}