formulab 0.1.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 (508) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/LICENSE +21 -0
  3. package/README.md +403 -0
  4. package/dist/automotive/batteryRuntime.d.ts +14 -0
  5. package/dist/automotive/batteryRuntime.d.ts.map +1 -0
  6. package/dist/automotive/batteryRuntime.js +38 -0
  7. package/dist/automotive/batteryRuntime.js.map +1 -0
  8. package/dist/automotive/evCharging.d.ts +14 -0
  9. package/dist/automotive/evCharging.d.ts.map +1 -0
  10. package/dist/automotive/evCharging.js +48 -0
  11. package/dist/automotive/evCharging.js.map +1 -0
  12. package/dist/automotive/fuelEconomy.d.ts +15 -0
  13. package/dist/automotive/fuelEconomy.d.ts.map +1 -0
  14. package/dist/automotive/fuelEconomy.js +61 -0
  15. package/dist/automotive/fuelEconomy.js.map +1 -0
  16. package/dist/automotive/gearRatio.d.ts +15 -0
  17. package/dist/automotive/gearRatio.d.ts.map +1 -0
  18. package/dist/automotive/gearRatio.js +39 -0
  19. package/dist/automotive/gearRatio.js.map +1 -0
  20. package/dist/automotive/index.d.ts +9 -0
  21. package/dist/automotive/index.d.ts.map +1 -0
  22. package/dist/automotive/index.js +9 -0
  23. package/dist/automotive/index.js.map +1 -0
  24. package/dist/automotive/power.d.ts +14 -0
  25. package/dist/automotive/power.d.ts.map +1 -0
  26. package/dist/automotive/power.js +52 -0
  27. package/dist/automotive/power.js.map +1 -0
  28. package/dist/automotive/tireCompare.d.ts +9 -0
  29. package/dist/automotive/tireCompare.d.ts.map +1 -0
  30. package/dist/automotive/tireCompare.js +54 -0
  31. package/dist/automotive/tireCompare.js.map +1 -0
  32. package/dist/automotive/torque.d.ts +14 -0
  33. package/dist/automotive/torque.d.ts.map +1 -0
  34. package/dist/automotive/torque.js +52 -0
  35. package/dist/automotive/torque.js.map +1 -0
  36. package/dist/automotive/types.d.ts +114 -0
  37. package/dist/automotive/types.d.ts.map +1 -0
  38. package/dist/automotive/types.js +2 -0
  39. package/dist/automotive/types.js.map +1 -0
  40. package/dist/chemical/batch.d.ts +12 -0
  41. package/dist/chemical/batch.d.ts.map +1 -0
  42. package/dist/chemical/batch.js +36 -0
  43. package/dist/chemical/batch.js.map +1 -0
  44. package/dist/chemical/concentration.d.ts +15 -0
  45. package/dist/chemical/concentration.d.ts.map +1 -0
  46. package/dist/chemical/concentration.js +45 -0
  47. package/dist/chemical/concentration.js.map +1 -0
  48. package/dist/chemical/dilution.d.ts +12 -0
  49. package/dist/chemical/dilution.d.ts.map +1 -0
  50. package/dist/chemical/dilution.js +68 -0
  51. package/dist/chemical/dilution.js.map +1 -0
  52. package/dist/chemical/index.d.ts +9 -0
  53. package/dist/chemical/index.d.ts.map +1 -0
  54. package/dist/chemical/index.js +9 -0
  55. package/dist/chemical/index.js.map +1 -0
  56. package/dist/chemical/injectionCycle.d.ts +19 -0
  57. package/dist/chemical/injectionCycle.d.ts.map +1 -0
  58. package/dist/chemical/injectionCycle.js +170 -0
  59. package/dist/chemical/injectionCycle.js.map +1 -0
  60. package/dist/chemical/ph.d.ts +13 -0
  61. package/dist/chemical/ph.d.ts.map +1 -0
  62. package/dist/chemical/ph.js +83 -0
  63. package/dist/chemical/ph.js.map +1 -0
  64. package/dist/chemical/reactor.d.ts +19 -0
  65. package/dist/chemical/reactor.d.ts.map +1 -0
  66. package/dist/chemical/reactor.js +57 -0
  67. package/dist/chemical/reactor.js.map +1 -0
  68. package/dist/chemical/shelfLife.d.ts +15 -0
  69. package/dist/chemical/shelfLife.d.ts.map +1 -0
  70. package/dist/chemical/shelfLife.js +36 -0
  71. package/dist/chemical/shelfLife.js.map +1 -0
  72. package/dist/chemical/types.d.ts +144 -0
  73. package/dist/chemical/types.d.ts.map +1 -0
  74. package/dist/chemical/types.js +2 -0
  75. package/dist/chemical/types.js.map +1 -0
  76. package/dist/construction/aggregate.d.ts +33 -0
  77. package/dist/construction/aggregate.d.ts.map +1 -0
  78. package/dist/construction/aggregate.js +92 -0
  79. package/dist/construction/aggregate.js.map +1 -0
  80. package/dist/construction/beamLoad.d.ts +12 -0
  81. package/dist/construction/beamLoad.d.ts.map +1 -0
  82. package/dist/construction/beamLoad.js +156 -0
  83. package/dist/construction/beamLoad.js.map +1 -0
  84. package/dist/construction/brick.d.ts +17 -0
  85. package/dist/construction/brick.d.ts.map +1 -0
  86. package/dist/construction/brick.js +53 -0
  87. package/dist/construction/brick.js.map +1 -0
  88. package/dist/construction/concreteMix.d.ts +9 -0
  89. package/dist/construction/concreteMix.d.ts.map +1 -0
  90. package/dist/construction/concreteMix.js +31 -0
  91. package/dist/construction/concreteMix.js.map +1 -0
  92. package/dist/construction/earthwork.d.ts +13 -0
  93. package/dist/construction/earthwork.d.ts.map +1 -0
  94. package/dist/construction/earthwork.js +25 -0
  95. package/dist/construction/earthwork.js.map +1 -0
  96. package/dist/construction/formwork.d.ts +9 -0
  97. package/dist/construction/formwork.d.ts.map +1 -0
  98. package/dist/construction/formwork.js +61 -0
  99. package/dist/construction/formwork.js.map +1 -0
  100. package/dist/construction/index.d.ts +13 -0
  101. package/dist/construction/index.d.ts.map +1 -0
  102. package/dist/construction/index.js +13 -0
  103. package/dist/construction/index.js.map +1 -0
  104. package/dist/construction/pert.d.ts +15 -0
  105. package/dist/construction/pert.d.ts.map +1 -0
  106. package/dist/construction/pert.js +207 -0
  107. package/dist/construction/pert.js.map +1 -0
  108. package/dist/construction/rebar.d.ts +16 -0
  109. package/dist/construction/rebar.d.ts.map +1 -0
  110. package/dist/construction/rebar.js +43 -0
  111. package/dist/construction/rebar.js.map +1 -0
  112. package/dist/construction/roof.d.ts +16 -0
  113. package/dist/construction/roof.d.ts.map +1 -0
  114. package/dist/construction/roof.js +65 -0
  115. package/dist/construction/roof.js.map +1 -0
  116. package/dist/construction/slope.d.ts +14 -0
  117. package/dist/construction/slope.d.ts.map +1 -0
  118. package/dist/construction/slope.js +54 -0
  119. package/dist/construction/slope.js.map +1 -0
  120. package/dist/construction/stair.d.ts +17 -0
  121. package/dist/construction/stair.d.ts.map +1 -0
  122. package/dist/construction/stair.js +69 -0
  123. package/dist/construction/stair.js.map +1 -0
  124. package/dist/construction/types.d.ts +219 -0
  125. package/dist/construction/types.d.ts.map +1 -0
  126. package/dist/construction/types.js +2 -0
  127. package/dist/construction/types.js.map +1 -0
  128. package/dist/electronics/awg.d.ts +9 -0
  129. package/dist/electronics/awg.d.ts.map +1 -0
  130. package/dist/electronics/awg.js +66 -0
  131. package/dist/electronics/awg.js.map +1 -0
  132. package/dist/electronics/capacitor.d.ts +9 -0
  133. package/dist/electronics/capacitor.d.ts.map +1 -0
  134. package/dist/electronics/capacitor.js +51 -0
  135. package/dist/electronics/capacitor.js.map +1 -0
  136. package/dist/electronics/index.d.ts +12 -0
  137. package/dist/electronics/index.d.ts.map +1 -0
  138. package/dist/electronics/index.js +12 -0
  139. package/dist/electronics/index.js.map +1 -0
  140. package/dist/electronics/led.d.ts +9 -0
  141. package/dist/electronics/led.d.ts.map +1 -0
  142. package/dist/electronics/led.js +72 -0
  143. package/dist/electronics/led.js.map +1 -0
  144. package/dist/electronics/reflow.d.ts +12 -0
  145. package/dist/electronics/reflow.d.ts.map +1 -0
  146. package/dist/electronics/reflow.js +77 -0
  147. package/dist/electronics/reflow.js.map +1 -0
  148. package/dist/electronics/resistor.d.ts +8 -0
  149. package/dist/electronics/resistor.d.ts.map +1 -0
  150. package/dist/electronics/resistor.js +137 -0
  151. package/dist/electronics/resistor.js.map +1 -0
  152. package/dist/electronics/smt-takt.d.ts +8 -0
  153. package/dist/electronics/smt-takt.d.ts.map +1 -0
  154. package/dist/electronics/smt-takt.js +59 -0
  155. package/dist/electronics/smt-takt.js.map +1 -0
  156. package/dist/electronics/solder.d.ts +8 -0
  157. package/dist/electronics/solder.d.ts.map +1 -0
  158. package/dist/electronics/solder.js +46 -0
  159. package/dist/electronics/solder.js.map +1 -0
  160. package/dist/electronics/stencil.d.ts +9 -0
  161. package/dist/electronics/stencil.d.ts.map +1 -0
  162. package/dist/electronics/stencil.js +78 -0
  163. package/dist/electronics/stencil.js.map +1 -0
  164. package/dist/electronics/trace.d.ts +8 -0
  165. package/dist/electronics/trace.d.ts.map +1 -0
  166. package/dist/electronics/trace.js +75 -0
  167. package/dist/electronics/trace.js.map +1 -0
  168. package/dist/electronics/types.d.ts +145 -0
  169. package/dist/electronics/types.d.ts.map +1 -0
  170. package/dist/electronics/types.js +2 -0
  171. package/dist/electronics/types.js.map +1 -0
  172. package/dist/electronics/via.d.ts +12 -0
  173. package/dist/electronics/via.d.ts.map +1 -0
  174. package/dist/electronics/via.js +63 -0
  175. package/dist/electronics/via.js.map +1 -0
  176. package/dist/energy/carbonFootprint.d.ts +13 -0
  177. package/dist/energy/carbonFootprint.d.ts.map +1 -0
  178. package/dist/energy/carbonFootprint.js +41 -0
  179. package/dist/energy/carbonFootprint.js.map +1 -0
  180. package/dist/energy/compressedAirCost.d.ts +14 -0
  181. package/dist/energy/compressedAirCost.d.ts.map +1 -0
  182. package/dist/energy/compressedAirCost.js +39 -0
  183. package/dist/energy/compressedAirCost.js.map +1 -0
  184. package/dist/energy/index.d.ts +8 -0
  185. package/dist/energy/index.d.ts.map +1 -0
  186. package/dist/energy/index.js +8 -0
  187. package/dist/energy/index.js.map +1 -0
  188. package/dist/energy/motorEfficiency.d.ts +14 -0
  189. package/dist/energy/motorEfficiency.d.ts.map +1 -0
  190. package/dist/energy/motorEfficiency.js +47 -0
  191. package/dist/energy/motorEfficiency.js.map +1 -0
  192. package/dist/energy/pfCorrection.d.ts +15 -0
  193. package/dist/energy/pfCorrection.d.ts.map +1 -0
  194. package/dist/energy/pfCorrection.js +56 -0
  195. package/dist/energy/pfCorrection.js.map +1 -0
  196. package/dist/energy/powerCost.d.ts +15 -0
  197. package/dist/energy/powerCost.d.ts.map +1 -0
  198. package/dist/energy/powerCost.js +37 -0
  199. package/dist/energy/powerCost.js.map +1 -0
  200. package/dist/energy/types.d.ts +119 -0
  201. package/dist/energy/types.d.ts.map +1 -0
  202. package/dist/energy/types.js +2 -0
  203. package/dist/energy/types.js.map +1 -0
  204. package/dist/energy/vfdSavings.d.ts +16 -0
  205. package/dist/energy/vfdSavings.d.ts.map +1 -0
  206. package/dist/energy/vfdSavings.js +57 -0
  207. package/dist/energy/vfdSavings.js.map +1 -0
  208. package/dist/food/calorie.d.ts +13 -0
  209. package/dist/food/calorie.d.ts.map +1 -0
  210. package/dist/food/calorie.js +42 -0
  211. package/dist/food/calorie.js.map +1 -0
  212. package/dist/food/expiry.d.ts +13 -0
  213. package/dist/food/expiry.d.ts.map +1 -0
  214. package/dist/food/expiry.js +58 -0
  215. package/dist/food/expiry.js.map +1 -0
  216. package/dist/food/haccp.d.ts +18 -0
  217. package/dist/food/haccp.d.ts.map +1 -0
  218. package/dist/food/haccp.js +70 -0
  219. package/dist/food/haccp.js.map +1 -0
  220. package/dist/food/index.d.ts +6 -0
  221. package/dist/food/index.d.ts.map +1 -0
  222. package/dist/food/index.js +6 -0
  223. package/dist/food/index.js.map +1 -0
  224. package/dist/food/nutrition.d.ts +12 -0
  225. package/dist/food/nutrition.d.ts.map +1 -0
  226. package/dist/food/nutrition.js +75 -0
  227. package/dist/food/nutrition.js.map +1 -0
  228. package/dist/food/types.d.ts +104 -0
  229. package/dist/food/types.d.ts.map +1 -0
  230. package/dist/food/types.js +2 -0
  231. package/dist/food/types.js.map +1 -0
  232. package/dist/index.d.ts +7 -0
  233. package/dist/index.d.ts.map +1 -0
  234. package/dist/index.js +9 -0
  235. package/dist/index.js.map +1 -0
  236. package/dist/logistics/cbm.d.ts +12 -0
  237. package/dist/logistics/cbm.d.ts.map +1 -0
  238. package/dist/logistics/cbm.js +37 -0
  239. package/dist/logistics/cbm.js.map +1 -0
  240. package/dist/logistics/containerFit.d.ts +12 -0
  241. package/dist/logistics/containerFit.d.ts.map +1 -0
  242. package/dist/logistics/containerFit.js +73 -0
  243. package/dist/logistics/containerFit.js.map +1 -0
  244. package/dist/logistics/dimWeight.d.ts +13 -0
  245. package/dist/logistics/dimWeight.d.ts.map +1 -0
  246. package/dist/logistics/dimWeight.js +50 -0
  247. package/dist/logistics/dimWeight.js.map +1 -0
  248. package/dist/logistics/eoq.d.ts +18 -0
  249. package/dist/logistics/eoq.d.ts.map +1 -0
  250. package/dist/logistics/eoq.js +42 -0
  251. package/dist/logistics/eoq.js.map +1 -0
  252. package/dist/logistics/fillRate.d.ts +22 -0
  253. package/dist/logistics/fillRate.d.ts.map +1 -0
  254. package/dist/logistics/fillRate.js +84 -0
  255. package/dist/logistics/fillRate.js.map +1 -0
  256. package/dist/logistics/freightClass.d.ts +12 -0
  257. package/dist/logistics/freightClass.d.ts.map +1 -0
  258. package/dist/logistics/freightClass.js +68 -0
  259. package/dist/logistics/freightClass.js.map +1 -0
  260. package/dist/logistics/index.d.ts +15 -0
  261. package/dist/logistics/index.d.ts.map +1 -0
  262. package/dist/logistics/index.js +15 -0
  263. package/dist/logistics/index.js.map +1 -0
  264. package/dist/logistics/kanban.d.ts +19 -0
  265. package/dist/logistics/kanban.d.ts.map +1 -0
  266. package/dist/logistics/kanban.js +48 -0
  267. package/dist/logistics/kanban.js.map +1 -0
  268. package/dist/logistics/pallet3d.d.ts +16 -0
  269. package/dist/logistics/pallet3d.d.ts.map +1 -0
  270. package/dist/logistics/pallet3d.js +380 -0
  271. package/dist/logistics/pallet3d.js.map +1 -0
  272. package/dist/logistics/palletStack.d.ts +12 -0
  273. package/dist/logistics/palletStack.d.ts.map +1 -0
  274. package/dist/logistics/palletStack.js +65 -0
  275. package/dist/logistics/palletStack.js.map +1 -0
  276. package/dist/logistics/pickTime.d.ts +17 -0
  277. package/dist/logistics/pickTime.d.ts.map +1 -0
  278. package/dist/logistics/pickTime.js +70 -0
  279. package/dist/logistics/pickTime.js.map +1 -0
  280. package/dist/logistics/safetyStock.d.ts +24 -0
  281. package/dist/logistics/safetyStock.d.ts.map +1 -0
  282. package/dist/logistics/safetyStock.js +99 -0
  283. package/dist/logistics/safetyStock.js.map +1 -0
  284. package/dist/logistics/shipping.d.ts +16 -0
  285. package/dist/logistics/shipping.d.ts.map +1 -0
  286. package/dist/logistics/shipping.js +115 -0
  287. package/dist/logistics/shipping.js.map +1 -0
  288. package/dist/logistics/tsp.d.ts +12 -0
  289. package/dist/logistics/tsp.d.ts.map +1 -0
  290. package/dist/logistics/tsp.js +166 -0
  291. package/dist/logistics/tsp.js.map +1 -0
  292. package/dist/logistics/types.d.ts +315 -0
  293. package/dist/logistics/types.d.ts.map +1 -0
  294. package/dist/logistics/types.js +5 -0
  295. package/dist/logistics/types.js.map +1 -0
  296. package/dist/metal/bearing.d.ts +11 -0
  297. package/dist/metal/bearing.d.ts.map +1 -0
  298. package/dist/metal/bearing.js +32 -0
  299. package/dist/metal/bearing.js.map +1 -0
  300. package/dist/metal/bendAllowance.d.ts +13 -0
  301. package/dist/metal/bendAllowance.d.ts.map +1 -0
  302. package/dist/metal/bendAllowance.js +75 -0
  303. package/dist/metal/bendAllowance.js.map +1 -0
  304. package/dist/metal/bolt.d.ts +32 -0
  305. package/dist/metal/bolt.d.ts.map +1 -0
  306. package/dist/metal/bolt.js +149 -0
  307. package/dist/metal/bolt.js.map +1 -0
  308. package/dist/metal/cutting.d.ts +10 -0
  309. package/dist/metal/cutting.d.ts.map +1 -0
  310. package/dist/metal/cutting.js +55 -0
  311. package/dist/metal/cutting.js.map +1 -0
  312. package/dist/metal/cuttingStock.d.ts +8 -0
  313. package/dist/metal/cuttingStock.d.ts.map +1 -0
  314. package/dist/metal/cuttingStock.js +89 -0
  315. package/dist/metal/cuttingStock.js.map +1 -0
  316. package/dist/metal/flatPattern.d.ts +12 -0
  317. package/dist/metal/flatPattern.d.ts.map +1 -0
  318. package/dist/metal/flatPattern.js +50 -0
  319. package/dist/metal/flatPattern.js.map +1 -0
  320. package/dist/metal/gear.d.ts +13 -0
  321. package/dist/metal/gear.d.ts.map +1 -0
  322. package/dist/metal/gear.js +79 -0
  323. package/dist/metal/gear.js.map +1 -0
  324. package/dist/metal/hardness.d.ts +15 -0
  325. package/dist/metal/hardness.d.ts.map +1 -0
  326. package/dist/metal/hardness.js +77 -0
  327. package/dist/metal/hardness.js.map +1 -0
  328. package/dist/metal/index.d.ts +24 -0
  329. package/dist/metal/index.d.ts.map +1 -0
  330. package/dist/metal/index.js +24 -0
  331. package/dist/metal/index.js.map +1 -0
  332. package/dist/metal/kFactorReverse.d.ts +19 -0
  333. package/dist/metal/kFactorReverse.d.ts.map +1 -0
  334. package/dist/metal/kFactorReverse.js +39 -0
  335. package/dist/metal/kFactorReverse.js.map +1 -0
  336. package/dist/metal/material.d.ts +5 -0
  337. package/dist/metal/material.d.ts.map +1 -0
  338. package/dist/metal/material.js +56 -0
  339. package/dist/metal/material.js.map +1 -0
  340. package/dist/metal/metalWeight.d.ts +10 -0
  341. package/dist/metal/metalWeight.d.ts.map +1 -0
  342. package/dist/metal/metalWeight.js +82 -0
  343. package/dist/metal/metalWeight.js.map +1 -0
  344. package/dist/metal/pressFit.d.ts +15 -0
  345. package/dist/metal/pressFit.d.ts.map +1 -0
  346. package/dist/metal/pressFit.js +96 -0
  347. package/dist/metal/pressFit.js.map +1 -0
  348. package/dist/metal/pressTonnage.d.ts +13 -0
  349. package/dist/metal/pressTonnage.d.ts.map +1 -0
  350. package/dist/metal/pressTonnage.js +86 -0
  351. package/dist/metal/pressTonnage.js.map +1 -0
  352. package/dist/metal/roughness.d.ts +6 -0
  353. package/dist/metal/roughness.d.ts.map +1 -0
  354. package/dist/metal/roughness.js +62 -0
  355. package/dist/metal/roughness.js.map +1 -0
  356. package/dist/metal/screw.d.ts +7 -0
  357. package/dist/metal/screw.d.ts.map +1 -0
  358. package/dist/metal/screw.js +44 -0
  359. package/dist/metal/screw.js.map +1 -0
  360. package/dist/metal/spring.d.ts +11 -0
  361. package/dist/metal/spring.d.ts.map +1 -0
  362. package/dist/metal/spring.js +59 -0
  363. package/dist/metal/spring.js.map +1 -0
  364. package/dist/metal/tap.d.ts +16 -0
  365. package/dist/metal/tap.d.ts.map +1 -0
  366. package/dist/metal/tap.js +62 -0
  367. package/dist/metal/tap.js.map +1 -0
  368. package/dist/metal/thread.d.ts +8 -0
  369. package/dist/metal/thread.d.ts.map +1 -0
  370. package/dist/metal/thread.js +75 -0
  371. package/dist/metal/thread.js.map +1 -0
  372. package/dist/metal/tolerance.d.ts +6 -0
  373. package/dist/metal/tolerance.d.ts.map +1 -0
  374. package/dist/metal/tolerance.js +113 -0
  375. package/dist/metal/tolerance.js.map +1 -0
  376. package/dist/metal/types.d.ts +494 -0
  377. package/dist/metal/types.d.ts.map +1 -0
  378. package/dist/metal/types.js +2 -0
  379. package/dist/metal/types.js.map +1 -0
  380. package/dist/metal/vibration.d.ts +6 -0
  381. package/dist/metal/vibration.d.ts.map +1 -0
  382. package/dist/metal/vibration.js +153 -0
  383. package/dist/metal/vibration.js.map +1 -0
  384. package/dist/metal/weldHeat.d.ts +6 -0
  385. package/dist/metal/weldHeat.d.ts.map +1 -0
  386. package/dist/metal/weldHeat.js +138 -0
  387. package/dist/metal/weldHeat.js.map +1 -0
  388. package/dist/metal/welding.d.ts +6 -0
  389. package/dist/metal/welding.d.ts.map +1 -0
  390. package/dist/metal/welding.js +80 -0
  391. package/dist/metal/welding.js.map +1 -0
  392. package/dist/quality/aql.d.ts +10 -0
  393. package/dist/quality/aql.d.ts.map +1 -0
  394. package/dist/quality/aql.js +104 -0
  395. package/dist/quality/aql.js.map +1 -0
  396. package/dist/quality/cpk.d.ts +14 -0
  397. package/dist/quality/cpk.d.ts.map +1 -0
  398. package/dist/quality/cpk.js +44 -0
  399. package/dist/quality/cpk.js.map +1 -0
  400. package/dist/quality/cycle.d.ts +11 -0
  401. package/dist/quality/cycle.d.ts.map +1 -0
  402. package/dist/quality/cycle.js +55 -0
  403. package/dist/quality/cycle.js.map +1 -0
  404. package/dist/quality/downtime.d.ts +9 -0
  405. package/dist/quality/downtime.d.ts.map +1 -0
  406. package/dist/quality/downtime.js +28 -0
  407. package/dist/quality/downtime.js.map +1 -0
  408. package/dist/quality/dpmo.d.ts +10 -0
  409. package/dist/quality/dpmo.d.ts.map +1 -0
  410. package/dist/quality/dpmo.js +114 -0
  411. package/dist/quality/dpmo.js.map +1 -0
  412. package/dist/quality/index.d.ts +15 -0
  413. package/dist/quality/index.d.ts.map +1 -0
  414. package/dist/quality/index.js +15 -0
  415. package/dist/quality/index.js.map +1 -0
  416. package/dist/quality/lineBalancing.d.ts +9 -0
  417. package/dist/quality/lineBalancing.d.ts.map +1 -0
  418. package/dist/quality/lineBalancing.js +185 -0
  419. package/dist/quality/lineBalancing.js.map +1 -0
  420. package/dist/quality/mtbf.d.ts +13 -0
  421. package/dist/quality/mtbf.d.ts.map +1 -0
  422. package/dist/quality/mtbf.js +48 -0
  423. package/dist/quality/mtbf.js.map +1 -0
  424. package/dist/quality/oee.d.ts +11 -0
  425. package/dist/quality/oee.d.ts.map +1 -0
  426. package/dist/quality/oee.js +43 -0
  427. package/dist/quality/oee.js.map +1 -0
  428. package/dist/quality/ppk.d.ts +15 -0
  429. package/dist/quality/ppk.d.ts.map +1 -0
  430. package/dist/quality/ppk.js +61 -0
  431. package/dist/quality/ppk.js.map +1 -0
  432. package/dist/quality/ppm.d.ts +9 -0
  433. package/dist/quality/ppm.d.ts.map +1 -0
  434. package/dist/quality/ppm.js +134 -0
  435. package/dist/quality/ppm.js.map +1 -0
  436. package/dist/quality/rpn.d.ts +11 -0
  437. package/dist/quality/rpn.d.ts.map +1 -0
  438. package/dist/quality/rpn.js +48 -0
  439. package/dist/quality/rpn.js.map +1 -0
  440. package/dist/quality/takt.d.ts +13 -0
  441. package/dist/quality/takt.d.ts.map +1 -0
  442. package/dist/quality/takt.js +44 -0
  443. package/dist/quality/takt.js.map +1 -0
  444. package/dist/quality/types.d.ts +261 -0
  445. package/dist/quality/types.d.ts.map +1 -0
  446. package/dist/quality/types.js +2 -0
  447. package/dist/quality/types.js.map +1 -0
  448. package/dist/quality/yield.d.ts +12 -0
  449. package/dist/quality/yield.d.ts.map +1 -0
  450. package/dist/quality/yield.js +56 -0
  451. package/dist/quality/yield.js.map +1 -0
  452. package/dist/safety/fallClearance.d.ts +12 -0
  453. package/dist/safety/fallClearance.d.ts.map +1 -0
  454. package/dist/safety/fallClearance.js +37 -0
  455. package/dist/safety/fallClearance.js.map +1 -0
  456. package/dist/safety/havsCalculate.d.ts +16 -0
  457. package/dist/safety/havsCalculate.d.ts.map +1 -0
  458. package/dist/safety/havsCalculate.js +103 -0
  459. package/dist/safety/havsCalculate.js.map +1 -0
  460. package/dist/safety/index.d.ts +8 -0
  461. package/dist/safety/index.d.ts.map +1 -0
  462. package/dist/safety/index.js +8 -0
  463. package/dist/safety/index.js.map +1 -0
  464. package/dist/safety/nioshLifting.d.ts +21 -0
  465. package/dist/safety/nioshLifting.d.ts.map +1 -0
  466. package/dist/safety/nioshLifting.js +164 -0
  467. package/dist/safety/nioshLifting.js.map +1 -0
  468. package/dist/safety/noiseExposure.d.ts +22 -0
  469. package/dist/safety/noiseExposure.d.ts.map +1 -0
  470. package/dist/safety/noiseExposure.js +76 -0
  471. package/dist/safety/noiseExposure.js.map +1 -0
  472. package/dist/safety/respiratorCalculate.d.ts +14 -0
  473. package/dist/safety/respiratorCalculate.d.ts.map +1 -0
  474. package/dist/safety/respiratorCalculate.js +90 -0
  475. package/dist/safety/respiratorCalculate.js.map +1 -0
  476. package/dist/safety/types.d.ts +93 -0
  477. package/dist/safety/types.d.ts.map +1 -0
  478. package/dist/safety/types.js +2 -0
  479. package/dist/safety/types.js.map +1 -0
  480. package/dist/safety/wbgtCalculate.d.ts +25 -0
  481. package/dist/safety/wbgtCalculate.d.ts.map +1 -0
  482. package/dist/safety/wbgtCalculate.js +65 -0
  483. package/dist/safety/wbgtCalculate.js.map +1 -0
  484. package/dist/utility/assignment.d.ts +11 -0
  485. package/dist/utility/assignment.d.ts.map +1 -0
  486. package/dist/utility/assignment.js +113 -0
  487. package/dist/utility/assignment.js.map +1 -0
  488. package/dist/utility/index.d.ts +4 -0
  489. package/dist/utility/index.d.ts.map +1 -0
  490. package/dist/utility/index.js +4 -0
  491. package/dist/utility/index.js.map +1 -0
  492. package/dist/utility/qrcode.d.ts +30 -0
  493. package/dist/utility/qrcode.d.ts.map +1 -0
  494. package/dist/utility/qrcode.js +30 -0
  495. package/dist/utility/qrcode.js.map +1 -0
  496. package/dist/utility/types.d.ts +64 -0
  497. package/dist/utility/types.d.ts.map +1 -0
  498. package/dist/utility/types.js +2 -0
  499. package/dist/utility/types.js.map +1 -0
  500. package/dist/utility/unit.d.ts +25 -0
  501. package/dist/utility/unit.d.ts.map +1 -0
  502. package/dist/utility/unit.js +136 -0
  503. package/dist/utility/unit.js.map +1 -0
  504. package/dist/utils.d.ts +9 -0
  505. package/dist/utils.d.ts.map +1 -0
  506. package/dist/utils.js +12 -0
  507. package/dist/utils.js.map +1 -0
  508. package/package.json +117 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Batch Scaling Types
3
+ */
4
+ export interface BatchIngredient {
5
+ name: string;
6
+ amount: number;
7
+ unit: string;
8
+ }
9
+ export interface BatchInput {
10
+ originalBatchSize: number;
11
+ targetBatchSize: number;
12
+ ingredients: BatchIngredient[];
13
+ }
14
+ export interface ScaledIngredient {
15
+ name: string;
16
+ originalAmount: number;
17
+ scaledAmount: number;
18
+ unit: string;
19
+ }
20
+ export interface BatchResult {
21
+ scaleFactor: number;
22
+ scaledIngredients: ScaledIngredient[];
23
+ }
24
+ /**
25
+ * Concentration Conversion Types
26
+ */
27
+ export type ConcentrationUnit = 'molPerL' | 'wtPercent' | 'ppm';
28
+ export interface ConcentrationInput {
29
+ fromUnit: ConcentrationUnit;
30
+ value: number;
31
+ molecularWeight: number;
32
+ solutionDensity: number;
33
+ }
34
+ export interface ConcentrationResult {
35
+ molPerL: number;
36
+ wtPercent: number;
37
+ ppm: number;
38
+ }
39
+ /**
40
+ * Dilution Calculator Types
41
+ */
42
+ export type DilutionSolveFor = 'c2' | 'v2' | 'c1' | 'v1';
43
+ export interface DilutionInput {
44
+ solveFor: DilutionSolveFor;
45
+ c1?: number;
46
+ v1?: number;
47
+ c2?: number;
48
+ v2?: number;
49
+ }
50
+ export interface DilutionResult {
51
+ c1: number;
52
+ v1: number;
53
+ c2: number;
54
+ v2: number;
55
+ solventToAdd: number;
56
+ }
57
+ /**
58
+ * pH Buffer Calculator Types
59
+ */
60
+ export type BufferSystem = 'acetate' | 'phosphate' | 'tris' | 'citrate' | 'carbonate' | 'custom';
61
+ export interface PhInput {
62
+ bufferSystem: BufferSystem;
63
+ acidConcentration: number;
64
+ baseConcentration: number;
65
+ temperature: number;
66
+ customPka?: number;
67
+ }
68
+ export interface PhResult {
69
+ pH: number;
70
+ pKa: number;
71
+ bufferCapacity: number;
72
+ effectiveRange: {
73
+ min: number;
74
+ max: number;
75
+ };
76
+ }
77
+ /**
78
+ * Reactor Volume Calculator Types
79
+ */
80
+ export type ReactorShape = 'cylindrical' | 'spherical';
81
+ export interface ReactorInput {
82
+ shape: ReactorShape;
83
+ diameter: number;
84
+ height?: number;
85
+ fillRatio: number;
86
+ agitatorType?: 'none' | 'anchor' | 'turbine' | 'propeller';
87
+ }
88
+ export interface ReactorResult {
89
+ totalVolume: number;
90
+ workingVolume: number;
91
+ totalVolumeLiters: number;
92
+ workingVolumeLiters: number;
93
+ surfaceArea: number;
94
+ volumeToSurfaceRatio: number;
95
+ }
96
+ /**
97
+ * Shelf Life Calculator Types
98
+ */
99
+ export interface ShelfLifeInput {
100
+ shelfLifeAtRef: number;
101
+ refTemp: number;
102
+ targetTemp: number;
103
+ q10: number;
104
+ }
105
+ export interface ShelfLifeResult {
106
+ estimatedShelfLife: number;
107
+ accelerationFactor: number;
108
+ refTemp: number;
109
+ targetTemp: number;
110
+ tempDifference: number;
111
+ }
112
+ /**
113
+ * Injection Molding Cycle Time Types
114
+ */
115
+ export type ResinType = 'abs' | 'pp' | 'pc' | 'pa' | 'pmma' | 'pet' | 'pom' | 'ps' | 'custom';
116
+ export interface InjectionCycleInput {
117
+ resin: ResinType;
118
+ wallThickness: number;
119
+ shotWeight: number;
120
+ injectionRate?: number;
121
+ moldOpenCloseTime?: number;
122
+ ejectionTime?: number;
123
+ thermalDiffusivity?: number;
124
+ meltTemp?: number;
125
+ moldTemp?: number;
126
+ ejectionTemp?: number;
127
+ density?: number;
128
+ }
129
+ export interface InjectionCyclePhase {
130
+ phase: string;
131
+ time: number;
132
+ percentage: number;
133
+ }
134
+ export interface InjectionCycleResult {
135
+ coolingTime: number;
136
+ fillTime: number;
137
+ packingTime: number;
138
+ moldOpenClose: number;
139
+ ejectionTime: number;
140
+ totalCycleTime: number;
141
+ partsPerHour: number;
142
+ breakdown: InjectionCyclePhase[];
143
+ }
144
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chemical/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/chemical/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import type { AggregateInput, AggregateResult, AggregateType, AggregateDensity } from './types.js';
2
+ /**
3
+ * Common aggregate densities (kg/m³)
4
+ */
5
+ export declare const AGGREGATE_DENSITIES: AggregateDensity[];
6
+ /**
7
+ * Get density for a specific aggregate type
8
+ *
9
+ * @param type - Aggregate type
10
+ * @returns Density in kg/m³
11
+ */
12
+ export declare function getAggregateDensity(type: AggregateType): number;
13
+ /**
14
+ * Calculate how much area can be covered with a given volume at a specific depth
15
+ *
16
+ * @param volumeM3 - Volume in cubic meters
17
+ * @param depthCm - Depth in centimeters
18
+ * @returns Coverage area in square meters
19
+ */
20
+ export declare function aggregateCoverage(volumeM3: number, depthCm: number): number;
21
+ /**
22
+ * Calculate aggregate volume, weight, and coverage
23
+ *
24
+ * Formulas:
25
+ * - Volume = length × width × depth
26
+ * - Weight = volume × density
27
+ * - Coverage area = length × width (footprint)
28
+ *
29
+ * @param input - Aggregate input parameters
30
+ * @returns Aggregate calculation results
31
+ */
32
+ export declare function aggregate(input: AggregateInput): AggregateResult;
33
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnG;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAOjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG/D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmDhE"}
@@ -0,0 +1,92 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Common aggregate densities (kg/m³)
4
+ */
5
+ export const AGGREGATE_DENSITIES = [
6
+ { type: 'gravel', density: 1850, label: 'Gravel' },
7
+ { type: 'sand', density: 1600, label: 'Sand' },
8
+ { type: 'crushed_stone', density: 1600, label: 'Crushed Stone' },
9
+ { type: 'topsoil', density: 1100, label: 'Topsoil' },
10
+ { type: 'mulch', density: 400, label: 'Mulch' },
11
+ { type: 'custom', density: 0, label: 'Custom' },
12
+ ];
13
+ /**
14
+ * Get density for a specific aggregate type
15
+ *
16
+ * @param type - Aggregate type
17
+ * @returns Density in kg/m³
18
+ */
19
+ export function getAggregateDensity(type) {
20
+ const aggregate = AGGREGATE_DENSITIES.find(a => a.type === type);
21
+ return aggregate?.density ?? 0;
22
+ }
23
+ /**
24
+ * Calculate how much area can be covered with a given volume at a specific depth
25
+ *
26
+ * @param volumeM3 - Volume in cubic meters
27
+ * @param depthCm - Depth in centimeters
28
+ * @returns Coverage area in square meters
29
+ */
30
+ export function aggregateCoverage(volumeM3, depthCm) {
31
+ if (volumeM3 <= 0 || depthCm <= 0) {
32
+ throw new Error('Volume and depth must be greater than zero');
33
+ }
34
+ const depthM = depthCm / 100;
35
+ return roundTo(volumeM3 / depthM, 2);
36
+ }
37
+ /**
38
+ * Calculate aggregate volume, weight, and coverage
39
+ *
40
+ * Formulas:
41
+ * - Volume = length × width × depth
42
+ * - Weight = volume × density
43
+ * - Coverage area = length × width (footprint)
44
+ *
45
+ * @param input - Aggregate input parameters
46
+ * @returns Aggregate calculation results
47
+ */
48
+ export function aggregate(input) {
49
+ const { length, width, depth, depthUnit, aggregateType, customDensity } = input;
50
+ // Validate inputs
51
+ if (length <= 0 || width <= 0 || depth <= 0) {
52
+ throw new Error('All dimensions must be greater than zero');
53
+ }
54
+ // Convert depth to meters if in centimeters
55
+ const depthInMeters = depthUnit === 'centimeters' ? depth / 100 : depth;
56
+ // Get density based on aggregate type
57
+ let density;
58
+ if (aggregateType === 'custom') {
59
+ if (customDensity === undefined || customDensity <= 0) {
60
+ throw new Error('Custom density must be provided and greater than zero');
61
+ }
62
+ density = customDensity;
63
+ }
64
+ else {
65
+ const aggregateInfo = AGGREGATE_DENSITIES.find(a => a.type === aggregateType);
66
+ if (!aggregateInfo) {
67
+ throw new Error(`Unknown aggregate type: ${aggregateType}`);
68
+ }
69
+ density = aggregateInfo.density;
70
+ }
71
+ // Calculate volume (m³)
72
+ const volume = roundTo(length * width * depthInMeters, 3);
73
+ // Calculate weight (kg)
74
+ const weight = roundTo(volume * density, 2);
75
+ // Convert to metric tonnes
76
+ const weightTonnes = roundTo(weight / 1000, 3);
77
+ // Coverage area is simply length × width (the footprint)
78
+ const coverageArea = roundTo(length * width, 2);
79
+ // Calculate bags needed
80
+ const bags20kg = Math.ceil(weight / 20);
81
+ const bags25kg = Math.ceil(weight / 25);
82
+ return {
83
+ volume,
84
+ weight,
85
+ weightTonnes,
86
+ coverageArea,
87
+ density,
88
+ bags20kg,
89
+ bags25kg,
90
+ };
91
+ }
92
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/construction/aggregate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { LoadInput, LoadResult } from './types.js';
2
+ /**
3
+ * Calculate beam load analysis results
4
+ *
5
+ * Supports simple, cantilever, and fixed beam supports with
6
+ * uniform, concentrated, or combined loading.
7
+ *
8
+ * @param input - Beam load input parameters
9
+ * @returns Load analysis result or null for invalid inputs
10
+ */
11
+ export declare function beamLoad(input: LoadInput): LoadResult | null;
12
+ //# sourceMappingURL=beamLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beamLoad.d.ts","sourceRoot":"","sources":["../../src/construction/beamLoad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,CAkJ5D"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Calculate beam load analysis results
3
+ *
4
+ * Supports simple, cantilever, and fixed beam supports with
5
+ * uniform, concentrated, or combined loading.
6
+ *
7
+ * @param input - Beam load input parameters
8
+ * @returns Load analysis result or null for invalid inputs
9
+ */
10
+ export function beamLoad(input) {
11
+ const { loadType, support, span, uniformLoad, pointLoad, pointPosition } = input;
12
+ // Validate span
13
+ if (span <= 0) {
14
+ return null;
15
+ }
16
+ // Validate required inputs based on load type
17
+ if (loadType === 'uniform' && (uniformLoad === undefined || uniformLoad === null)) {
18
+ return null;
19
+ }
20
+ if (loadType === 'concentrated' && (pointLoad === undefined || pointLoad === null)) {
21
+ return null;
22
+ }
23
+ if (loadType === 'combined') {
24
+ if (uniformLoad === undefined || uniformLoad === null)
25
+ return null;
26
+ if (pointLoad === undefined || pointLoad === null)
27
+ return null;
28
+ }
29
+ const w = uniformLoad ?? 0;
30
+ const P = pointLoad ?? 0;
31
+ const a = pointPosition ?? span / 2; // default to midspan
32
+ const b = span - a;
33
+ const L = span;
34
+ let maxMoment = 0;
35
+ let maxShear = 0;
36
+ let maxDeflectionCoeff = 0;
37
+ let reactionLeft = 0;
38
+ let reactionRight = 0;
39
+ let momentAtPoint;
40
+ if (support === 'simple') {
41
+ if (loadType === 'uniform') {
42
+ // Simple beam with uniform load
43
+ // M_max = wL²/8
44
+ maxMoment = (w * L * L) / 8;
45
+ // V_max = wL/2
46
+ maxShear = (w * L) / 2;
47
+ // δ_max coefficient = 5/384 (multiply by wL⁴/EI)
48
+ maxDeflectionCoeff = 5 / 384;
49
+ reactionLeft = (w * L) / 2;
50
+ reactionRight = (w * L) / 2;
51
+ }
52
+ else if (loadType === 'concentrated') {
53
+ // Simple beam with point load
54
+ // M_max = P×a×b/L (maximum at point of application)
55
+ maxMoment = (P * a * b) / L;
56
+ // Reactions
57
+ reactionLeft = (P * b) / L;
58
+ reactionRight = (P * a) / L;
59
+ // V_max = max(R_L, R_R)
60
+ maxShear = Math.max(reactionLeft, reactionRight);
61
+ // δ_max coefficient for center load = 1/48
62
+ maxDeflectionCoeff = 1 / 48;
63
+ momentAtPoint = maxMoment;
64
+ }
65
+ else if (loadType === 'combined') {
66
+ // Combined uniform + point load
67
+ const uniformReaction = (w * L) / 2;
68
+ const pointReactionLeft = (P * b) / L;
69
+ const pointReactionRight = (P * a) / L;
70
+ reactionLeft = uniformReaction + pointReactionLeft;
71
+ reactionRight = uniformReaction + pointReactionRight;
72
+ // M_max for uniform = wL²/8, for point = Pab/L
73
+ const uniformMoment = (w * L * L) / 8;
74
+ const pointMoment = (P * a * b) / L;
75
+ maxMoment = uniformMoment + pointMoment;
76
+ maxShear = Math.max(reactionLeft, reactionRight);
77
+ maxDeflectionCoeff = 5 / 384; // approximate
78
+ momentAtPoint = pointMoment;
79
+ }
80
+ }
81
+ else if (support === 'cantilever') {
82
+ if (loadType === 'uniform') {
83
+ // Cantilever with uniform load
84
+ // M_max = wL²/2 (at fixed end)
85
+ maxMoment = (w * L * L) / 2;
86
+ // V_max = wL
87
+ maxShear = w * L;
88
+ // δ_max coefficient = 1/8 (multiply by wL⁴/EI)
89
+ maxDeflectionCoeff = 1 / 8;
90
+ reactionLeft = w * L; // reaction at fixed end
91
+ reactionRight = 0;
92
+ }
93
+ else if (loadType === 'concentrated') {
94
+ // Cantilever with point load at free end (or specified position)
95
+ // M_max = P×a (at fixed end)
96
+ maxMoment = P * a;
97
+ maxShear = P;
98
+ // δ_max coefficient = 1/3 (multiply by PL³/EI)
99
+ maxDeflectionCoeff = 1 / 3;
100
+ reactionLeft = P;
101
+ reactionRight = 0;
102
+ momentAtPoint = P * a;
103
+ }
104
+ else if (loadType === 'combined') {
105
+ maxMoment = (w * L * L) / 2 + P * a;
106
+ maxShear = w * L + P;
107
+ maxDeflectionCoeff = 1 / 8;
108
+ reactionLeft = w * L + P;
109
+ reactionRight = 0;
110
+ momentAtPoint = P * a;
111
+ }
112
+ }
113
+ else if (support === 'fixed') {
114
+ if (loadType === 'uniform') {
115
+ // Fixed-fixed beam with uniform load
116
+ // M_max = wL²/12 (at supports), M_center = wL²/24
117
+ maxMoment = (w * L * L) / 12;
118
+ // V_max = wL/2
119
+ maxShear = (w * L) / 2;
120
+ // δ_max coefficient = 1/384 (multiply by wL⁴/EI)
121
+ maxDeflectionCoeff = 1 / 384;
122
+ reactionLeft = (w * L) / 2;
123
+ reactionRight = (w * L) / 2;
124
+ }
125
+ else if (loadType === 'concentrated') {
126
+ // Fixed-fixed beam with center point load
127
+ // M_max = PL/8 (at supports when a=L/2)
128
+ maxMoment = (P * L) / 8;
129
+ reactionLeft = P / 2;
130
+ reactionRight = P / 2;
131
+ maxShear = P / 2;
132
+ maxDeflectionCoeff = 1 / 192;
133
+ momentAtPoint = (P * L) / 8;
134
+ }
135
+ else if (loadType === 'combined') {
136
+ maxMoment = (w * L * L) / 12 + (P * L) / 8;
137
+ maxShear = (w * L) / 2 + P / 2;
138
+ maxDeflectionCoeff = 1 / 384;
139
+ reactionLeft = (w * L) / 2 + P / 2;
140
+ reactionRight = (w * L) / 2 + P / 2;
141
+ momentAtPoint = (P * L) / 8;
142
+ }
143
+ }
144
+ const result = {
145
+ maxMoment,
146
+ maxShear,
147
+ maxDeflectionCoeff,
148
+ reactionLeft,
149
+ reactionRight,
150
+ };
151
+ if (momentAtPoint !== undefined) {
152
+ result.momentAtPoint = momentAtPoint;
153
+ }
154
+ return result;
155
+ }
156
+ //# sourceMappingURL=beamLoad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beamLoad.js","sourceRoot":"","sources":["../../src/construction/beamLoad.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { BrickInput, BrickResult, BrickSize, BrickDimensions } from './types.js';
2
+ /**
3
+ * Standard brick sizes in mm
4
+ */
5
+ export declare const BRICK_SIZES: Record<Exclude<BrickSize, 'custom'>, BrickDimensions>;
6
+ /**
7
+ * Calculate brick quantity for a wall
8
+ *
9
+ * Formulas:
10
+ * - Bricks per m² = 1,000,000 / ((brick length + mortar) × (brick height + mortar))
11
+ * - Total bricks = wall area × bricks per m² × (1 + waste factor)
12
+ *
13
+ * @param input - Brick input parameters
14
+ * @returns Brick calculation results
15
+ */
16
+ export declare function brick(input: BrickInput): BrickResult;
17
+ //# sourceMappingURL=brick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brick.d.ts","sourceRoot":"","sources":["../../src/construction/brick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGtF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,eAAe,CAK7E,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqCpD"}
@@ -0,0 +1,53 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Standard brick sizes in mm
4
+ */
5
+ export const BRICK_SIZES = {
6
+ modular: { length: 194, height: 57 }, // 7.625" x 2.25"
7
+ standard: { length: 203, height: 57 }, // 8" x 2.25"
8
+ queen: { length: 203, height: 70 }, // 8" x 2.75"
9
+ king: { length: 244, height: 70 }, // 9.625" x 2.75"
10
+ };
11
+ /**
12
+ * Calculate brick quantity for a wall
13
+ *
14
+ * Formulas:
15
+ * - Bricks per m² = 1,000,000 / ((brick length + mortar) × (brick height + mortar))
16
+ * - Total bricks = wall area × bricks per m² × (1 + waste factor)
17
+ *
18
+ * @param input - Brick input parameters
19
+ * @returns Brick calculation results
20
+ */
21
+ export function brick(input) {
22
+ const { wallArea, brickSize, customLength, customHeight, mortarThickness, wasteFactor } = input;
23
+ // Get brick dimensions
24
+ let length;
25
+ let height;
26
+ if (brickSize === 'custom') {
27
+ length = customLength ?? 200;
28
+ height = customHeight ?? 60;
29
+ }
30
+ else {
31
+ const dims = BRICK_SIZES[brickSize];
32
+ length = dims.length;
33
+ height = dims.height;
34
+ }
35
+ // Bricks per m² = 1,000,000 / ((brick length + mortar) × (brick height + mortar))
36
+ const brickWithMortarLength = length + mortarThickness;
37
+ const brickWithMortarHeight = height + mortarThickness;
38
+ const bricksPerSqMeter = 1000000 / (brickWithMortarLength * brickWithMortarHeight);
39
+ // Total bricks without waste
40
+ const bricksWithoutWaste = wallArea * bricksPerSqMeter;
41
+ // Total bricks with waste factor
42
+ const wasteMultiplier = 1 + (wasteFactor / 100);
43
+ const totalBricks = bricksWithoutWaste * wasteMultiplier;
44
+ // Wasted bricks
45
+ const wastedBricks = totalBricks - bricksWithoutWaste;
46
+ return {
47
+ bricksPerSqMeter: roundTo(bricksPerSqMeter, 1),
48
+ totalBricks: Math.ceil(totalBricks),
49
+ bricksWithoutWaste: Math.ceil(bricksWithoutWaste),
50
+ wastedBricks: Math.ceil(wastedBricks),
51
+ };
52
+ }
53
+ //# sourceMappingURL=brick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brick.js","sourceRoot":"","sources":["../../src/construction/brick.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAA0D;IAChF,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAK,iBAAiB;IAC1D,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAI,aAAa;IACtD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAO,aAAa;IACtD,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAQ,iBAAiB;CAC3D,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEhG,uBAAuB;IACvB,IAAI,MAAc,CAAC;IACnB,IAAI,MAAc,CAAC;IAEnB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,GAAG,YAAY,IAAI,GAAG,CAAC;QAC7B,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,WAAW,CAAC,SAAyC,CAAC,CAAC;QACpE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,kFAAkF;IAClF,MAAM,qBAAqB,GAAG,MAAM,GAAG,eAAe,CAAC;IACvD,MAAM,qBAAqB,GAAG,MAAM,GAAG,eAAe,CAAC;IACvD,MAAM,gBAAgB,GAAG,OAAO,GAAG,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,CAAC;IAEnF,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IAEvD,iCAAiC;IACjC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAEzD,gBAAgB;IAChB,MAAM,YAAY,GAAG,WAAW,GAAG,kBAAkB,CAAC;IAEtD,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACnC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACjD,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ConcreteInput, ConcreteResult } from './types.js';
2
+ /**
3
+ * Calculate concrete mix design quantities
4
+ *
5
+ * @param input - Concrete grade and volume
6
+ * @returns Material quantities in kg (cement, sand, gravel) and liters (water)
7
+ */
8
+ export declare function concreteMix(input: ConcreteInput): ConcreteResult;
9
+ //# sourceMappingURL=concreteMix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concreteMix.d.ts","sourceRoot":"","sources":["../../src/construction/concreteMix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAwB/E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAgBhE"}
@@ -0,0 +1,31 @@
1
+ import { roundTo } from '../utils.js';
2
+ const MIX_DESIGNS = {
3
+ '15': { cementPerM3: 280, sandRatio: 2, gravelRatio: 4, wcRatio: 0.60, ratioString: '1 : 2 : 4' },
4
+ '20': { cementPerM3: 330, sandRatio: 1.5, gravelRatio: 3, wcRatio: 0.55, ratioString: '1 : 1.5 : 3' },
5
+ '25': { cementPerM3: 370, sandRatio: 1, gravelRatio: 2, wcRatio: 0.50, ratioString: '1 : 1 : 2' },
6
+ '30': { cementPerM3: 400, sandRatio: 1, gravelRatio: 2, wcRatio: 0.45, ratioString: '1 : 1 : 2' },
7
+ '35': { cementPerM3: 430, sandRatio: 1, gravelRatio: 1.5, wcRatio: 0.42, ratioString: '1 : 1 : 1.5' },
8
+ '40': { cementPerM3: 460, sandRatio: 1, gravelRatio: 1.5, wcRatio: 0.40, ratioString: '1 : 1 : 1.5' },
9
+ };
10
+ /**
11
+ * Calculate concrete mix design quantities
12
+ *
13
+ * @param input - Concrete grade and volume
14
+ * @returns Material quantities in kg (cement, sand, gravel) and liters (water)
15
+ */
16
+ export function concreteMix(input) {
17
+ const { grade, volume } = input;
18
+ const design = MIX_DESIGNS[grade];
19
+ const cement = roundTo(design.cementPerM3 * volume, 2);
20
+ const sand = roundTo(cement * design.sandRatio, 2);
21
+ const gravel = roundTo(cement * design.gravelRatio, 2);
22
+ const water = roundTo(cement * design.wcRatio, 2);
23
+ return {
24
+ cement,
25
+ sand,
26
+ gravel,
27
+ water,
28
+ ratio: design.ratioString,
29
+ };
30
+ }
31
+ //# sourceMappingURL=concreteMix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concreteMix.js","sourceRoot":"","sources":["../../src/construction/concreteMix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AActC,MAAM,WAAW,GAAqC;IACpD,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IACjG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;IACrG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IACjG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IACjG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;IACrG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;CACtG,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAElD,OAAO;QACL,MAAM;QACN,IAAI;QACJ,MAAM;QACN,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,WAAW;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { EarthworkInput, EarthworkResult } from './types.js';
2
+ /**
3
+ * Calculate earthwork volumes
4
+ *
5
+ * Bank Volume: Volume in natural/undisturbed state (in-situ)
6
+ * Loose Volume: Volume after excavation (swelled)
7
+ * Compacted Volume: Volume after compaction (shrunk)
8
+ *
9
+ * @param input - Earthwork dimensions and factors
10
+ * @returns Volume calculations in m³
11
+ */
12
+ export declare function earthwork(input: EarthworkInput): EarthworkResult;
13
+ //# sourceMappingURL=earthwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"earthwork.d.ts","sourceRoot":"","sources":["../../src/construction/earthwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAiBhE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Calculate earthwork volumes
3
+ *
4
+ * Bank Volume: Volume in natural/undisturbed state (in-situ)
5
+ * Loose Volume: Volume after excavation (swelled)
6
+ * Compacted Volume: Volume after compaction (shrunk)
7
+ *
8
+ * @param input - Earthwork dimensions and factors
9
+ * @returns Volume calculations in m³
10
+ */
11
+ export function earthwork(input) {
12
+ const { length, width, depth, swellFactor, shrinkFactor } = input;
13
+ // Bank volume = undisturbed volume
14
+ const bankVolume = length * width * depth;
15
+ // Loose volume = bank volume × swell factor
16
+ const looseVolume = bankVolume * swellFactor;
17
+ // Compacted volume = bank volume × shrink factor
18
+ const compactedVolume = bankVolume * shrinkFactor;
19
+ return {
20
+ bankVolume,
21
+ looseVolume,
22
+ compactedVolume,
23
+ };
24
+ }
25
+ //# sourceMappingURL=earthwork.js.map