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
@@ -13,8 +13,13 @@ function toMeters(value, unit) {
13
13
  /**
14
14
  * Calculate Cubic Meter (CBM) for shipping cargo
15
15
  *
16
- * CBM is the standard unit for measuring shipping volume.
17
- * Formula: CBM = Length × Width × Height (in meters)
16
+ * @formula CBM = Length × Width × Height (all converted to meters)
17
+ * - Total CBM = CBM per unit × Quantity
18
+ *
19
+ * @reference Physical volume formula (L × W × H).
20
+ * @reference Industry standard: 20ft container internal ≈ 33.2 m³, 40ft ≈ 67.7 m³.
21
+ *
22
+ * @units input: mm, cm, or m; output: m³
18
23
  *
19
24
  * @param input - Cargo dimensions and quantity
20
25
  * @returns CBM per unit and total CBM
@@ -1 +1 @@
1
- {"version":3,"file":"cbm.js","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAuB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,GAAG,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAExD,+BAA+B;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvC,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAE9C,sBAAsB;IACtB,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAEvC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cbm.js","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAuB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,GAAG,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAExD,+BAA+B;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvC,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAE9C,sBAAsB;IACtB,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAEvC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"eoq.d.ts","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CA+B9C"}
1
+ {"version":3,"file":"eoq.d.ts","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CA2C9C"}
@@ -16,6 +16,17 @@ import { roundTo } from '../utils.js';
16
16
  */
17
17
  export function eoq(input) {
18
18
  const { annualDemand, orderCost, holdingCost } = input;
19
+ // Input validation
20
+ if (annualDemand <= 0 || orderCost <= 0 || holdingCost <= 0) {
21
+ return {
22
+ eoq: 0,
23
+ ordersPerYear: 0,
24
+ orderCycleDays: 0,
25
+ annualOrderingCost: 0,
26
+ annualHoldingCost: 0,
27
+ totalAnnualCost: 0,
28
+ };
29
+ }
19
30
  // Calculate EOQ using the classic formula
20
31
  // EOQ = sqrt(2DS/H)
21
32
  const eoqValue = Math.sqrt((2 * annualDemand * orderCost) / holdingCost);
@@ -1 +1 @@
1
- {"version":3,"file":"eoq.js","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,0CAA0C;IAC1C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;IAEzE,4BAA4B;IAC5B,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;IAE9C,mDAAmD;IACnD,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,uCAAuC;IACvC,MAAM,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAC;IAErD,sCAAsC;IACtC,mFAAmF;IACnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAEvD,iEAAiE;IACjE,MAAM,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IAE/D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"eoq.js","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,mBAAmB;IACnB,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,GAAG,EAAE,CAAC;YACN,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,CAAC;YACrB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;IAEzE,4BAA4B;IAC5B,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;IAE9C,mDAAmD;IACnD,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,uCAAuC;IACvC,MAAM,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAC;IAErD,sCAAsC;IACtC,mFAAmF;IACnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAEvD,iEAAiE;IACjE,MAAM,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IAE/D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fillRate.d.ts","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAsBpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA2B7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
1
+ {"version":3,"file":"fillRate.d.ts","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA2B7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
@@ -1,21 +1,5 @@
1
1
  import { roundTo } from '../utils.js';
2
- /**
3
- * Cumulative Distribution Function for standard normal distribution
4
- * Uses the Horner form of the rational approximation
5
- */
6
- function normalCDF(z) {
7
- const a1 = 0.254829592;
8
- const a2 = -0.284496736;
9
- const a3 = 1.421413741;
10
- const a4 = -1.453152027;
11
- const a5 = 1.061405429;
12
- const p = 0.3275911;
13
- const sign = z < 0 ? -1 : 1;
14
- const x = Math.abs(z) / Math.SQRT2;
15
- const t = 1 / (1 + p * x);
16
- const erf = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);
17
- return 0.5 * (1 + sign * erf);
18
- }
2
+ import { normalCDF } from '../math.js';
19
3
  /**
20
4
  * Calculate Fill Rate
21
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"fillRate.js","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillRate.js","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9C,6BAA6B;IAC7B,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,CAAC;YACjB,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;IAE7C,sBAAsB;IACtB,MAAM,IAAI,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC;IAChD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;IAEjC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,YAAY;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE5C,6BAA6B;IAC7B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxC,mBAAmB,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,MAAM,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC;IAE1C,2DAA2D;IAC3D,mEAAmE;IACnE,kCAAkC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACtC,MAAM,mBAAmB,GAAG,GAAG,GAAG,KAAK,CAAC;IAExC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA6DtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2BtE"}
1
+ {"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2BtE"}
@@ -1,58 +1,5 @@
1
1
  import { roundTo } from '../utils.js';
2
- /**
3
- * Approximate inverse of the standard normal CDF (quantile function)
4
- * Using Abramowitz & Stegun 26.2.23 rational approximation
5
- *
6
- * @param p - Probability (0 < p < 1)
7
- * @returns z-score (standard normal quantile)
8
- */
9
- function normSInv(p) {
10
- // Coefficients for the rational approximation
11
- const a1 = -3.969683028665376e+01;
12
- const a2 = 2.209460984245205e+02;
13
- const a3 = -2.759285104469687e+02;
14
- const a4 = 1.383577518672690e+02;
15
- const a5 = -3.066479806614716e+01;
16
- const a6 = 2.506628277459239e+00;
17
- const b1 = -5.447609879822406e+01;
18
- const b2 = 1.615858368580409e+02;
19
- const b3 = -1.556989798598866e+02;
20
- const b4 = 6.680131188771972e+01;
21
- const b5 = -1.328068155288572e+01;
22
- const c1 = -7.784894002430293e-03;
23
- const c2 = -3.223964580411365e-01;
24
- const c3 = -2.400758277161838e+00;
25
- const c4 = -2.549732539343734e+00;
26
- const c5 = 4.374664141464968e+00;
27
- const c6 = 2.938163982698783e+00;
28
- const d1 = 7.784695709041462e-03;
29
- const d2 = 3.224671290700398e-01;
30
- const d3 = 2.445134137142996e+00;
31
- const d4 = 3.754408661907416e+00;
32
- // Define break-points
33
- const pLow = 0.02425;
34
- const pHigh = 1 - pLow;
35
- let q, r;
36
- if (p < pLow) {
37
- // Rational approximation for lower region
38
- q = Math.sqrt(-2 * Math.log(p));
39
- return (((((c1 * q + c2) * q + c3) * q + c4) * q + c5) * q + c6) /
40
- ((((d1 * q + d2) * q + d3) * q + d4) * q + 1);
41
- }
42
- else if (p <= pHigh) {
43
- // Rational approximation for central region
44
- q = p - 0.5;
45
- r = q * q;
46
- return (((((a1 * r + a2) * r + a3) * r + a4) * r + a5) * r + a6) * q /
47
- (((((b1 * r + b2) * r + b3) * r + b4) * r + b5) * r + 1);
48
- }
49
- else {
50
- // Rational approximation for upper region
51
- q = Math.sqrt(-2 * Math.log(1 - p));
52
- return -(((((c1 * q + c2) * q + c3) * q + c4) * q + c5) * q + c6) /
53
- ((((d1 * q + d2) * q + d3) * q + d4) * q + 1);
54
- }
55
- }
2
+ import { normalInvCDF } from '../math.js';
56
3
  /**
57
4
  * Calculate Safety Stock and Reorder Point
58
5
  *
@@ -77,7 +24,7 @@ function normSInv(p) {
77
24
  export function safetyStock(input) {
78
25
  const { avgDemand, demandStdDev, avgLeadTime, leadTimeStdDev, serviceLevel } = input;
79
26
  // Calculate z-score for the desired service level
80
- const zScore = normSInv(serviceLevel);
27
+ const zScore = normalInvCDF(serviceLevel);
81
28
  // Average demand during lead time
82
29
  const demandDuringLeadTime = avgDemand * avgLeadTime;
83
30
  // Standard deviation of demand during lead time (DDLT)
@@ -1 +1 @@
1
- {"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,CAAS;IACzB,8CAA8C;IAC9C,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAElC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAElC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAElC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAClC,MAAM,EAAE,GAAI,qBAAqB,CAAC;IAElC,sBAAsB;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvB,IAAI,CAAS,EAAE,CAAS,CAAC;IAEzB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACb,0CAA0C;QAC1C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,4CAA4C;QAC5C,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACZ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;YAC7D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,0CAA0C;QAC1C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErF,kDAAkD;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEtC,kCAAkC;IAClC,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;IAErD,uDAAuD;IACvD,sCAAsC;IACtC,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;IAE7C,8CAA8C;IAC9C,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErF,kDAAkD;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE1C,kCAAkC;IAClC,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;IAErD,uDAAuD;IACvD,sCAAsC;IACtC,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;IAE7C,8CAA8C;IAC9C,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BoltCircleInput, BoltCircleResult } from './types.js';
2
+ /**
3
+ * Calculate bolt hole circle pattern coordinates.
4
+ *
5
+ * @formula
6
+ * θᵢ = startAngle + i × (360 / n)
7
+ * xᵢ = r × cos(θᵢ)
8
+ * yᵢ = r × sin(θᵢ)
9
+ *
10
+ * @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed.
11
+ *
12
+ * @param input - Bolt circle parameters
13
+ * @returns BoltCircleResult with hole coordinates and angular spacing
14
+ */
15
+ export declare function boltCircle(input: BoltCircleInput): BoltCircleResult;
16
+ //# sourceMappingURL=boltCircle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boltCircle.d.ts","sourceRoot":"","sources":["../../src/machining/boltCircle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAY,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAuBnE"}
@@ -0,0 +1,36 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate bolt hole circle pattern coordinates.
4
+ *
5
+ * @formula
6
+ * θᵢ = startAngle + i × (360 / n)
7
+ * xᵢ = r × cos(θᵢ)
8
+ * yᵢ = r × sin(θᵢ)
9
+ *
10
+ * @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed.
11
+ *
12
+ * @param input - Bolt circle parameters
13
+ * @returns BoltCircleResult with hole coordinates and angular spacing
14
+ */
15
+ export function boltCircle(input) {
16
+ const { boltCircleDiameter, numberOfHoles, startAngle = 0 } = input;
17
+ const radius = boltCircleDiameter / 2;
18
+ const angularSpacing = 360 / numberOfHoles;
19
+ const holes = [];
20
+ for (let i = 0; i < numberOfHoles; i++) {
21
+ const angleDeg = startAngle + i * angularSpacing;
22
+ const angleRad = (angleDeg * Math.PI) / 180;
23
+ holes.push({
24
+ holeNumber: i + 1,
25
+ angle: roundTo(angleDeg % 360, 4),
26
+ x: roundTo(radius * Math.cos(angleRad), 4),
27
+ y: roundTo(radius * Math.sin(angleRad), 4),
28
+ });
29
+ }
30
+ return {
31
+ radius: roundTo(radius, 4),
32
+ holes,
33
+ angularSpacing: roundTo(angularSpacing, 4),
34
+ };
35
+ }
36
+ //# sourceMappingURL=boltCircle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boltCircle.js","sourceRoot":"","sources":["../../src/machining/boltCircle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAEpE,MAAM,MAAM,GAAG,kBAAkB,GAAG,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,CAAC,GAAG,CAAC;YACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;YACjC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,KAAK;QACL,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { BoringBarDeflectionInput, BoringBarDeflectionResult } from './types.js';
2
+ /**
3
+ * Calculate boring bar deflection using cantilever beam theory.
4
+ *
5
+ * @formula
6
+ * I = π × d⁴ / 64
7
+ * δ = F × L³ / (3 × E × I)
8
+ * L/D ratio determines stability recommendation
9
+ *
10
+ * @reference Sandvik Coromant — Boring bar selection guide.
11
+ * L/D < 4: steel, L/D 4-6: carbide, L/D 6-10: heavy metal/damped
12
+ *
13
+ * @param input - Boring bar deflection parameters
14
+ * @returns BoringBarDeflectionResult with deflection, L/D ratio, and recommendation
15
+ */
16
+ export declare function boringBarDeflection(input: BoringBarDeflectionInput): BoringBarDeflectionResult;
17
+ //# sourceMappingURL=boringBarDeflection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boringBarDeflection.d.ts","sourceRoot":"","sources":["../../src/machining/boringBarDeflection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAqB,MAAM,YAAY,CAAC;AAWzG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,yBAAyB,CA8B9F"}
@@ -0,0 +1,54 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Young's modulus for boring bar materials (GPa)
4
+ */
5
+ const BAR_MODULUS = {
6
+ carbide: 550,
7
+ steel: 200,
8
+ heavyMetal: 250,
9
+ };
10
+ /**
11
+ * Calculate boring bar deflection using cantilever beam theory.
12
+ *
13
+ * @formula
14
+ * I = π × d⁴ / 64
15
+ * δ = F × L³ / (3 × E × I)
16
+ * L/D ratio determines stability recommendation
17
+ *
18
+ * @reference Sandvik Coromant — Boring bar selection guide.
19
+ * L/D < 4: steel, L/D 4-6: carbide, L/D 6-10: heavy metal/damped
20
+ *
21
+ * @param input - Boring bar deflection parameters
22
+ * @returns BoringBarDeflectionResult with deflection, L/D ratio, and recommendation
23
+ */
24
+ export function boringBarDeflection(input) {
25
+ const { barDiameter, overhang, cuttingForce, material = 'steel' } = input;
26
+ const E = input.youngsModulus ?? BAR_MODULUS[material];
27
+ const E_MPa = E * 1000; // GPa → MPa
28
+ const I = (Math.PI * Math.pow(barDiameter, 4)) / 64;
29
+ const delta = (cuttingForce * Math.pow(overhang, 3)) / (3 * E_MPa * I);
30
+ const stiffness = delta > 0 ? cuttingForce / delta : Infinity;
31
+ const ldRatio = overhang / barDiameter;
32
+ let recommendation;
33
+ if (ldRatio <= 4) {
34
+ recommendation = 'Steel bar suitable';
35
+ }
36
+ else if (ldRatio <= 6) {
37
+ recommendation = 'Carbide bar recommended';
38
+ }
39
+ else if (ldRatio <= 10) {
40
+ recommendation = 'Heavy metal or damped bar recommended';
41
+ }
42
+ else {
43
+ recommendation = 'L/D exceeds practical limits; reduce overhang';
44
+ }
45
+ return {
46
+ deflection: roundTo(delta, 6),
47
+ momentOfInertia: roundTo(I, 4),
48
+ stiffness: roundTo(stiffness, 2),
49
+ ldRatio: roundTo(ldRatio, 2),
50
+ youngsModulus: E,
51
+ recommendation,
52
+ };
53
+ }
54
+ //# sourceMappingURL=boringBarDeflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boringBarDeflection.js","sourceRoot":"","sources":["../../src/machining/boringBarDeflection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,MAAM,WAAW,GAAsC;IACrD,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAEpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IAEvC,IAAI,cAAsB,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,cAAc,GAAG,oBAAoB,CAAC;IACxC,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,cAAc,GAAG,yBAAyB,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QACzB,cAAc,GAAG,uCAAuC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,+CAA+C,CAAC;IACnE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,eAAe,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,aAAa,EAAE,CAAC;QAChB,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CuspHeightInput, CuspHeightResult } from './types.js';
2
+ /**
3
+ * Calculate the scallop (cusp) height for ball end mill surface finishing.
4
+ *
5
+ * @formula
6
+ * h = r − √(r² − (stepover/2)²)
7
+ * Ra ≈ h / 4 (approximate)
8
+ *
9
+ * @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Ball-nose milling.
10
+ *
11
+ * @param input - Cusp height parameters
12
+ * @returns CuspHeightResult with scallop height and approximate Ra
13
+ */
14
+ export declare function cuspHeight(input: CuspHeightInput): CuspHeightResult;
15
+ //# sourceMappingURL=cuspHeight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuspHeight.d.ts","sourceRoot":"","sources":["../../src/machining/cuspHeight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAUnE"}
@@ -0,0 +1,23 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate the scallop (cusp) height for ball end mill surface finishing.
4
+ *
5
+ * @formula
6
+ * h = r − √(r² − (stepover/2)²)
7
+ * Ra ≈ h / 4 (approximate)
8
+ *
9
+ * @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Ball-nose milling.
10
+ *
11
+ * @param input - Cusp height parameters
12
+ * @returns CuspHeightResult with scallop height and approximate Ra
13
+ */
14
+ export function cuspHeight(input) {
15
+ const { toolRadius, stepover } = input;
16
+ const halfStep = stepover / 2;
17
+ const h = toolRadius - Math.sqrt(toolRadius * toolRadius - halfStep * halfStep);
18
+ return {
19
+ cuspHeight: roundTo(h, 4),
20
+ surfaceRoughness: roundTo((h * 1000) / 4, 2), // mm → μm, then /4 for Ra approx
21
+ };
22
+ }
23
+ //# sourceMappingURL=cuspHeight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuspHeight.js","sourceRoot":"","sources":["../../src/machining/cuspHeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEhF,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,iCAAiC;KAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { CycleTimeEstimatorInput, CycleTimeEstimatorResult } from './types.js';
2
+ /**
3
+ * Estimate CNC cycle time from a list of operations.
4
+ *
5
+ * @formula
6
+ * cutting time = Σ(distance / feedRate) for cutting operations
7
+ * rapid time = Σ(distance / rapidRate) for rapid operations
8
+ * tool change time = Σ(time) for toolChange operations
9
+ * dwell time = Σ(time) for dwell operations
10
+ * cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime
11
+ * totalTime = setupTime + cycleTime × partCount
12
+ * utilization = cuttingTime / cycleTime × 100
13
+ *
14
+ * @param input - Cycle time parameters
15
+ * @returns CycleTimeEstimatorResult with time breakdown and utilization
16
+ */
17
+ export declare function cycleTimeEstimator(input: CycleTimeEstimatorInput): CycleTimeEstimatorResult;
18
+ //# sourceMappingURL=cycleTimeEstimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleTimeEstimator.d.ts","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAIpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA+C3F"}
@@ -0,0 +1,62 @@
1
+ import { roundTo } from '../utils.js';
2
+ const DEFAULT_RAPID_RATE = 10000; // mm/min
3
+ /**
4
+ * Estimate CNC cycle time from a list of operations.
5
+ *
6
+ * @formula
7
+ * cutting time = Σ(distance / feedRate) for cutting operations
8
+ * rapid time = Σ(distance / rapidRate) for rapid operations
9
+ * tool change time = Σ(time) for toolChange operations
10
+ * dwell time = Σ(time) for dwell operations
11
+ * cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime
12
+ * totalTime = setupTime + cycleTime × partCount
13
+ * utilization = cuttingTime / cycleTime × 100
14
+ *
15
+ * @param input - Cycle time parameters
16
+ * @returns CycleTimeEstimatorResult with time breakdown and utilization
17
+ */
18
+ export function cycleTimeEstimator(input) {
19
+ const { operations, setupTime = 0, partCount = 1 } = input;
20
+ let cuttingTime = 0; // seconds
21
+ let rapidTime = 0; // seconds
22
+ let toolChangeTime = 0; // seconds
23
+ let dwellTime = 0; // seconds
24
+ for (const op of operations) {
25
+ switch (op.type) {
26
+ case 'cutting': {
27
+ if (op.distance !== undefined && op.feedRate !== undefined && op.feedRate > 0) {
28
+ cuttingTime += (op.distance / op.feedRate) * 60; // mm/(mm/min) → min → sec
29
+ }
30
+ break;
31
+ }
32
+ case 'rapid': {
33
+ if (op.distance !== undefined) {
34
+ const rate = op.rapidRate ?? DEFAULT_RAPID_RATE;
35
+ rapidTime += (op.distance / rate) * 60;
36
+ }
37
+ break;
38
+ }
39
+ case 'toolChange': {
40
+ toolChangeTime += op.time ?? 0;
41
+ break;
42
+ }
43
+ case 'dwell': {
44
+ dwellTime += op.time ?? 0;
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ const cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime;
50
+ const totalTime = setupTime + cycleTime * partCount;
51
+ const utilization = cycleTime > 0 ? (cuttingTime / cycleTime) * 100 : 0;
52
+ return {
53
+ cuttingTime: roundTo(cuttingTime, 2),
54
+ rapidTime: roundTo(rapidTime, 2),
55
+ toolChangeTime: roundTo(toolChangeTime, 2),
56
+ dwellTime: roundTo(dwellTime, 2),
57
+ cycleTime: roundTo(cycleTime, 2),
58
+ totalTime: roundTo(totalTime, 2),
59
+ utilization: roundTo(utilization, 2),
60
+ };
61
+ }
62
+ //# sourceMappingURL=cycleTimeEstimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleTimeEstimator.js","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,SAAS;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAE3D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAG,UAAU;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IACjC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU;IAClC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IAEjC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC9E,WAAW,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;gBAC7E,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAChD,SAAS,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,cAAc,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IACvE,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { EffectiveDiameterInput, EffectiveDiameterResult } from './types.js';
2
+ /**
3
+ * Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
4
+ *
5
+ * @formula
6
+ * Deff = 2 × √(ap × (D − ap))
7
+ *
8
+ * The effective diameter determines the actual cutting speed at the depth of cut,
9
+ * which is smaller than the nominal diameter unless cutting at the equator.
10
+ *
11
+ * @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
12
+ *
13
+ * @param input - Effective diameter parameters
14
+ * @returns EffectiveDiameterResult with effective diameter
15
+ */
16
+ export declare function effectiveDiameter(input: EffectiveDiameterInput): EffectiveDiameterResult;
17
+ //# sourceMappingURL=effectiveDiameter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectiveDiameter.d.ts","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CASxF"}
@@ -0,0 +1,24 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
4
+ *
5
+ * @formula
6
+ * Deff = 2 × √(ap × (D − ap))
7
+ *
8
+ * The effective diameter determines the actual cutting speed at the depth of cut,
9
+ * which is smaller than the nominal diameter unless cutting at the equator.
10
+ *
11
+ * @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
12
+ *
13
+ * @param input - Effective diameter parameters
14
+ * @returns EffectiveDiameterResult with effective diameter
15
+ */
16
+ export function effectiveDiameter(input) {
17
+ const { toolDiameter, axialDepthOfCut } = input;
18
+ const dEff = 2 * Math.sqrt(axialDepthOfCut * (toolDiameter - axialDepthOfCut));
19
+ return {
20
+ effectiveDiameter: roundTo(dEff, 4),
21
+ effectiveRpm: 0, // placeholder — requires cuttingSpeed input to compute
22
+ };
23
+ }
24
+ //# sourceMappingURL=effectiveDiameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectiveDiameter.js","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEhD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;IAE/E,OAAO;QACL,iBAAiB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,YAAY,EAAE,CAAC,EAAE,uDAAuD;KACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { GaugeBlockStackInput, GaugeBlockStackResult } from './types.js';
2
+ /**
3
+ * Build a gauge block stack using successive subtraction algorithm.
4
+ *
5
+ * The algorithm works from the smallest digit up:
6
+ * 1. Find a block that eliminates the least significant digit
7
+ * 2. Subtract it from the remaining target
8
+ * 3. Repeat until the remaining target is 0 or no suitable block is found
9
+ *
10
+ * @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Gauge blocks.
11
+ *
12
+ * @param input - Gauge block stack parameters
13
+ * @returns GaugeBlockStackResult with selected blocks and error
14
+ */
15
+ export declare function gaugeBlockStack(input: GaugeBlockStackInput): GaugeBlockStackResult;
16
+ //# sourceMappingURL=gaugeBlockStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaugeBlockStack.d.ts","sourceRoot":"","sources":["../../src/machining/gaugeBlockStack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAmE9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAiDlF"}