formulab 0.13.5 → 0.13.7
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 +30 -0
- package/dist/automotive/batteryRuntime.d.ts +1 -1
- package/dist/automotive/batteryRuntime.d.ts.map +1 -1
- package/dist/automotive/batteryRuntime.js +4 -1
- package/dist/automotive/batteryRuntime.js.map +1 -1
- package/dist/chemical/ph.d.ts.map +1 -1
- package/dist/chemical/ph.js +5 -7
- package/dist/chemical/ph.js.map +1 -1
- package/dist/chemical/pid.js +3 -3
- package/dist/chemical/pid.js.map +1 -1
- package/dist/construction/slope.d.ts.map +1 -1
- package/dist/construction/slope.js +6 -1
- package/dist/construction/slope.js.map +1 -1
- package/dist/electronics/smt-takt.d.ts.map +1 -1
- package/dist/electronics/smt-takt.js +4 -16
- package/dist/electronics/smt-takt.js.map +1 -1
- package/dist/electronics/solder.d.ts.map +1 -1
- package/dist/electronics/solder.js +5 -8
- package/dist/electronics/solder.js.map +1 -1
- package/dist/energy/motorEfficiency.d.ts.map +1 -1
- package/dist/energy/motorEfficiency.js +5 -8
- package/dist/energy/motorEfficiency.js.map +1 -1
- package/dist/logistics/dimWeight.d.ts.map +1 -1
- package/dist/logistics/dimWeight.js +8 -10
- package/dist/logistics/dimWeight.js.map +1 -1
- package/dist/logistics/fillRate.d.ts.map +1 -1
- package/dist/logistics/fillRate.js +2 -9
- package/dist/logistics/fillRate.js.map +1 -1
- package/dist/logistics/freightClass.d.ts.map +1 -1
- package/dist/logistics/freightClass.js +8 -9
- package/dist/logistics/freightClass.js.map +1 -1
- package/dist/logistics/kanban.d.ts.map +1 -1
- package/dist/logistics/kanban.js +8 -2
- package/dist/logistics/kanban.js.map +1 -1
- package/dist/logistics/pickTime.d.ts.map +1 -1
- package/dist/logistics/pickTime.js +4 -12
- package/dist/logistics/pickTime.js.map +1 -1
- package/dist/metal/bolt.d.ts.map +1 -1
- package/dist/metal/bolt.js +12 -36
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/pressFit.d.ts.map +1 -1
- package/dist/metal/pressFit.js +8 -12
- package/dist/metal/pressFit.js.map +1 -1
- package/dist/metal/spring.d.ts.map +1 -1
- package/dist/metal/spring.js +6 -8
- package/dist/metal/spring.js.map +1 -1
- package/dist/metal/tap.d.ts.map +1 -1
- package/dist/metal/tap.js +4 -9
- package/dist/metal/tap.js.map +1 -1
- package/dist/metal/types.d.ts +23 -0
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/weldHeat.d.ts +5 -1
- package/dist/metal/weldHeat.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +31 -4
- package/dist/metal/weldHeat.js.map +1 -1
- package/dist/metal/welding.d.ts.map +1 -1
- package/dist/metal/welding.js +2 -3
- package/dist/metal/welding.js.map +1 -1
- package/dist/quality/aql.d.ts.map +1 -1
- package/dist/quality/aql.js +6 -2
- package/dist/quality/aql.js.map +1 -1
- package/dist/safety/arcFlash.d.ts +3 -0
- package/dist/safety/arcFlash.d.ts.map +1 -1
- package/dist/safety/arcFlash.js +18 -0
- package/dist/safety/arcFlash.js.map +1 -1
- package/dist/safety/confinedSpace.d.ts +5 -0
- package/dist/safety/confinedSpace.d.ts.map +1 -1
- package/dist/safety/confinedSpace.js +20 -0
- package/dist/safety/confinedSpace.js.map +1 -1
- package/dist/safety/ergonomicRisk.d.ts +4 -0
- package/dist/safety/ergonomicRisk.d.ts.map +1 -1
- package/dist/safety/ergonomicRisk.js +7 -0
- package/dist/safety/ergonomicRisk.js.map +1 -1
- package/dist/safety/fallClearance.d.ts +5 -0
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +16 -0
- package/dist/safety/fallClearance.js.map +1 -1
- package/dist/safety/havsCalculate.d.ts +3 -0
- package/dist/safety/havsCalculate.d.ts.map +1 -1
- package/dist/safety/havsCalculate.js +8 -0
- package/dist/safety/havsCalculate.js.map +1 -1
- package/dist/safety/illuminance.d.ts +2 -0
- package/dist/safety/illuminance.d.ts.map +1 -1
- package/dist/safety/illuminance.js +4 -16
- package/dist/safety/illuminance.js.map +1 -1
- package/dist/safety/ladderAngle.d.ts +2 -0
- package/dist/safety/ladderAngle.d.ts.map +1 -1
- package/dist/safety/ladderAngle.js +14 -0
- package/dist/safety/ladderAngle.js.map +1 -1
- package/dist/safety/lel.d.ts +5 -0
- package/dist/safety/lel.d.ts.map +1 -1
- package/dist/safety/lel.js +19 -6
- package/dist/safety/lel.js.map +1 -1
- package/dist/safety/nioshLifting.d.ts +5 -0
- package/dist/safety/nioshLifting.d.ts.map +1 -1
- package/dist/safety/nioshLifting.js +13 -0
- package/dist/safety/nioshLifting.js.map +1 -1
- package/dist/safety/noiseExposure.d.ts +3 -0
- package/dist/safety/noiseExposure.d.ts.map +1 -1
- package/dist/safety/noiseExposure.js +8 -0
- package/dist/safety/noiseExposure.js.map +1 -1
- package/dist/safety/respiratorCalculate.d.ts +3 -0
- package/dist/safety/respiratorCalculate.d.ts.map +1 -1
- package/dist/safety/respiratorCalculate.js +10 -2
- package/dist/safety/respiratorCalculate.js.map +1 -1
- package/dist/safety/thermalComfort.d.ts +5 -0
- package/dist/safety/thermalComfort.d.ts.map +1 -1
- package/dist/safety/thermalComfort.js +17 -0
- package/dist/safety/thermalComfort.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.13.7] - 2026-06-21
|
|
9
|
+
|
|
10
|
+
### Changed (breaking within 0.x)
|
|
11
|
+
|
|
12
|
+
- **Safety domain: clamp/`Infinity`/0-guard validation migrated to the standard error policy (12 functions)** — the v0.13.5/0.13.6 zero-fill sweep was return-pattern-driven and missed the safety domain, where invalid inputs were masked by `Math.max/min` clamping, `Infinity`, or 0-guards rather than `throw` (reported by online-tools: ISSUE-20260621-formulab-validation-gaps-pid-safety-domain — gap 2). For an accuracy-critical domain this left no defense-in-depth for non-page consumers. The following now **throw `RangeError`** with a per-constraint message:
|
|
13
|
+
- `arcFlash()` (voltage/boltedFaultCurrent/workingDistance/faultClearingTime/gapBetweenConductors ≤ 0), `illuminance()` (roomLength/roomWidth/lumensPerLuminaire/targetLux ≤ 0, or luminaireHeight ≤ workplaneHeight — **return-type behavior change**: previously returned an all-zero result), `lel()` (gas with negative concentration or non-positive LEL), `respiratorCalculate()` (oel ≤ 0 — **was a tested `Infinity` return**; concentration < 0), `confinedSpace()` (oxygenPercent outside 0–100, or any negative gas reading; customGas pel/idlh ≤ 0), `thermalComfort()` (relativeHumidity outside 0–100, metabolicRate ≤ 0, clothingInsulation < 0, airVelocity < 0), `nioshLifting()` (negative distance/angle/frequency/loadWeight), `ladderAngle()` (negative height/baseDistance; ladderLength ≤ 0 when used as a given), `fallClearance()` (workerHeight ≤ 0, or negative distances), `havsCalculate()` (negative tool vibrationMagnitude/exposureTime), `noiseExposure()` (negative exposure duration), `ergonomicRisk()` (load < 0).
|
|
14
|
+
- **Boundaries deliberately preserved** (valid degenerate domain answers, not invalid input): `confinedSpace()` accepts a reading of `0` (a valid, possibly catastrophic measurement); `fallClearance()` keeps anchorHeight ≤ 0 → `isAdequate=false` + warning; `thermalComfort()`/`wbgtCalculate()` accept negative °C temperatures; `ergonomicRisk()` accepts negative joint angles (flexion/extension); empty tool/exposure/gas lists report no-exposure. **Intentional `Infinity` sentinels kept** (and now documented in `ERRORS.md`): `respiratorCalculate().safetyMargin = Infinity` when concentration = 0 (no hazard), `nioshLifting().liftingIndex = Infinity` when RWL = 0 (no acceptable weight) — both from valid inputs, analogous to the `cpk`/`ppk`/`cmk` degenerate-spread exception. `wbgtCalculate()` remains `safe` (no invalid-input class).
|
|
15
|
+
- **`lel()` status thresholds conservatized (NT-14)** — the mixed-gas `%LEL` status used `safe < 25 / caution 25–50 / danger > 50`, more permissive than the industry `%LEL` convention used everywhere else in the library (`confinedSpace()` and all locale docs: `safe < 10 / caution 10–25 / danger > 25`, evacuate above 25% LEL). `lel()` now follows the same `10 / 25` convention. **Behavior change**: the `status` field returns `caution`/`danger` at lower `%LEL` than before (e.g. 20% LEL: `safe` → `caution`; 40% LEL: `caution` → `danger`). Numeric outputs (`mixtureLel`, `percentOfLel`, `safetyMargin`) are unchanged.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **`weldHeat()`: machine-readable i18n codes (additive, backward-compatible)** — addresses online-tools ISSUE-20260621-formulab-weldheat-recommendations-no-code, where consumers could only render the English `recommendations` prose and `preheatTemp.source` string (i18n required brittle reverse-mapping or re-implementing the branch logic — both layer-violating anti-patterns). The result now also carries:
|
|
20
|
+
- `preheatTemp.sourceCode: 'awsTable' | 'awsJudgment' | 'engineeringJudgment'` alongside the unchanged `source` string.
|
|
21
|
+
- `recommendationCodes: { code, params }[]` parallel (index-aligned) to `recommendations`, with stable codes (`preheat`, `fastCooling`, `pwht`, `stainlessInterpass`, …) and interpolation params (e.g. `{ min, max, source }`, `{ t85 }`, `{ hazHardnessMax }`). Consumers map `code` → a localized template and interpolate `params`. The existing `recommendations`/`source` strings are untouched.
|
|
22
|
+
|
|
23
|
+
## [0.13.6] - 2026-06-21
|
|
24
|
+
|
|
25
|
+
### Changed (breaking within 0.x)
|
|
26
|
+
|
|
27
|
+
- **Invalid-input zero-fill results migrated to the standard error policy — tail of the v0.13.5 sweep** — the v0.13.5 sweep missed a set of public functions that still returned an all-zero/sentinel result object on must-be-positive invalid input instead of throwing (reported by online-tools: ISSUE-20260621-formulab-zerofill-invalid-guards, which independently reproduced user-facing zero-fills the prior full-audit had marked drained). `ERRORS.md` already documented several of these as `throw` (aspirational); the code now conforms. All of the following now **throw `RangeError`** with a per-constraint message, consistent with the rest of the library — consumers branch on the boundary, not on a zero result:
|
|
28
|
+
- **metal**: `bolt()` (diameter/pitch/kFactor/tensileStrength ≤ 0; torque ≤ 0 in `torqueToPreload`, preload ≤ 0 in `preloadToTorque` — all six former zero-fill paths), `pressFit()` (shaftDiameter/holeDiameter/hubOuterDiameter/contactLength ≤ 0 — the clearance-fit `interference ≤ 0` and `hubOuterDiameter ≤ shaftDiameter` results are legitimate physical states and **kept**), `spring()` (wireDiameter/meanCoilDiameter/activeCoils ≤ 0), `tap()` (majorDiameter/pitch ≤ 0), `welding()` (thickness ≤ 0 — previously returned empty recommendations + zero rod diameter).
|
|
29
|
+
- **logistics**: `dimWeight()` (length/width/height ≤ 0; actualWeight < 0 — zero actual weight stays legit, billing falls back to dimensional weight), `fillRate()` (totalOrders ≤ 0), `freightClass()` (weight/length/width/height ≤ 0), `kanban()` (dailyDemand/leadTime/containerQuantity ≤ 0), `pickTime()` (speed/itemsPerOrder ≤ 0).
|
|
30
|
+
- **electronics**: `smtTakt()` (placementRate/componentsPerBoard ≤ 0), `solderPaste()` (padCount/stencilThickness ≤ 0).
|
|
31
|
+
- **energy**: `motorEfficiency()` (currentEfficiency/newEfficiency ≤ 0).
|
|
32
|
+
- **automotive**: `batteryRuntime()` (capacityAh ≤ 0 — completing the voltageV/loadW guards added in 0.13.5).
|
|
33
|
+
- **chemical**: `ph()` (acidConcentration/baseConcentration ≤ 0), `pid()` (non-positive process parameters in every method branch — processGain/deadTime/timeConstant ≤ 0 for Z-N step & Cohen-Coon, ultimateGain/ultimatePeriod ≤ 0 for Z-N ultimate; previously returned all-zero gains).
|
|
34
|
+
- **quality**: `aql()` (lotSize ≤ 0).
|
|
35
|
+
- **construction**: `slope()` (ratio ≤ 0 — a 1:N ratio with N ≤ 0 is vertical/undefined, previously inverted to "flat 0%"; percent/degrees value 0 stays legit flat ground).
|
|
36
|
+
- **Intentionally kept** (unchanged): `cpk()`/`ppk()`/`cmk()` degenerate-spread zero result (stdDev ≤ 0 → zero indices — a computable degenerate case, not invalid input); `kanban()` negative `safetyFactor` zero-fill and `fillRate()` `serviceLevel()` (not must-be-positive); all legitimate-zero computations (e.g. automotive `power()`/`torque()`, energy `carbonFootprint()` where 0 input = 0 output). `ERRORS.md` condition descriptions corrected for the migrated functions.
|
|
37
|
+
|
|
8
38
|
## [0.13.5] - 2026-06-18
|
|
9
39
|
|
|
10
40
|
### Changed (breaking within 0.x)
|
|
@@ -9,7 +9,7 @@ import type { BatteryInput, BatteryResult } from './types.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @param input - Battery parameters
|
|
11
11
|
* @returns Battery result with energy and runtime
|
|
12
|
-
* @throws RangeError if voltageV
|
|
12
|
+
* @throws RangeError if capacityAh, voltageV, or loadW is not greater than 0
|
|
13
13
|
*/
|
|
14
14
|
export declare function batteryRuntime(input: BatteryInput): BatteryResult;
|
|
15
15
|
//# sourceMappingURL=batteryRuntime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batteryRuntime.d.ts","sourceRoot":"","sources":["../../src/automotive/batteryRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"batteryRuntime.d.ts","sourceRoot":"","sources":["../../src/automotive/batteryRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA0BjE"}
|
|
@@ -9,10 +9,13 @@ import { roundTo } from '../utils.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @param input - Battery parameters
|
|
11
11
|
* @returns Battery result with energy and runtime
|
|
12
|
-
* @throws RangeError if voltageV
|
|
12
|
+
* @throws RangeError if capacityAh, voltageV, or loadW is not greater than 0
|
|
13
13
|
*/
|
|
14
14
|
export function batteryRuntime(input) {
|
|
15
15
|
const { capacityAh, voltageV, loadW, efficiency } = input;
|
|
16
|
+
if (capacityAh <= 0) {
|
|
17
|
+
throw new RangeError('capacityAh must be greater than 0');
|
|
18
|
+
}
|
|
16
19
|
if (voltageV <= 0) {
|
|
17
20
|
throw new RangeError('voltageV must be greater than 0');
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batteryRuntime.js","sourceRoot":"","sources":["../../src/automotive/batteryRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE1D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;IAClC,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;IACrD,MAAM,cAAc,GAAG,YAAY,GAAG,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IAErC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"batteryRuntime.js","sourceRoot":"","sources":["../../src/automotive/batteryRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE1D,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;IAClC,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;IACrD,MAAM,cAAc,GAAG,YAAY,GAAG,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IAErC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ph.d.ts","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AA0BlE;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"ph.d.ts","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AA0BlE;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAgD3C;AAED;;GAEG"}
|
package/dist/chemical/ph.js
CHANGED
|
@@ -32,14 +32,12 @@ const DPKA_DT = {
|
|
|
32
32
|
*/
|
|
33
33
|
export function ph(input) {
|
|
34
34
|
const { bufferSystem, acidConcentration, baseConcentration, temperature, customPka } = input;
|
|
35
|
-
// Guard against invalid
|
|
35
|
+
// Guard against invalid concentrations
|
|
36
36
|
if (acidConcentration <= 0) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
effectiveRange: { min: 0, max: 0 },
|
|
42
|
-
};
|
|
37
|
+
throw new RangeError('acidConcentration must be greater than 0');
|
|
38
|
+
}
|
|
39
|
+
if (baseConcentration <= 0) {
|
|
40
|
+
throw new RangeError('baseConcentration must be greater than 0');
|
|
43
41
|
}
|
|
44
42
|
// Get base pKa at 25C
|
|
45
43
|
let pKaBase;
|
package/dist/chemical/ph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,GAAoD;IAClE,OAAO,EAAE,IAAI,EAAK,wBAAwB;IAC1C,SAAS,EAAE,IAAI,EAAG,0BAA0B;IAC5C,IAAI,EAAE,IAAI,EAAQ,sBAAsB;IACxC,OAAO,EAAE,IAAI,EAAK,mBAAmB;IACrC,SAAS,EAAE,IAAI,EAAG,uBAAuB;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAoD;IAC/D,OAAO,EAAE,GAAG,EAAM,aAAa;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAM,sCAAsC;IACxD,OAAO,EAAE,CAAC,KAAK;IACf,SAAS,EAAE,CAAC,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7F,
|
|
1
|
+
{"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,GAAoD;IAClE,OAAO,EAAE,IAAI,EAAK,wBAAwB;IAC1C,SAAS,EAAE,IAAI,EAAG,0BAA0B;IAC5C,IAAI,EAAE,IAAI,EAAQ,sBAAsB;IACxC,OAAO,EAAE,IAAI,EAAK,mBAAmB;IACrC,SAAS,EAAE,IAAI,EAAG,uBAAuB;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAoD;IAC/D,OAAO,EAAE,GAAG,EAAM,aAAa;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAM,sCAAsC;IACxD,OAAO,EAAE,CAAC,KAAK;IACf,SAAS,EAAE,CAAC,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7F,uCAAuC;IACvC,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACnE,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IAEnB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC;QAC3B,MAAM,GAAG,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAExC,qDAAqD;IACrD,MAAM,KAAK,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACjE,MAAM,cAAc,GAAG,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5F,oCAAoC;IACpC,MAAM,cAAc,GAAG;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;KACzB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG"}
|
package/dist/chemical/pid.js
CHANGED
|
@@ -21,7 +21,7 @@ export function pid(input) {
|
|
|
21
21
|
const L = input.deadTime ?? 1;
|
|
22
22
|
const T = input.timeConstant ?? 1;
|
|
23
23
|
if (K <= 0 || L <= 0 || T <= 0) {
|
|
24
|
-
|
|
24
|
+
throw new RangeError('processGain, deadTime, and timeConstant must all be greater than 0');
|
|
25
25
|
}
|
|
26
26
|
if (controllerType === 'P') {
|
|
27
27
|
kp = T / (K * L);
|
|
@@ -44,7 +44,7 @@ export function pid(input) {
|
|
|
44
44
|
const Ku = input.ultimateGain ?? 1;
|
|
45
45
|
const Pu = input.ultimatePeriod ?? 1;
|
|
46
46
|
if (Ku <= 0 || Pu <= 0) {
|
|
47
|
-
|
|
47
|
+
throw new RangeError('ultimateGain and ultimatePeriod must both be greater than 0');
|
|
48
48
|
}
|
|
49
49
|
if (controllerType === 'P') {
|
|
50
50
|
kp = 0.5 * Ku;
|
|
@@ -68,7 +68,7 @@ export function pid(input) {
|
|
|
68
68
|
const L = input.deadTime ?? 1;
|
|
69
69
|
const T = input.timeConstant ?? 1;
|
|
70
70
|
if (K <= 0 || L <= 0 || T <= 0) {
|
|
71
|
-
|
|
71
|
+
throw new RangeError('processGain, deadTime, and timeConstant must all be greater than 0');
|
|
72
72
|
}
|
|
73
73
|
const r = L / T; // dead time ratio
|
|
74
74
|
if (controllerType === 'P') {
|
package/dist/chemical/pid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/chemical/pid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEzC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,UAAU,GAAG,MAAM,CAAC;IAExB,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,
|
|
1
|
+
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/chemical/pid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slope.d.ts","sourceRoot":"","sources":["../../src/construction/slope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"slope.d.ts","sourceRoot":"","sources":["../../src/construction/slope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAsDpD"}
|
|
@@ -11,7 +11,12 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export function slope(input) {
|
|
13
13
|
const { fromUnit, value } = input;
|
|
14
|
-
//
|
|
14
|
+
// A ratio of 1:N with N <= 0 is vertical/undefined, not flat ground.
|
|
15
|
+
// (percent/degrees value 0 is legitimately flat and returns zeros below.)
|
|
16
|
+
if (fromUnit === 'ratio' && value <= 0) {
|
|
17
|
+
throw new RangeError('ratio value must be greater than 0');
|
|
18
|
+
}
|
|
19
|
+
// Handle zero value (flat ground for percent/degrees)
|
|
15
20
|
if (value === 0) {
|
|
16
21
|
return {
|
|
17
22
|
percent: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slope.js","sourceRoot":"","sources":["../../src/construction/slope.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAElC,
|
|
1
|
+
{"version":3,"file":"slope.js","sourceRoot":"","sources":["../../src/construction/slope.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAElC,qEAAqE;IACrE,0EAA0E;IAC1E,IAAI,QAAQ,KAAK,OAAO,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IAED,sDAAsD;IACtD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,OAAe,CAAC;IAEpB,wCAAwC;IACxC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,GAAG,KAAK,CAAC;YAChB,MAAM;QACR,KAAK,SAAS;YACZ,sCAAsC;YACtC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAClD,MAAM;QACR,KAAK,OAAO;YACV,mCAAmC;YACnC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM;QACR;YACE,OAAO,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,sCAAsC;IACtC,+BAA+B;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3D,mCAAmC;IACnC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,GAAG,EAAE,CAAC;IAElC,OAAO;QACL,OAAO;QACP,OAAO;QACP,KAAK;QACL,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smt-takt.d.ts","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"smt-takt.d.ts","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8C1D"}
|
|
@@ -10,23 +10,11 @@ import { roundTo } from '../utils.js';
|
|
|
10
10
|
export function smtTakt(input) {
|
|
11
11
|
const { placementRate, componentsPerBoard, boardsPerPanel, setupTimeSec, availableTimeMin, } = input;
|
|
12
12
|
// Guard against invalid inputs
|
|
13
|
-
if (componentsPerBoard <= 0) {
|
|
14
|
-
return {
|
|
15
|
-
placementTimeSec: 0,
|
|
16
|
-
totalCycleTimeSec: 0,
|
|
17
|
-
boardsPerHour: 0,
|
|
18
|
-
totalBoardsPerShift: 0,
|
|
19
|
-
lineUtilization: 0,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
13
|
if (placementRate <= 0) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
totalBoardsPerShift: 0,
|
|
28
|
-
lineUtilization: 0,
|
|
29
|
-
};
|
|
14
|
+
throw new RangeError('placementRate must be greater than 0');
|
|
15
|
+
}
|
|
16
|
+
if (componentsPerBoard <= 0) {
|
|
17
|
+
throw new RangeError('componentsPerBoard must be greater than 0');
|
|
30
18
|
}
|
|
31
19
|
// Calculate placement time per board (seconds)
|
|
32
20
|
// placementRate is in components per hour (cph)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smt-takt.js","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EACJ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,+BAA+B;IAC/B,IAAI,
|
|
1
|
+
{"version":3,"file":"smt-takt.js","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EACJ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,+BAA+B;IAC/B,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACpE,CAAC;IAED,+CAA+C;IAC/C,gDAAgD;IAChD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjF,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAEtE,kBAAkB;IAClB,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvF,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAC/C,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,cAAc,CAAC;QACrE,CAAC,CAAC,CAAC,CAAC;IAEN,qEAAqE;IACrE,MAAM,eAAe,GAAG,iBAAiB,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solder.d.ts","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"solder.d.ts","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CA8C5D"}
|
|
@@ -10,14 +10,11 @@ import { roundTo } from '../utils.js';
|
|
|
10
10
|
export function solderPaste(input) {
|
|
11
11
|
const { padCount, avgPadArea, stencilThickness, transferEfficiency, density, boardsPerPanel, panelCount, } = input;
|
|
12
12
|
// Guard against zero/negative values
|
|
13
|
-
if (padCount <= 0
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
totalWeight: 0,
|
|
19
|
-
totalWeightKg: 0,
|
|
20
|
-
};
|
|
13
|
+
if (padCount <= 0) {
|
|
14
|
+
throw new RangeError('padCount must be greater than 0');
|
|
15
|
+
}
|
|
16
|
+
if (stencilThickness <= 0) {
|
|
17
|
+
throw new RangeError('stencilThickness must be greater than 0');
|
|
21
18
|
}
|
|
22
19
|
// Volume per board (mm3)
|
|
23
20
|
// Volume = padCount * avgPadArea * stencilThickness * transferEfficiency
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solder.js","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,IAAI,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"solder.js","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IAED,yBAAyB;IACzB,yEAAyE;IACzE,MAAM,cAAc,GAAG,OAAO,CAC5B,QAAQ,GAAG,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,EAC7D,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,qEAAqE;IACrE,sCAAsC;IACtC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,6CAA6C;IAC7C,MAAM,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,cAAc;QACd,cAAc;QACd,WAAW;QACX,WAAW;QACX,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motorEfficiency.d.ts","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"motorEfficiency.d.ts","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA6ClF"}
|
|
@@ -12,14 +12,11 @@
|
|
|
12
12
|
export function motorEfficiency(input) {
|
|
13
13
|
const { motorPower, runningHours, currentEfficiency, newEfficiency, electricityRate, loadFactor, upgradeCost, } = input;
|
|
14
14
|
// Handle edge case - invalid efficiency values
|
|
15
|
-
if (currentEfficiency <= 0
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
energySavings: 0,
|
|
21
|
-
paybackPeriod: null,
|
|
22
|
-
};
|
|
15
|
+
if (currentEfficiency <= 0) {
|
|
16
|
+
throw new RangeError('currentEfficiency must be greater than 0');
|
|
17
|
+
}
|
|
18
|
+
if (newEfficiency <= 0) {
|
|
19
|
+
throw new RangeError('newEfficiency must be greater than 0');
|
|
23
20
|
}
|
|
24
21
|
// Calculate annual energy consumption for each efficiency level
|
|
25
22
|
// Energy = Power * Hours * LoadFactor / Efficiency
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motorEfficiency.js","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,GACZ,GAAG,KAAK,CAAC;IAEV,+CAA+C;IAC/C,IAAI,iBAAiB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"motorEfficiency.js","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,GACZ,GAAG,KAAK,CAAC;IAEV,+CAA+C;IAC/C,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IAC/D,CAAC;IAED,gEAAgE;IAChE,mDAAmD;IACnD,MAAM,mBAAmB,GAAG,CAAC,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,GAAG,iBAAiB,CAAC;IACzF,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,GAAG,aAAa,CAAC;IAEjF,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAChE,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IAExD,oBAAoB;IACpB,MAAM,aAAa,GAAG,iBAAiB,GAAG,aAAa,CAAC;IACxD,MAAM,aAAa,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAE5D,2BAA2B;IAC3B,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtE,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimWeight.d.ts","sourceRoot":"","sources":["../../src/logistics/dimWeight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAa/E;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"dimWeight.d.ts","sourceRoot":"","sources":["../../src/logistics/dimWeight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAa/E;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA0BhE"}
|
|
@@ -21,16 +21,14 @@ const DIM_FACTORS = {
|
|
|
21
21
|
*/
|
|
22
22
|
export function dimWeight(input) {
|
|
23
23
|
const { length, width, height, actualWeight, carrier } = input;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
}
|
|
24
|
+
if (length <= 0)
|
|
25
|
+
throw new RangeError('length must be greater than 0');
|
|
26
|
+
if (width <= 0)
|
|
27
|
+
throw new RangeError('width must be greater than 0');
|
|
28
|
+
if (height <= 0)
|
|
29
|
+
throw new RangeError('height must be greater than 0');
|
|
30
|
+
if (actualWeight < 0)
|
|
31
|
+
throw new RangeError('actualWeight must not be negative');
|
|
34
32
|
const dimFactor = DIM_FACTORS[carrier];
|
|
35
33
|
// Dimensional weight = (L × W × H) / DIM factor
|
|
36
34
|
// Input is in cm, output in kg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimWeight.js","sourceRoot":"","sources":["../../src/logistics/dimWeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,qEAAqE;AACrE,6BAA6B;AAC7B,mEAAmE;AACnE,wEAAwE;AACxE,4DAA4D;AAC5D,MAAM,WAAW,GAAgC;IAC/C,YAAY,EAAE,IAAI;IAClB,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE/D,
|
|
1
|
+
{"version":3,"file":"dimWeight.js","sourceRoot":"","sources":["../../src/logistics/dimWeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,qEAAqE;AACrE,6BAA6B;AAC7B,mEAAmE;AACnE,wEAAwE;AACxE,4DAA4D;AAC5D,MAAM,WAAW,GAAgC;IAC/C,YAAY,EAAE,IAAI;IAClB,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE/D,IAAI,MAAM,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACvE,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACrE,IAAI,MAAM,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACvE,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAEhF,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEvC,gDAAgD;IAChD,+BAA+B;IAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAErD,2DAA2D;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAExE,OAAO;QACL,iBAAiB;QACjB,YAAY,EAAE,mBAAmB;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,SAAS;QACT,iBAAiB,EAAE,iBAAiB,GAAG,mBAAmB;KAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAmB7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
|
|
@@ -11,15 +11,8 @@ import { normalCDF } from '../math.js';
|
|
|
11
11
|
*/
|
|
12
12
|
export function fillRate(input) {
|
|
13
13
|
const { totalOrders, filledComplete } = input;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
fillRate: 0,
|
|
18
|
-
shortfallRate: 100,
|
|
19
|
-
filledComplete: 0,
|
|
20
|
-
shortfall: 0,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
14
|
+
if (totalOrders <= 0)
|
|
15
|
+
throw new RangeError('totalOrders must be greater than 0');
|
|
23
16
|
// Clamp filledComplete to valid range
|
|
24
17
|
const actualFilled = Math.min(Math.max(0, filledComplete), totalOrders);
|
|
25
18
|
const shortfall = totalOrders - actualFilled;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,IAAI,WAAW,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAEjF,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":"freightClass.d.ts","sourceRoot":"","sources":["../../src/logistics/freightClass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2BxE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"freightClass.d.ts","sourceRoot":"","sources":["../../src/logistics/freightClass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2BxE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAiCzE"}
|
|
@@ -34,15 +34,14 @@ const FREIGHT_CLASS_TABLE = [
|
|
|
34
34
|
*/
|
|
35
35
|
export function freightClass(input) {
|
|
36
36
|
const { weight, length, width, height } = input;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
37
|
+
if (weight <= 0)
|
|
38
|
+
throw new RangeError('weight must be greater than 0');
|
|
39
|
+
if (length <= 0)
|
|
40
|
+
throw new RangeError('length must be greater than 0');
|
|
41
|
+
if (width <= 0)
|
|
42
|
+
throw new RangeError('width must be greater than 0');
|
|
43
|
+
if (height <= 0)
|
|
44
|
+
throw new RangeError('height must be greater than 0');
|
|
46
45
|
// Calculate volume in cubic feet (input is in inches)
|
|
47
46
|
const volumeCuIn = length * width * height;
|
|
48
47
|
const volumeCuFt = volumeCuIn / 1728; // 12^3 = 1728 cubic inches per cubic foot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freightClass.js","sourceRoot":"","sources":["../../src/logistics/freightClass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,mBAAmB,GAA+F;IACtH,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;IACtF,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACjF,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;IAClF,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;IAC9E,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;IAC/E,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,0BAA0B,EAAE;IAC/F,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE;IACrF,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE;IAC1F,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,yBAAyB,EAAE;IAC5F,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACtF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE;IAClF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE;IAClF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACnF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,wBAAwB,EAAE;IACxF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE;IAClF,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE;IAC/E,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE;IAC9E,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,4BAA4B,EAAE;CAC7F,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEhD,
|
|
1
|
+
{"version":3,"file":"freightClass.js","sourceRoot":"","sources":["../../src/logistics/freightClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/logistics/kanban.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/logistics/kanban.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAwCvD"}
|
package/dist/logistics/kanban.js
CHANGED
|
@@ -17,8 +17,14 @@ import { roundTo } from '../utils.js';
|
|
|
17
17
|
*/
|
|
18
18
|
export function kanban(input) {
|
|
19
19
|
const { dailyDemand, leadTime, safetyFactor, containerQuantity } = input;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (dailyDemand <= 0)
|
|
21
|
+
throw new RangeError('dailyDemand must be greater than 0');
|
|
22
|
+
if (leadTime <= 0)
|
|
23
|
+
throw new RangeError('leadTime must be greater than 0');
|
|
24
|
+
if (containerQuantity <= 0)
|
|
25
|
+
throw new RangeError('containerQuantity must be greater than 0');
|
|
26
|
+
// Negative safety factor is invalid but returns a zero result (not a throw)
|
|
27
|
+
if (safetyFactor < 0) {
|
|
22
28
|
return {
|
|
23
29
|
numberOfKanbans: 0,
|
|
24
30
|
numberOfKanbansRounded: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/logistics/kanban.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAEzE,
|
|
1
|
+
{"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/logistics/kanban.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAEzE,IAAI,WAAW,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IACjF,IAAI,QAAQ,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC3E,IAAI,iBAAiB,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IAE7F,4EAA4E;IAC5E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,eAAe,EAAE,CAAC;YAClB,sBAAsB,EAAE,CAAC;YACzB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,CAAC;YACd,gBAAgB,EAAE,CAAC;SACpB,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEhE,yBAAyB;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAE/D,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/E,8BAA8B;IAC9B,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAEzE,qEAAqE;IACrE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE1D,OAAO;QACL,eAAe;QACf,sBAAsB;QACtB,oBAAoB;QACpB,WAAW,EAAE,MAAM;QACnB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pickTime.d.ts","sourceRoot":"","sources":["../../src/logistics/pickTime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"pickTime.d.ts","sourceRoot":"","sources":["../../src/logistics/pickTime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA2D7D"}
|
|
@@ -15,18 +15,10 @@ import { roundTo } from '../utils.js';
|
|
|
15
15
|
*/
|
|
16
16
|
export function pickTime(input) {
|
|
17
17
|
const { mode, distance, speed, itemsPerOrder, searchTimePerItem, pickTimePerItem, documentationTime, batchSize = 1, } = input;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
searchTime: 0,
|
|
23
|
-
pickTime: 0,
|
|
24
|
-
documentationTime: 0,
|
|
25
|
-
totalTime: 0,
|
|
26
|
-
totalTimeMinutes: 0,
|
|
27
|
-
ordersPerHour: 0,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
18
|
+
if (speed <= 0)
|
|
19
|
+
throw new RangeError('speed must be greater than 0');
|
|
20
|
+
if (itemsPerOrder <= 0)
|
|
21
|
+
throw new RangeError('itemsPerOrder must be greater than 0');
|
|
30
22
|
// Calculate base times
|
|
31
23
|
// Travel time = distance / speed, convert to seconds (speed is per minute)
|
|
32
24
|
const baseTravelTime = (distance / speed) * 60;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pickTime.js","sourceRoot":"","sources":["../../src/logistics/pickTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,GAAG,CAAC,GACd,GAAG,KAAK,CAAC;IAEV,
|
|
1
|
+
{"version":3,"file":"pickTime.js","sourceRoot":"","sources":["../../src/logistics/pickTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,GAAG,CAAC,GACd,GAAG,KAAK,CAAC;IAEV,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACrE,IAAI,aAAa,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IAErF,uBAAuB;IACvB,2EAA2E;IAC3E,MAAM,cAAc,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAE/C,yCAAyC;IACzC,MAAM,cAAc,GAAG,aAAa,GAAG,iBAAiB,CAAC;IACzD,MAAM,YAAY,GAAG,aAAa,GAAG,eAAe,CAAC;IAErD,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAkB,CAAC;IACvB,IAAI,IAAY,CAAC;IACjB,IAAI,OAAe,CAAC;IAEpB,IAAI,IAAI,KAAK,OAAO,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACtC,0DAA0D;QAC1D,4DAA4D;QAC5D,6BAA6B;QAC7B,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;QACxC,UAAU,GAAG,cAAc,CAAC,CAAC,YAAY;QACzC,IAAI,GAAG,YAAY,CAAC,CAAC,YAAY;QACjC,OAAO,GAAG,iBAAiB,CAAC,CAAC,YAAY;IAC3C,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,UAAU,GAAG,cAAc,CAAC;QAC5B,UAAU,GAAG,cAAc,CAAC;QAC5B,IAAI,GAAG,YAAY,CAAC;QACpB,OAAO,GAAG,iBAAiB,CAAC;IAC9B,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC;IAC3D,MAAM,gBAAgB,GAAG,SAAS,GAAG,EAAE,CAAC;IAExC,8BAA8B;IAC9B,MAAM,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1B,iBAAiB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
package/dist/metal/bolt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolt.d.ts","sourceRoot":"","sources":["../../src/metal/bolt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"bolt.d.ts","sourceRoot":"","sources":["../../src/metal/bolt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CA2DjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyBzD"}
|