formulab 0.1.11 → 0.5.1
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.
- package/CHANGELOG.md +107 -10
- package/README.md +181 -22
- package/dist/automotive/brakingDistance.d.ts +16 -0
- package/dist/automotive/brakingDistance.d.ts.map +1 -0
- package/dist/automotive/brakingDistance.js +47 -0
- package/dist/automotive/brakingDistance.js.map +1 -0
- package/dist/automotive/index.d.ts +2 -1
- package/dist/automotive/index.d.ts.map +1 -1
- package/dist/automotive/index.js +1 -0
- package/dist/automotive/index.js.map +1 -1
- package/dist/automotive/types.d.ts +16 -0
- package/dist/automotive/types.d.ts.map +1 -1
- package/dist/battery/batteryPackConfig.d.ts +10 -0
- package/dist/battery/batteryPackConfig.d.ts.map +1 -0
- package/dist/battery/batteryPackConfig.js +28 -0
- package/dist/battery/batteryPackConfig.js.map +1 -0
- package/dist/battery/bmsBalancing.d.ts +11 -0
- package/dist/battery/bmsBalancing.d.ts.map +1 -0
- package/dist/battery/bmsBalancing.js +47 -0
- package/dist/battery/bmsBalancing.js.map +1 -0
- package/dist/battery/cRate.d.ts +10 -0
- package/dist/battery/cRate.d.ts.map +1 -0
- package/dist/battery/cRate.js +29 -0
- package/dist/battery/cRate.js.map +1 -0
- package/dist/battery/chargingProfile.d.ts +11 -0
- package/dist/battery/chargingProfile.d.ts.map +1 -0
- package/dist/battery/chargingProfile.js +38 -0
- package/dist/battery/chargingProfile.js.map +1 -0
- package/dist/battery/cycleLife.d.ts +11 -0
- package/dist/battery/cycleLife.d.ts.map +1 -0
- package/dist/battery/cycleLife.js +70 -0
- package/dist/battery/cycleLife.js.map +1 -0
- package/dist/battery/energyDensity.d.ts +10 -0
- package/dist/battery/energyDensity.d.ts.map +1 -0
- package/dist/battery/energyDensity.js +20 -0
- package/dist/battery/energyDensity.js.map +1 -0
- package/dist/battery/index.d.ts +12 -0
- package/dist/battery/index.d.ts.map +1 -0
- package/dist/battery/index.js +12 -0
- package/dist/battery/index.js.map +1 -0
- package/dist/battery/internalResistance.d.ts +11 -0
- package/dist/battery/internalResistance.d.ts.map +1 -0
- package/dist/battery/internalResistance.js +18 -0
- package/dist/battery/internalResistance.js.map +1 -0
- package/dist/battery/selfDischarge.d.ts +10 -0
- package/dist/battery/selfDischarge.d.ts.map +1 -0
- package/dist/battery/selfDischarge.js +17 -0
- package/dist/battery/selfDischarge.js.map +1 -0
- package/dist/battery/stateOfHealth.d.ts +11 -0
- package/dist/battery/stateOfHealth.d.ts.map +1 -0
- package/dist/battery/stateOfHealth.js +33 -0
- package/dist/battery/stateOfHealth.js.map +1 -0
- package/dist/battery/thermalRunaway.d.ts +11 -0
- package/dist/battery/thermalRunaway.d.ts.map +1 -0
- package/dist/battery/thermalRunaway.js +28 -0
- package/dist/battery/thermalRunaway.js.map +1 -0
- package/dist/battery/types.d.ts +175 -0
- package/dist/battery/types.d.ts.map +1 -0
- package/dist/battery/types.js +5 -0
- package/dist/battery/types.js.map +1 -0
- package/dist/chemical/dilution.d.ts.map +1 -1
- package/dist/chemical/dilution.js +21 -24
- package/dist/chemical/dilution.js.map +1 -1
- package/dist/chemical/heatTransfer.d.ts +16 -0
- package/dist/chemical/heatTransfer.d.ts.map +1 -0
- package/dist/chemical/heatTransfer.js +85 -0
- package/dist/chemical/heatTransfer.js.map +1 -0
- package/dist/chemical/index.d.ts +3 -1
- package/dist/chemical/index.d.ts.map +1 -1
- package/dist/chemical/index.js +2 -0
- package/dist/chemical/index.js.map +1 -1
- package/dist/chemical/pipeFlow.d.ts +17 -0
- package/dist/chemical/pipeFlow.d.ts.map +1 -0
- package/dist/chemical/pipeFlow.js +112 -0
- package/dist/chemical/pipeFlow.js.map +1 -0
- package/dist/chemical/reactor.js +2 -2
- package/dist/chemical/reactor.js.map +1 -1
- package/dist/chemical/types.d.ts +82 -10
- package/dist/chemical/types.d.ts.map +1 -1
- package/dist/construction/index.d.ts +2 -1
- package/dist/construction/index.d.ts.map +1 -1
- package/dist/construction/index.js +1 -0
- package/dist/construction/index.js.map +1 -1
- package/dist/construction/momentOfInertia.d.ts +17 -0
- package/dist/construction/momentOfInertia.d.ts.map +1 -0
- package/dist/construction/momentOfInertia.js +204 -0
- package/dist/construction/momentOfInertia.js.map +1 -0
- package/dist/construction/pert.d.ts.map +1 -1
- package/dist/construction/pert.js +1 -17
- package/dist/construction/pert.js.map +1 -1
- package/dist/construction/types.d.ts +50 -0
- package/dist/construction/types.d.ts.map +1 -1
- package/dist/electronics/index.d.ts +2 -1
- package/dist/electronics/index.d.ts.map +1 -1
- package/dist/electronics/index.js +1 -0
- package/dist/electronics/index.js.map +1 -1
- package/dist/electronics/ohmsLaw.d.ts +12 -0
- package/dist/electronics/ohmsLaw.d.ts.map +1 -0
- package/dist/electronics/ohmsLaw.js +69 -0
- package/dist/electronics/ohmsLaw.js.map +1 -0
- package/dist/electronics/types.d.ts +24 -0
- package/dist/electronics/types.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.js +2 -1
- package/dist/energy/carbonFootprint.js.map +1 -1
- package/dist/energy/index.d.ts +2 -1
- package/dist/energy/index.d.ts.map +1 -1
- package/dist/energy/index.js +1 -0
- package/dist/energy/index.js.map +1 -1
- package/dist/energy/powerCost.d.ts.map +1 -1
- package/dist/energy/powerCost.js +2 -1
- package/dist/energy/powerCost.js.map +1 -1
- package/dist/energy/solarOutput.d.ts +14 -0
- package/dist/energy/solarOutput.d.ts.map +1 -0
- package/dist/energy/solarOutput.js +54 -0
- package/dist/energy/solarOutput.js.map +1 -0
- package/dist/energy/types.d.ts +20 -0
- package/dist/energy/types.d.ts.map +1 -1
- package/dist/environmental/emissionsIntensity.d.ts +11 -0
- package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
- package/dist/environmental/emissionsIntensity.js +26 -0
- package/dist/environmental/emissionsIntensity.js.map +1 -0
- package/dist/environmental/energyIntensity.d.ts +11 -0
- package/dist/environmental/energyIntensity.d.ts.map +1 -0
- package/dist/environmental/energyIntensity.js +19 -0
- package/dist/environmental/energyIntensity.js.map +1 -0
- package/dist/environmental/esgSummary.d.ts +11 -0
- package/dist/environmental/esgSummary.d.ts.map +1 -0
- package/dist/environmental/esgSummary.js +39 -0
- package/dist/environmental/esgSummary.js.map +1 -0
- package/dist/environmental/gwpCalculator.d.ts +11 -0
- package/dist/environmental/gwpCalculator.d.ts.map +1 -0
- package/dist/environmental/gwpCalculator.js +31 -0
- package/dist/environmental/gwpCalculator.js.map +1 -0
- package/dist/environmental/index.d.ts +12 -0
- package/dist/environmental/index.d.ts.map +1 -0
- package/dist/environmental/index.js +12 -0
- package/dist/environmental/index.js.map +1 -0
- package/dist/environmental/productCarbonFootprint.d.ts +11 -0
- package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
- package/dist/environmental/productCarbonFootprint.js +29 -0
- package/dist/environmental/productCarbonFootprint.js.map +1 -0
- package/dist/environmental/scope1Emissions.d.ts +11 -0
- package/dist/environmental/scope1Emissions.d.ts.map +1 -0
- package/dist/environmental/scope1Emissions.js +35 -0
- package/dist/environmental/scope1Emissions.js.map +1 -0
- package/dist/environmental/scope2Emissions.d.ts +11 -0
- package/dist/environmental/scope2Emissions.d.ts.map +1 -0
- package/dist/environmental/scope2Emissions.js +49 -0
- package/dist/environmental/scope2Emissions.js.map +1 -0
- package/dist/environmental/scope3Emissions.d.ts +11 -0
- package/dist/environmental/scope3Emissions.d.ts.map +1 -0
- package/dist/environmental/scope3Emissions.js +36 -0
- package/dist/environmental/scope3Emissions.js.map +1 -0
- package/dist/environmental/types.d.ts +165 -0
- package/dist/environmental/types.d.ts.map +1 -0
- package/dist/environmental/types.js +5 -0
- package/dist/environmental/types.js.map +1 -0
- package/dist/environmental/vocEmissions.d.ts +11 -0
- package/dist/environmental/vocEmissions.d.ts.map +1 -0
- package/dist/environmental/vocEmissions.js +23 -0
- package/dist/environmental/vocEmissions.js.map +1 -0
- package/dist/environmental/waterFootprint.d.ts +11 -0
- package/dist/environmental/waterFootprint.d.ts.map +1 -0
- package/dist/environmental/waterFootprint.js +21 -0
- package/dist/environmental/waterFootprint.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/logistics/cbm.d.ts +7 -2
- package/dist/logistics/cbm.d.ts.map +1 -1
- package/dist/logistics/cbm.js +7 -2
- package/dist/logistics/cbm.js.map +1 -1
- package/dist/logistics/fillRate.d.ts.map +1 -1
- package/dist/logistics/fillRate.js +1 -17
- package/dist/logistics/fillRate.js.map +1 -1
- package/dist/logistics/safetyStock.d.ts.map +1 -1
- package/dist/logistics/safetyStock.js +2 -55
- package/dist/logistics/safetyStock.js.map +1 -1
- package/dist/machining/boltCircle.d.ts +16 -0
- package/dist/machining/boltCircle.d.ts.map +1 -0
- package/dist/machining/boltCircle.js +36 -0
- package/dist/machining/boltCircle.js.map +1 -0
- package/dist/machining/boringBarDeflection.d.ts +17 -0
- package/dist/machining/boringBarDeflection.d.ts.map +1 -0
- package/dist/machining/boringBarDeflection.js +54 -0
- package/dist/machining/boringBarDeflection.js.map +1 -0
- package/dist/machining/cuspHeight.d.ts +15 -0
- package/dist/machining/cuspHeight.d.ts.map +1 -0
- package/dist/machining/cuspHeight.js +23 -0
- package/dist/machining/cuspHeight.js.map +1 -0
- package/dist/machining/cycleTimeEstimator.d.ts +18 -0
- package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
- package/dist/machining/cycleTimeEstimator.js +62 -0
- package/dist/machining/cycleTimeEstimator.js.map +1 -0
- package/dist/machining/effectiveDiameter.d.ts +17 -0
- package/dist/machining/effectiveDiameter.d.ts.map +1 -0
- package/dist/machining/effectiveDiameter.js +24 -0
- package/dist/machining/effectiveDiameter.js.map +1 -0
- package/dist/machining/gaugeBlockStack.d.ts +16 -0
- package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
- package/dist/machining/gaugeBlockStack.js +138 -0
- package/dist/machining/gaugeBlockStack.js.map +1 -0
- package/dist/machining/index.d.ts +14 -0
- package/dist/machining/index.d.ts.map +1 -0
- package/dist/machining/index.js +14 -0
- package/dist/machining/index.js.map +1 -0
- package/dist/machining/radialChipThinning.d.ts +18 -0
- package/dist/machining/radialChipThinning.d.ts.map +1 -0
- package/dist/machining/radialChipThinning.js +30 -0
- package/dist/machining/radialChipThinning.js.map +1 -0
- package/dist/machining/sineBarHeight.d.ts +16 -0
- package/dist/machining/sineBarHeight.d.ts.map +1 -0
- package/dist/machining/sineBarHeight.js +32 -0
- package/dist/machining/sineBarHeight.js.map +1 -0
- package/dist/machining/threadOverWires.d.ts +21 -0
- package/dist/machining/threadOverWires.d.ts.map +1 -0
- package/dist/machining/threadOverWires.js +54 -0
- package/dist/machining/threadOverWires.js.map +1 -0
- package/dist/machining/toolDeflection.d.ts +16 -0
- package/dist/machining/toolDeflection.d.ts.map +1 -0
- package/dist/machining/toolDeflection.js +36 -0
- package/dist/machining/toolDeflection.js.map +1 -0
- package/dist/machining/triangleSolver.d.ts +21 -0
- package/dist/machining/triangleSolver.d.ts.map +1 -0
- package/dist/machining/triangleSolver.js +120 -0
- package/dist/machining/triangleSolver.js.map +1 -0
- package/dist/machining/truePosition.d.ts +19 -0
- package/dist/machining/truePosition.d.ts.map +1 -0
- package/dist/machining/truePosition.js +44 -0
- package/dist/machining/truePosition.js.map +1 -0
- package/dist/machining/types.d.ts +201 -0
- package/dist/machining/types.d.ts.map +1 -0
- package/dist/machining/types.js +2 -0
- package/dist/machining/types.js.map +1 -0
- package/dist/math.d.ts +26 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +95 -0
- package/dist/math.js.map +1 -0
- package/dist/metal/bendAllowance.d.ts.map +1 -1
- package/dist/metal/bendAllowance.js +2 -1
- package/dist/metal/bendAllowance.js.map +1 -1
- package/dist/metal/bolt.d.ts.map +1 -1
- package/dist/metal/bolt.js +3 -3
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/flangeSpec.d.ts +10 -0
- package/dist/metal/flangeSpec.d.ts.map +1 -0
- package/dist/metal/flangeSpec.js +81 -0
- package/dist/metal/flangeSpec.js.map +1 -0
- package/dist/metal/index.d.ts +4 -1
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.js +3 -0
- package/dist/metal/index.js.map +1 -1
- package/dist/metal/materialGradeConverter.d.ts +10 -0
- package/dist/metal/materialGradeConverter.d.ts.map +1 -0
- package/dist/metal/materialGradeConverter.js +78 -0
- package/dist/metal/materialGradeConverter.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +13 -3
- package/dist/metal/metalWeight.d.ts.map +1 -1
- package/dist/metal/metalWeight.js +24 -35
- package/dist/metal/metalWeight.js.map +1 -1
- package/dist/metal/pipeSpec.d.ts +10 -0
- package/dist/metal/pipeSpec.d.ts.map +1 -0
- package/dist/metal/pipeSpec.js +96 -0
- package/dist/metal/pipeSpec.js.map +1 -0
- package/dist/metal/roughness.js +1 -1
- package/dist/metal/roughness.js.map +1 -1
- package/dist/metal/types.d.ts +86 -13
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +1 -1
- package/dist/metal/weldHeat.js.map +1 -1
- package/dist/metal/welding.d.ts.map +1 -1
- package/dist/metal/welding.js +3 -2
- package/dist/metal/welding.js.map +1 -1
- package/dist/quality/controlChart.d.ts +26 -0
- package/dist/quality/controlChart.d.ts.map +1 -0
- package/dist/quality/controlChart.js +216 -0
- package/dist/quality/controlChart.js.map +1 -0
- package/dist/quality/cpk.d.ts +16 -4
- package/dist/quality/cpk.d.ts.map +1 -1
- package/dist/quality/cpk.js +16 -4
- package/dist/quality/cpk.js.map +1 -1
- package/dist/quality/dpmo.d.ts.map +1 -1
- package/dist/quality/dpmo.js +1 -61
- package/dist/quality/dpmo.js.map +1 -1
- package/dist/quality/index.d.ts +2 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js +1 -0
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/oee.d.ts +12 -1
- package/dist/quality/oee.d.ts.map +1 -1
- package/dist/quality/oee.js +21 -9
- package/dist/quality/oee.js.map +1 -1
- package/dist/quality/ppk.d.ts.map +1 -1
- package/dist/quality/ppk.js +1 -16
- package/dist/quality/ppk.js.map +1 -1
- package/dist/quality/ppm.d.ts.map +1 -1
- package/dist/quality/ppm.js +1 -80
- package/dist/quality/ppm.js.map +1 -1
- package/dist/quality/types.d.ts +31 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +5 -4
- package/dist/safety/fallClearance.js.map +1 -1
- package/dist/safety/index.d.ts +2 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/nioshLifting.d.ts +19 -10
- package/dist/safety/nioshLifting.d.ts.map +1 -1
- package/dist/safety/nioshLifting.js +19 -10
- package/dist/safety/nioshLifting.js.map +1 -1
- package/dist/safety/types.d.ts +19 -0
- package/dist/safety/types.d.ts.map +1 -1
- package/dist/safety/ventilationRate.d.ts +12 -0
- package/dist/safety/ventilationRate.d.ts.map +1 -0
- package/dist/safety/ventilationRate.js +71 -0
- package/dist/safety/ventilationRate.js.map +1 -0
- package/dist/utility/index.d.ts +1 -1
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/types.d.ts +0 -16
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utils.d.ts +3 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -4
- package/dist/utils.js.map +1 -1
- package/package.json +34 -3
- package/dist/utility/qrcode.d.ts +0 -30
- package/dist/utility/qrcode.d.ts.map +0 -1
- package/dist/utility/qrcode.js +0 -30
- package/dist/utility/qrcode.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate product carbon footprint across lifecycle stages
|
|
4
|
+
*
|
|
5
|
+
* @formula total = Σ stages, perUnit = total / quantity
|
|
6
|
+
* @reference ISO 14067, PAS 2050
|
|
7
|
+
* @param input - Lifecycle stages with CO2 and production quantity
|
|
8
|
+
* @returns Total and per-unit carbon footprint with stage breakdown
|
|
9
|
+
*/
|
|
10
|
+
export function productCarbonFootprint(input) {
|
|
11
|
+
const { stages, productionQuantity } = input;
|
|
12
|
+
const totalCo2Kg = roundTo(stages.reduce((sum, s) => sum + s.co2Kg, 0), 2);
|
|
13
|
+
const perUnitCo2Kg = roundTo(totalCo2Kg / productionQuantity, 4);
|
|
14
|
+
const stageBreakdown = stages.map(s => ({
|
|
15
|
+
name: s.name,
|
|
16
|
+
co2Kg: roundTo(s.co2Kg, 2),
|
|
17
|
+
percent: roundTo((s.co2Kg / totalCo2Kg) * 100, 1),
|
|
18
|
+
}));
|
|
19
|
+
let dominantStage = stages[0].name;
|
|
20
|
+
let maxCo2 = stages[0].co2Kg;
|
|
21
|
+
for (const s of stages) {
|
|
22
|
+
if (s.co2Kg > maxCo2) {
|
|
23
|
+
maxCo2 = s.co2Kg;
|
|
24
|
+
dominantStage = s.name;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { totalCo2Kg, perUnitCo2Kg, stageBreakdown, dominantStage };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=productCarbonFootprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productCarbonFootprint.js","sourceRoot":"","sources":["../../src/environmental/productCarbonFootprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IAE7C,MAAM,UAAU,GAAG,OAAO,CACxB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAC3C,CAAC,CACF,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;KAClD,CAAC,CAAC,CAAC;IAEJ,IAAI,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;YACrB,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Scope1EmissionsInput, Scope1EmissionsResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate Scope 1 (direct) CO2 emissions from fuel combustion
|
|
4
|
+
*
|
|
5
|
+
* @formula CO2 = quantity × emissionFactor
|
|
6
|
+
* @reference GHG Protocol, EPA Emission Factors Hub, IPCC 2006
|
|
7
|
+
* @param input - Fuel type and quantity consumed
|
|
8
|
+
* @returns CO2 emissions in kg and tonnes
|
|
9
|
+
*/
|
|
10
|
+
export declare function scope1Emissions(input: Scope1EmissionsInput): Scope1EmissionsResult;
|
|
11
|
+
//# sourceMappingURL=scope1Emissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope1Emissions.d.ts","sourceRoot":"","sources":["../../src/environmental/scope1Emissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAexF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAclF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Combustion emission factors (kgCO2 per unit)
|
|
4
|
+
* @reference EPA GHG Emission Factors Hub, IPCC 2006
|
|
5
|
+
*/
|
|
6
|
+
const COMBUSTION_FACTORS = {
|
|
7
|
+
naturalGas: { factor: 1.885, unit: 'm³' }, // kgCO2/m³
|
|
8
|
+
diesel: { factor: 2.68, unit: 'L' }, // kgCO2/L
|
|
9
|
+
gasoline: { factor: 2.31, unit: 'L' }, // kgCO2/L
|
|
10
|
+
lpg: { factor: 1.51, unit: 'L' }, // kgCO2/L
|
|
11
|
+
coal: { factor: 2.42, unit: 'kg' }, // kgCO2/kg
|
|
12
|
+
fuelOil: { factor: 3.15, unit: 'L' }, // kgCO2/L
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Calculate Scope 1 (direct) CO2 emissions from fuel combustion
|
|
16
|
+
*
|
|
17
|
+
* @formula CO2 = quantity × emissionFactor
|
|
18
|
+
* @reference GHG Protocol, EPA Emission Factors Hub, IPCC 2006
|
|
19
|
+
* @param input - Fuel type and quantity consumed
|
|
20
|
+
* @returns CO2 emissions in kg and tonnes
|
|
21
|
+
*/
|
|
22
|
+
export function scope1Emissions(input) {
|
|
23
|
+
const { fuelType, quantity } = input;
|
|
24
|
+
const { factor, unit } = COMBUSTION_FACTORS[fuelType];
|
|
25
|
+
const co2Kg = roundTo(quantity * factor, 2);
|
|
26
|
+
const co2Tonnes = roundTo(co2Kg / 1000, 4);
|
|
27
|
+
return {
|
|
28
|
+
co2Kg,
|
|
29
|
+
co2Tonnes,
|
|
30
|
+
fuelType,
|
|
31
|
+
emissionFactor: factor,
|
|
32
|
+
unit,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=scope1Emissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope1Emissions.js","sourceRoot":"","sources":["../../src/environmental/scope1Emissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,kBAAkB,GAAuD;IAC7E,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAK,WAAW;IACzD,MAAM,EAAM,EAAE,MAAM,EAAE,IAAI,EAAG,IAAI,EAAE,GAAG,EAAE,EAAO,UAAU;IACzD,QAAQ,EAAI,EAAE,MAAM,EAAE,IAAI,EAAG,IAAI,EAAE,GAAG,EAAE,EAAO,UAAU;IACzD,GAAG,EAAS,EAAE,MAAM,EAAE,IAAI,EAAG,IAAI,EAAE,GAAG,EAAE,EAAO,UAAU;IACzD,IAAI,EAAQ,EAAE,MAAM,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,EAAM,WAAW;IAC1D,OAAO,EAAK,EAAE,MAAM,EAAE,IAAI,EAAG,IAAI,EAAE,GAAG,EAAE,EAAO,UAAU;CAC1D,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK;QACL,SAAS;QACT,QAAQ;QACR,cAAc,EAAE,MAAM;QACtB,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Scope2EmissionsInput, Scope2EmissionsResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate Scope 2 (indirect) CO2 emissions from purchased electricity
|
|
4
|
+
*
|
|
5
|
+
* @formula CO2(kg) = kWh × gridFactor / 1000
|
|
6
|
+
* @reference GHG Protocol Scope 2, IEA Emission Factors 2023
|
|
7
|
+
* @param input - Electricity consumption and grid region
|
|
8
|
+
* @returns CO2 emissions in kg and tonnes
|
|
9
|
+
*/
|
|
10
|
+
export declare function scope2Emissions(input: Scope2EmissionsInput): Scope2EmissionsResult;
|
|
11
|
+
//# sourceMappingURL=scope2Emissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope2Emissions.d.ts","sourceRoot":"","sources":["../../src/environmental/scope2Emissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAqB1F;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAsBlF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Grid emission factors (gCO2/kWh)
|
|
4
|
+
* @reference IEA 2023 Emission Factors
|
|
5
|
+
*/
|
|
6
|
+
const GRID_EMISSION_FACTORS = {
|
|
7
|
+
US_average: 386,
|
|
8
|
+
EU_average: 230,
|
|
9
|
+
China: 555,
|
|
10
|
+
India: 708,
|
|
11
|
+
Japan: 457,
|
|
12
|
+
Korea: 415,
|
|
13
|
+
UK: 207,
|
|
14
|
+
Germany: 350,
|
|
15
|
+
France: 56,
|
|
16
|
+
Brazil: 75,
|
|
17
|
+
Australia: 656,
|
|
18
|
+
Canada: 110,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Calculate Scope 2 (indirect) CO2 emissions from purchased electricity
|
|
22
|
+
*
|
|
23
|
+
* @formula CO2(kg) = kWh × gridFactor / 1000
|
|
24
|
+
* @reference GHG Protocol Scope 2, IEA Emission Factors 2023
|
|
25
|
+
* @param input - Electricity consumption and grid region
|
|
26
|
+
* @returns CO2 emissions in kg and tonnes
|
|
27
|
+
*/
|
|
28
|
+
export function scope2Emissions(input) {
|
|
29
|
+
const { electricityKwh, region, customFactor } = input;
|
|
30
|
+
let gridFactor;
|
|
31
|
+
if (region === 'custom') {
|
|
32
|
+
if (customFactor == null) {
|
|
33
|
+
throw new Error('customFactor is required when region is "custom"');
|
|
34
|
+
}
|
|
35
|
+
gridFactor = customFactor;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
gridFactor = GRID_EMISSION_FACTORS[region];
|
|
39
|
+
}
|
|
40
|
+
const co2Kg = roundTo(electricityKwh * gridFactor / 1000, 2);
|
|
41
|
+
const co2Tonnes = roundTo(co2Kg / 1000, 4);
|
|
42
|
+
return {
|
|
43
|
+
co2Kg,
|
|
44
|
+
co2Tonnes,
|
|
45
|
+
gridFactor,
|
|
46
|
+
region,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=scope2Emissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope2Emissions.js","sourceRoot":"","sources":["../../src/environmental/scope2Emissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,qBAAqB,GAAkD;IAC3E,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAEvD,IAAI,UAAkB,CAAC;IACvB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,UAAU,GAAG,YAAY,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK;QACL,SAAS;QACT,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Scope3EmissionsInput, Scope3EmissionsResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate Scope 3 (value chain) CO2 emissions using spend-based EEIO method
|
|
4
|
+
*
|
|
5
|
+
* @formula CO2eq = spend × EEIO factor
|
|
6
|
+
* @reference GHG Protocol Scope 3 Standard, EPA EEIO model
|
|
7
|
+
* @param input - Scope 3 category and spend amount
|
|
8
|
+
* @returns CO2eq emissions in kg and tonnes
|
|
9
|
+
*/
|
|
10
|
+
export declare function scope3Emissions(input: Scope3EmissionsInput): Scope3EmissionsResult;
|
|
11
|
+
//# sourceMappingURL=scope3Emissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope3Emissions.d.ts","sourceRoot":"","sources":["../../src/environmental/scope3Emissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAiB9F;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAalF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Spend-based EEIO emission factors (kgCO2eq per USD)
|
|
4
|
+
* @reference US EPA EEIO model, GHG Protocol Scope 3 Category guidance
|
|
5
|
+
*/
|
|
6
|
+
const SPEND_BASED_FACTORS = {
|
|
7
|
+
purchasedGoods: 0.41, // Manufacturing average
|
|
8
|
+
capitalGoods: 0.35, // Industrial machinery
|
|
9
|
+
fuelEnergy: 0.50, // Upstream fuel extraction/refining
|
|
10
|
+
transportation: 0.58, // Freight and distribution
|
|
11
|
+
waste: 0.25, // Waste treatment
|
|
12
|
+
businessTravel: 0.45, // Air/ground travel
|
|
13
|
+
employeeCommuting: 0.30, // Average commute
|
|
14
|
+
leasedAssets: 0.20, // Office/facility leasing
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Calculate Scope 3 (value chain) CO2 emissions using spend-based EEIO method
|
|
18
|
+
*
|
|
19
|
+
* @formula CO2eq = spend × EEIO factor
|
|
20
|
+
* @reference GHG Protocol Scope 3 Standard, EPA EEIO model
|
|
21
|
+
* @param input - Scope 3 category and spend amount
|
|
22
|
+
* @returns CO2eq emissions in kg and tonnes
|
|
23
|
+
*/
|
|
24
|
+
export function scope3Emissions(input) {
|
|
25
|
+
const { category, spendUsd } = input;
|
|
26
|
+
const eeioFactor = SPEND_BASED_FACTORS[category];
|
|
27
|
+
const co2Kg = roundTo(spendUsd * eeioFactor, 2);
|
|
28
|
+
const co2Tonnes = roundTo(co2Kg / 1000, 4);
|
|
29
|
+
return {
|
|
30
|
+
co2Kg,
|
|
31
|
+
co2Tonnes,
|
|
32
|
+
category,
|
|
33
|
+
eeioFactor,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=scope3Emissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope3Emissions.js","sourceRoot":"","sources":["../../src/environmental/scope3Emissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,mBAAmB,GAAmC;IAC1D,cAAc,EAAE,IAAI,EAAO,wBAAwB;IACnD,YAAY,EAAE,IAAI,EAAS,uBAAuB;IAClD,UAAU,EAAE,IAAI,EAAW,oCAAoC;IAC/D,cAAc,EAAE,IAAI,EAAO,2BAA2B;IACtD,KAAK,EAAE,IAAI,EAAgB,kBAAkB;IAC7C,cAAc,EAAE,IAAI,EAAO,oBAAoB;IAC/C,iBAAiB,EAAE,IAAI,EAAI,kBAAkB;IAC7C,YAAY,EAAE,IAAI,EAAS,0BAA0B;CACtD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK;QACL,SAAS;QACT,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environmental Domain Types
|
|
3
|
+
*/
|
|
4
|
+
export type FuelType = 'naturalGas' | 'diesel' | 'gasoline' | 'lpg' | 'coal' | 'fuelOil';
|
|
5
|
+
export type GhgGas = 'CO2' | 'CH4' | 'N2O' | 'HFC134a' | 'HFC152a' | 'SF6' | 'NF3' | 'CF4';
|
|
6
|
+
export type GridRegion = 'US_average' | 'EU_average' | 'China' | 'India' | 'Japan' | 'Korea' | 'UK' | 'Germany' | 'France' | 'Brazil' | 'Australia' | 'Canada' | 'custom';
|
|
7
|
+
export type Scope3Category = 'purchasedGoods' | 'capitalGoods' | 'fuelEnergy' | 'transportation' | 'waste' | 'businessTravel' | 'employeeCommuting' | 'leasedAssets';
|
|
8
|
+
export type WaterType = 'blue' | 'green' | 'grey';
|
|
9
|
+
/**
|
|
10
|
+
* Scope 1 Emissions Types (Direct combustion)
|
|
11
|
+
*/
|
|
12
|
+
export interface Scope1EmissionsInput {
|
|
13
|
+
fuelType: FuelType;
|
|
14
|
+
quantity: number;
|
|
15
|
+
}
|
|
16
|
+
export interface Scope1EmissionsResult {
|
|
17
|
+
co2Kg: number;
|
|
18
|
+
co2Tonnes: number;
|
|
19
|
+
fuelType: FuelType;
|
|
20
|
+
emissionFactor: number;
|
|
21
|
+
unit: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Scope 2 Emissions Types (Purchased electricity)
|
|
25
|
+
*/
|
|
26
|
+
export interface Scope2EmissionsInput {
|
|
27
|
+
electricityKwh: number;
|
|
28
|
+
region: GridRegion;
|
|
29
|
+
customFactor?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface Scope2EmissionsResult {
|
|
32
|
+
co2Kg: number;
|
|
33
|
+
co2Tonnes: number;
|
|
34
|
+
gridFactor: number;
|
|
35
|
+
region: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Scope 3 Emissions Types (Supply chain, spend-based)
|
|
39
|
+
*/
|
|
40
|
+
export interface Scope3EmissionsInput {
|
|
41
|
+
category: Scope3Category;
|
|
42
|
+
spendUsd: number;
|
|
43
|
+
}
|
|
44
|
+
export interface Scope3EmissionsResult {
|
|
45
|
+
co2Kg: number;
|
|
46
|
+
co2Tonnes: number;
|
|
47
|
+
category: Scope3Category;
|
|
48
|
+
eeioFactor: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* VOC Emissions Types
|
|
52
|
+
*/
|
|
53
|
+
export interface VocEmissionsInput {
|
|
54
|
+
totalVocKg: number;
|
|
55
|
+
captureEfficiency: number;
|
|
56
|
+
destructionEfficiency: number;
|
|
57
|
+
}
|
|
58
|
+
export interface VocEmissionsResult {
|
|
59
|
+
emittedVocKg: number;
|
|
60
|
+
capturedVocKg: number;
|
|
61
|
+
destroyedVocKg: number;
|
|
62
|
+
reductionPercent: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Product Carbon Footprint Types
|
|
66
|
+
*/
|
|
67
|
+
export interface LifecycleStage {
|
|
68
|
+
name: string;
|
|
69
|
+
co2Kg: number;
|
|
70
|
+
}
|
|
71
|
+
export interface ProductCarbonFootprintInput {
|
|
72
|
+
stages: LifecycleStage[];
|
|
73
|
+
productionQuantity: number;
|
|
74
|
+
}
|
|
75
|
+
export interface ProductCarbonFootprintResult {
|
|
76
|
+
totalCo2Kg: number;
|
|
77
|
+
perUnitCo2Kg: number;
|
|
78
|
+
stageBreakdown: {
|
|
79
|
+
name: string;
|
|
80
|
+
co2Kg: number;
|
|
81
|
+
percent: number;
|
|
82
|
+
}[];
|
|
83
|
+
dominantStage: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* GWP Calculator Types
|
|
87
|
+
*/
|
|
88
|
+
export type GwpTimeHorizon = 'GWP20' | 'GWP100' | 'GWP500';
|
|
89
|
+
export interface GwpCalculatorInput {
|
|
90
|
+
gas: GhgGas;
|
|
91
|
+
quantityKg: number;
|
|
92
|
+
timeHorizon?: GwpTimeHorizon;
|
|
93
|
+
}
|
|
94
|
+
export interface GwpCalculatorResult {
|
|
95
|
+
co2eqKg: number;
|
|
96
|
+
co2eqTonnes: number;
|
|
97
|
+
gwpFactor: number;
|
|
98
|
+
gas: GhgGas;
|
|
99
|
+
timeHorizon: GwpTimeHorizon;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Energy Intensity Types
|
|
103
|
+
*/
|
|
104
|
+
export interface EnergyIntensityInput {
|
|
105
|
+
totalEnergyMJ: number;
|
|
106
|
+
productionUnits: number;
|
|
107
|
+
revenueUsd?: number;
|
|
108
|
+
}
|
|
109
|
+
export interface EnergyIntensityResult {
|
|
110
|
+
mjPerUnit: number;
|
|
111
|
+
kwhPerUnit: number;
|
|
112
|
+
mjPerRevenue?: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Water Footprint Types
|
|
116
|
+
*/
|
|
117
|
+
export interface WaterFootprintInput {
|
|
118
|
+
blueWaterM3: number;
|
|
119
|
+
greenWaterM3: number;
|
|
120
|
+
greyWaterM3: number;
|
|
121
|
+
productionUnits?: number;
|
|
122
|
+
}
|
|
123
|
+
export interface WaterFootprintResult {
|
|
124
|
+
totalWaterM3: number;
|
|
125
|
+
bluePercent: number;
|
|
126
|
+
greenPercent: number;
|
|
127
|
+
greyPercent: number;
|
|
128
|
+
perUnitM3?: number;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Emissions Intensity Types
|
|
132
|
+
*/
|
|
133
|
+
export interface EmissionsIntensityInput {
|
|
134
|
+
totalCo2Kg: number;
|
|
135
|
+
productionUnits?: number;
|
|
136
|
+
revenueUsd?: number;
|
|
137
|
+
employees?: number;
|
|
138
|
+
}
|
|
139
|
+
export interface EmissionsIntensityResult {
|
|
140
|
+
kgPerUnit?: number;
|
|
141
|
+
kgPerRevenue?: number;
|
|
142
|
+
kgPerEmployee?: number;
|
|
143
|
+
tonnesPerMillionUsd?: number;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* ESG Summary Types
|
|
147
|
+
*/
|
|
148
|
+
export interface EsgSummaryInput {
|
|
149
|
+
baselineYear: number;
|
|
150
|
+
baselineCo2Tonnes: number;
|
|
151
|
+
currentYear: number;
|
|
152
|
+
currentCo2Tonnes: number;
|
|
153
|
+
targetYear: number;
|
|
154
|
+
targetCo2Tonnes: number;
|
|
155
|
+
}
|
|
156
|
+
export interface EsgSummaryResult {
|
|
157
|
+
reductionPercent: number;
|
|
158
|
+
reductionTonnes: number;
|
|
159
|
+
annualRatePercent: number;
|
|
160
|
+
requiredAnnualRate: number;
|
|
161
|
+
onTrack: boolean;
|
|
162
|
+
yearsRemaining: number;
|
|
163
|
+
projectedCo2Tonnes: number;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/environmental/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/environmental/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { VocEmissionsInput, VocEmissionsResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate VOC (Volatile Organic Compound) emissions after capture/destruction
|
|
4
|
+
*
|
|
5
|
+
* @formula emitted = total × (1 - captureEff × destructionEff)
|
|
6
|
+
* @reference EPA AP-42, CARB guidelines
|
|
7
|
+
* @param input - Total VOC, capture efficiency, destruction efficiency
|
|
8
|
+
* @returns Emitted, captured, and destroyed VOC amounts
|
|
9
|
+
*/
|
|
10
|
+
export declare function vocEmissions(input: VocEmissionsInput): VocEmissionsResult;
|
|
11
|
+
//# sourceMappingURL=vocEmissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocEmissions.d.ts","sourceRoot":"","sources":["../../src/environmental/vocEmissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAczE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate VOC (Volatile Organic Compound) emissions after capture/destruction
|
|
4
|
+
*
|
|
5
|
+
* @formula emitted = total × (1 - captureEff × destructionEff)
|
|
6
|
+
* @reference EPA AP-42, CARB guidelines
|
|
7
|
+
* @param input - Total VOC, capture efficiency, destruction efficiency
|
|
8
|
+
* @returns Emitted, captured, and destroyed VOC amounts
|
|
9
|
+
*/
|
|
10
|
+
export function vocEmissions(input) {
|
|
11
|
+
const { totalVocKg, captureEfficiency, destructionEfficiency } = input;
|
|
12
|
+
const capturedVocKg = roundTo(totalVocKg * captureEfficiency, 2);
|
|
13
|
+
const destroyedVocKg = roundTo(capturedVocKg * destructionEfficiency, 2);
|
|
14
|
+
const emittedVocKg = roundTo(totalVocKg - destroyedVocKg, 2);
|
|
15
|
+
const reductionPercent = roundTo((destroyedVocKg / totalVocKg) * 100, 2);
|
|
16
|
+
return {
|
|
17
|
+
emittedVocKg,
|
|
18
|
+
capturedVocKg,
|
|
19
|
+
destroyedVocKg,
|
|
20
|
+
reductionPercent,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=vocEmissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocEmissions.js","sourceRoot":"","sources":["../../src/environmental/vocEmissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IAEvE,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY;QACZ,aAAa;QACb,cAAc;QACd,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WaterFootprintInput, WaterFootprintResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate water footprint (blue, green, grey)
|
|
4
|
+
*
|
|
5
|
+
* @formula total = blue + green + grey
|
|
6
|
+
* @reference Water Footprint Network, ISO 14046
|
|
7
|
+
* @param input - Blue, green, grey water volumes
|
|
8
|
+
* @returns Total water footprint with percentage breakdown
|
|
9
|
+
*/
|
|
10
|
+
export declare function waterFootprint(input: WaterFootprintInput): WaterFootprintResult;
|
|
11
|
+
//# sourceMappingURL=waterFootprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterFootprint.d.ts","sourceRoot":"","sources":["../../src/environmental/waterFootprint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAa/E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate water footprint (blue, green, grey)
|
|
4
|
+
*
|
|
5
|
+
* @formula total = blue + green + grey
|
|
6
|
+
* @reference Water Footprint Network, ISO 14046
|
|
7
|
+
* @param input - Blue, green, grey water volumes
|
|
8
|
+
* @returns Total water footprint with percentage breakdown
|
|
9
|
+
*/
|
|
10
|
+
export function waterFootprint(input) {
|
|
11
|
+
const { blueWaterM3, greenWaterM3, greyWaterM3, productionUnits } = input;
|
|
12
|
+
const totalWaterM3 = roundTo(blueWaterM3 + greenWaterM3 + greyWaterM3, 2);
|
|
13
|
+
const bluePercent = roundTo((blueWaterM3 / totalWaterM3) * 100, 1);
|
|
14
|
+
const greenPercent = roundTo((greenWaterM3 / totalWaterM3) * 100, 1);
|
|
15
|
+
const greyPercent = roundTo((greyWaterM3 / totalWaterM3) * 100, 1);
|
|
16
|
+
const perUnitM3 = productionUnits != null && productionUnits > 0
|
|
17
|
+
? roundTo(totalWaterM3 / productionUnits, 4)
|
|
18
|
+
: undefined;
|
|
19
|
+
return { totalWaterM3, bluePercent, greenPercent, greyPercent, perUnitM3 };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=waterFootprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterFootprint.js","sourceRoot":"","sources":["../../src/environmental/waterFootprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,GAAG,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEnE,MAAM,SAAS,GAAG,eAAe,IAAI,IAAI,IAAI,eAAe,GAAG,CAAC;QAC9D,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,eAAe,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC7E,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,7 @@ export * from './energy/index.js';
|
|
|
9
9
|
export * from './safety/index.js';
|
|
10
10
|
export * from './food/index.js';
|
|
11
11
|
export * from './utility/index.js';
|
|
12
|
+
export * from './battery/index.js';
|
|
13
|
+
export * from './environmental/index.js';
|
|
14
|
+
export * from './machining/index.js';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,4 +11,7 @@ export * from './energy/index.js';
|
|
|
11
11
|
export * from './safety/index.js';
|
|
12
12
|
export * from './food/index.js';
|
|
13
13
|
export * from './utility/index.js';
|
|
14
|
+
export * from './battery/index.js';
|
|
15
|
+
export * from './environmental/index.js';
|
|
16
|
+
export * from './machining/index.js';
|
|
14
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+BAA+B;AAE/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+BAA+B;AAE/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
package/dist/logistics/cbm.d.ts
CHANGED
|
@@ -2,8 +2,13 @@ import type { CbmInput, CbmResult } from './types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Calculate Cubic Meter (CBM) for shipping cargo
|
|
4
4
|
*
|
|
5
|
-
* CBM
|
|
6
|
-
*
|
|
5
|
+
* @formula CBM = Length × Width × Height (all converted to meters)
|
|
6
|
+
* - Total CBM = CBM per unit × Quantity
|
|
7
|
+
*
|
|
8
|
+
* @reference Physical volume formula (L × W × H).
|
|
9
|
+
* @reference Industry standard: 20ft container internal ≈ 33.2 m³, 40ft ≈ 67.7 m³.
|
|
10
|
+
*
|
|
11
|
+
* @units input: mm, cm, or m; output: m³
|
|
7
12
|
*
|
|
8
13
|
* @param input - Cargo dimensions and quantity
|
|
9
14
|
* @returns CBM per unit and total CBM
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cbm.d.ts","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AActD
|
|
1
|
+
{"version":3,"file":"cbm.d.ts","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AActD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAkB9C"}
|
package/dist/logistics/cbm.js
CHANGED
|
@@ -13,8 +13,13 @@ function toMeters(value, unit) {
|
|
|
13
13
|
/**
|
|
14
14
|
* Calculate Cubic Meter (CBM) for shipping cargo
|
|
15
15
|
*
|
|
16
|
-
* CBM
|
|
17
|
-
*
|
|
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
|
|
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":"fillRate.d.ts","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
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":"
|
|
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"}
|