formulab 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,62 @@ 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
+ ## [Unreleased]
9
+
10
+ ## [0.48.0] - 2026-09-24
11
+
12
+ ### Changed
13
+
14
+ - **Breaking — `ArcFlashInput`**: `enclosureType` is replaced by `equipment: 'open' | 'switchgear' |
15
+ 'mcc' | 'panel' | 'cable'` (IEEE 1584-2002 Table 4 classes; `box` becomes `switchgear`), and
16
+ `grounding: 'grounded' | 'ungrounded'` is now required (use `ungrounded` for high-resistance
17
+ grounded systems).
18
+ - `arcFlash()` throws a `RangeError` for inputs outside the model range (208 V–15 kV, 0.7–106 kA,
19
+ 13–152 mm gap) and for MCC or panel above 1 kV, where Table 4 gives no distance exponent.
20
+ - `ArcFlashResult` gains `normalizedIncidentEnergy`, `distanceExponent`, `standard`, and, at 1 kV or
21
+ below, `reducedArcCurrent` (85 % of the arcing current, which the guide asks to evaluate as well).
22
+ `arcCurrent` now has three decimal places.
23
+ - **Breaking — `fallClearance()`**: every height is now measured from the worker's feet, and each
24
+ height means one thing. `FallClearanceInput` now takes `dRingHeight` (was `workerHeight`, whose
25
+ comment already said D-ring height), `anchorAboveFeet` (was `anchorHeight`), and an optional
26
+ `workingHeight`. `rescueClearance` is removed. `FallClearanceResult` now returns `requiredClearance`
27
+ (was `minimumHeight`), `clearanceBelowAnchor` (the "18.5 ft" figure) and `freeFallDistance`.
28
+ `clearanceAboveObstacle` and `isAdequate` are `null` when `workingHeight` is not given.
29
+
30
+ ### Fixed
31
+
32
+ - **`safety/arcFlash()` now implements IEEE 1584-2002 as published.** The function said it followed
33
+ IEEE 1584-2018 but used the 2002 equations, and it got several of those wrong:
34
+ - The low-voltage arcing current left out K (−0.153 open, −0.097 box), so it was about 25 % too high.
35
+ - Cf (1.5 at 1 kV or below, 1.0 above) was chosen by enclosure type instead of by voltage.
36
+ - The distance exponent depended only on voltage (1.641 or 0.973). Table 4 gives it per equipment
37
+ class: open air and cable 2.000, switchgear 1.473 or 0.973, MCC and panel 1.641.
38
+ - K2 was always 0, which is the ungrounded value, although a comment called it grounded.
39
+
40
+ Checked against a published IEEE 1584-2002 worked example (Phillips, 480 V panel, 30 kA): arcing
41
+ current 16.761 kA and incident energy 0.969 cal/cm², both matching.
42
+
43
+ - **`safety/fallClearance()` used `anchorHeight` with two meanings.** The minimum height treated it as
44
+ the anchor's height above the feet. The obstacle check treated it as the anchor's height above the
45
+ lower level. As a result:
46
+ - The total fall distance never subtracted the anchor height (4.97 m where the formula gives
47
+ 4.82 m).
48
+ - The free-space figure added a 0.9 m "ANSI Z359.4 rescue clearance". No such minimum could be
49
+ confirmed, so it is removed.
50
+ - The obstacle verdict compared numbers measured from different references. For a worker 0.15 m
51
+ below the anchor it reported "5.42 m below obstacle".
52
+
53
+ The verdict now needs the working surface height and is `null` without it. There is a new warning
54
+ when free fall exceeds the OSHA 1926.502(d)(16)(iii) limit of 6 ft. The remaining unsourced warnings
55
+ (lanyard over 1.8 m, worker height range, safety factor under 0.6 m, rescue clearance) are removed. Checked against the widely
56
+ published 18.5 ft figure (6 ft lanyard, 3.5 ft deceleration, 1 ft stretch, 5 ft D-ring height, 3 ft
57
+ safety factor).
58
+
59
+ - **`safety/ladderAngle()` `idealBaseDistance` is a quarter of the ladder's working length**, per OSHA
60
+ 29 CFR 1926.1053(b)(5)(i), instead of a quarter of its height. The function's own 75.5° default
61
+ already followed the working-length rule (cos 75.5° ≈ 1/4); a quarter of the height is atan(4) ≈
62
+ 75.96°. A 6 m ladder now gives 1.5 m, not 1.45 m.
63
+
8
64
  ## [0.47.0] - 2026-09-15
9
65
 
10
66
  ### Fixed
@@ -9,5 +9,14 @@ import type { FlangeSpecInput, FlangeSpecResult } from './types.js';
9
9
  * @param input - Flange standard, pressure class, nominal size
10
10
  * @returns Flange dimensions (OD, thickness, bolt pattern, weight)
11
11
  */
12
+ /**
13
+ * NPS designations this table covers, ascending.
14
+ *
15
+ * Exposed for the same reason as `getPipeSizes`: without it a caller building a picker, or a test
16
+ * asserting a property across every row, has to restate the table — and a table's copy is where the
17
+ * two drift apart. Sorted numerically because `Object.keys` returns index-like keys ('1', '2', '10')
18
+ * before the rest, not in declaration order.
19
+ */
20
+ export declare function getFlangeSizes(): string[];
12
21
  export declare function flangeSpec(input: FlangeSpecInput): FlangeSpecResult;
13
22
  //# sourceMappingURL=flangeSpec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flangeSpec.d.ts","sourceRoot":"","sources":["../../src/metal/flangeSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAoEnF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA8BnE"}
1
+ {"version":3,"file":"flangeSpec.d.ts","sourceRoot":"","sources":["../../src/metal/flangeSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAoEnF;;;;;;;;;GASG;AACH;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA8BnE"}
@@ -63,6 +63,17 @@ const ASME_B16_5 = {
63
63
  * @param input - Flange standard, pressure class, nominal size
64
64
  * @returns Flange dimensions (OD, thickness, bolt pattern, weight)
65
65
  */
66
+ /**
67
+ * NPS designations this table covers, ascending.
68
+ *
69
+ * Exposed for the same reason as `getPipeSizes`: without it a caller building a picker, or a test
70
+ * asserting a property across every row, has to restate the table — and a table's copy is where the
71
+ * two drift apart. Sorted numerically because `Object.keys` returns index-like keys ('1', '2', '10')
72
+ * before the rest, not in declaration order.
73
+ */
74
+ export function getFlangeSizes() {
75
+ return Object.keys(ASME_B16_5).sort((a, b) => Number(a) - Number(b));
76
+ }
66
77
  export function flangeSpec(input) {
67
78
  const { standard, pressureClass, nominalSize } = input;
68
79
  if (standard === 'EN_1092_1') {
@@ -1 +1 @@
1
- {"version":3,"file":"flangeSpec.js","sourceRoot":"","sources":["../../src/metal/flangeSpec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flangeSpec.js","sourceRoot":"","sources":["../../src/metal/flangeSpec.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,6 @@ export { weldStrength } from './weldStrength.js';
29
29
  export { columnBuckling } from './columnBuckling.js';
30
30
  export { beamDeflection, beamDeflectionCurve } from './beamDeflection.js';
31
31
  export { materialGradeConverter } from './materialGradeConverter.js';
32
- export { pipeSpec } from './pipeSpec.js';
33
- export { flangeSpec } from './flangeSpec.js';
32
+ export { pipeSpec, getPipeSizes } from './pipeSpec.js';
33
+ export { flangeSpec, getFlangeSizes } from './flangeSpec.js';
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metal/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metal/index.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,6 @@ export { weldStrength } from './weldStrength.js';
30
30
  export { columnBuckling } from './columnBuckling.js';
31
31
  export { beamDeflection, beamDeflectionCurve } from './beamDeflection.js';
32
32
  export { materialGradeConverter } from './materialGradeConverter.js';
33
- export { pipeSpec } from './pipeSpec.js';
34
- export { flangeSpec } from './flangeSpec.js';
33
+ export { pipeSpec, getPipeSizes } from './pipeSpec.js';
34
+ export { flangeSpec, getFlangeSizes } from './flangeSpec.js';
35
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metal/index.ts"],"names":[],"mappings":"AAiJA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metal/index.ts"],"names":[],"mappings":"AAiJA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,13 +1,17 @@
1
1
  import type { PipeSpecInput, PipeSpecResult } from './types.js';
2
2
  /**
3
- * Look up pipe specifications from ANSI/ASME standards
3
+ * NPS designations this table covers, **sorted ascending by actual size**.
4
4
  *
5
- * @reference ASME B36.10M, ASME B36.19M
6
- * @throws {RangeError} Unknown DN size: {nominalSize}
7
- * @throws {RangeError} Unknown pipe size: {nps}
8
- * @throws {RangeError} Schedule {schedule} not available for size {nps}
9
- * @param input - Pipe standard, nominal size, and schedule
10
- * @returns Pipe dimensions (OD, wall thickness, ID, weight, areas)
5
+ * `thread` and `screw` already expose their size lists (`getMetricSizes`, `getUnifiedSizes`,
6
+ * `getDesignations`); this one did not, so a caller building a picker — or a test asserting a
7
+ * property across every row — had to restate the table, which is how a table and its copy drift
8
+ * apart.
9
+ *
10
+ * ⚠️ **The sort is not decoration.** `Object.keys` does not preserve declaration order here: keys
11
+ * that look like array indices (`'1'`, `'2'`, `'10'`) are returned first in numeric order, and only
12
+ * then the rest in insertion order — so the raw key order runs `1, 2, 3, 4, 6, 8, 10, 12, 14, 16,
13
+ * 1/2, 3/4, 1-1/4, …`. A picker built on that order lists 16" before 1/2".
11
14
  */
15
+ export declare function getPipeSizes(): string[];
12
16
  export declare function pipeSpec(input: PipeSpecInput): PipeSpecResult;
13
17
  //# sourceMappingURL=pipeSpec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeSpec.d.ts","sourceRoot":"","sources":["../../src/metal/pipeSpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAqD9E;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAuD7D"}
1
+ {"version":3,"file":"pipeSpec.d.ts","sourceRoot":"","sources":["../../src/metal/pipeSpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AA6E9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAuD7D"}
@@ -52,6 +52,36 @@ const STEEL_DENSITY = 7850; // kg/m³
52
52
  * @param input - Pipe standard, nominal size, and schedule
53
53
  * @returns Pipe dimensions (OD, wall thickness, ID, weight, areas)
54
54
  */
55
+ /**
56
+ * Parse an NPS designation to its numeric value in inches.
57
+ *
58
+ * Forms in this table: `'1/2'`, `'3/4'`, `'2'`, `'1-1/4'` (whole-and-fraction, hyphenated).
59
+ */
60
+ function npsValue(nps) {
61
+ const [whole, fraction] = nps.split('-');
62
+ const base = fraction === undefined && whole.includes('/') ? 0 : Number(whole);
63
+ const frac = fraction ?? (whole.includes('/') ? whole : undefined);
64
+ if (frac === undefined)
65
+ return base;
66
+ const [num, den] = frac.split('/').map(Number);
67
+ return base + num / den;
68
+ }
69
+ /**
70
+ * NPS designations this table covers, **sorted ascending by actual size**.
71
+ *
72
+ * `thread` and `screw` already expose their size lists (`getMetricSizes`, `getUnifiedSizes`,
73
+ * `getDesignations`); this one did not, so a caller building a picker — or a test asserting a
74
+ * property across every row — had to restate the table, which is how a table and its copy drift
75
+ * apart.
76
+ *
77
+ * ⚠️ **The sort is not decoration.** `Object.keys` does not preserve declaration order here: keys
78
+ * that look like array indices (`'1'`, `'2'`, `'10'`) are returned first in numeric order, and only
79
+ * then the rest in insertion order — so the raw key order runs `1, 2, 3, 4, 6, 8, 10, 12, 14, 16,
80
+ * 1/2, 3/4, 1-1/4, …`. A picker built on that order lists 16" before 1/2".
81
+ */
82
+ export function getPipeSizes() {
83
+ return Object.keys(PIPE_DATA).sort((a, b) => npsValue(a) - npsValue(b));
84
+ }
55
85
  export function pipeSpec(input) {
56
86
  const { standard, nominalSize, schedule } = input;
57
87
  // Normalize nominal size
@@ -1 +1 @@
1
- {"version":3,"file":"pipeSpec.js","sourceRoot":"","sources":["../../src/metal/pipeSpec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeSpec.js","sourceRoot":"","sources":["../../src/metal/pipeSpec.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,29 @@
1
1
  import type { ArcFlashInput, ArcFlashResult } from './types.js';
2
2
  /**
3
- * Arc Flash Incident Energy Calculator — IEEE 1584-2018 Simplified / NFPA 70E
3
+ * Arc Flash Incident Energy — IEEE 1584-2002 empirical model, PPE category per NFPA 70E
4
4
  *
5
5
  * @formula
6
- * - Ia (arcing current) from empirical IEEE 1584 equations
7
- * - E (incident energy) = Cf × normalized energy × (t/0.2) × (610^x / D^x)
8
- * - AFB = distance where E = 1.2 cal/cm²
6
+ * - Arcing current, V ≤ 1 kV:
7
+ * lg Ia = K + 0.662 lg Ibf + 0.0966 V + 0.000526 G + 0.5588 V lg Ibf − 0.00304 G lg Ibf
8
+ * (K = −0.153 open, −0.097 box; V in kV)
9
+ * - Arcing current, 1 kV < V ≤ 15 kV: lg Ia = 0.00402 + 0.983 lg Ibf
10
+ * - Normalized energy (610 mm, 0.2 s): lg En = K1 + K2 + 1.081 lg Ia + 0.0011 G
11
+ * (K1 = −0.792 open, −0.555 box; K2 = 0 ungrounded/high-resistance grounded, −0.113 grounded)
12
+ * - Incident energy: E = Cf × En × (t / 0.2) × (610 / D)^x [cal/cm²]
13
+ * (Cf = 1.5 for V ≤ 1 kV, 1.0 above; x from Table 4 by equipment and voltage class)
14
+ * - Arc flash boundary: DB = [Cf × En × (t / 0.2) × 610^x / 1.2]^(1/x) [mm, at 1.2 cal/cm²]
15
+ * - For V ≤ 1 kV the guide also requires a second evaluation at 85 % of Ia; `reducedArcCurrent`
16
+ * is that current, for reading the protective device's clearing time.
9
17
  *
10
- * @reference IEEE 1584-2018 — Guide for Performing Arc-Flash Hazard Calculations
11
- * @reference NFPA 70E-2024 — Standard for Electrical Safety in the Workplace
18
+ * @reference IEEE 1584-2002 — Guide for Performing Arc Flash Hazard Calculations, clause 5, Table 4
19
+ * @reference NFPA 70E — PPE categories by incident energy
20
+ * @validation J. Phillips, "Arc Flash Calculation Guide" (Brainfiller), IEEE 1584-2002 worked
21
+ * example: 480 V, 30 kA, 25 mm panel, grounded, 1 cycle, 457.2 mm → Ia 16.761 kA,
22
+ * En 4.82, E 0.969 cal/cm² (4.05 J/cm²) — reproduced to the published digits
12
23
  *
13
- * @throws {RangeError} voltage, boltedFaultCurrent, workingDistance, faultClearingTime,
14
- * or gapBetweenConductors is not greater than 0
24
+ * @throws {RangeError} a non-positive input; voltage outside 208–15 000 V, bolted fault current
25
+ * outside 0.7–106 kA or gap outside 13–152 mm (the model's fitted range); MCC or panel above 1 kV
26
+ * (no distance exponent in Table 4)
15
27
  */
16
28
  export declare function arcFlash(input: ArcFlashInput): ArcFlashResult;
17
29
  //# sourceMappingURL=arcFlash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arcFlash.d.ts","sourceRoot":"","sources":["../../src/safety/arcFlash.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,CA8F7D"}
1
+ {"version":3,"file":"arcFlash.d.ts","sourceRoot":"","sources":["../../src/safety/arcFlash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;AA+BnF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA+E7D"}
@@ -1,74 +1,101 @@
1
1
  import { roundTo } from '../utils.js';
2
+ /** IEEE 1584-2002 model range (clause 4) — the empirical equations were fitted only inside it. */
3
+ const VOLTAGE_RANGE = { min: 208, max: 15000 }; // V
4
+ const BOLTED_FAULT_RANGE = { min: 0.7, max: 106 }; // kA
5
+ const GAP_RANGE = { min: 13, max: 152 }; // mm
2
6
  /**
3
- * Arc Flash Incident Energy Calculator — IEEE 1584-2018 Simplified / NFPA 70E
7
+ * Distance exponent x — IEEE 1584-2002 Table 4 ("Factors for equipment and voltage classes").
8
+ * The table gives no MCC/panel row above 1 kV, so those combinations are outside the model.
9
+ */
10
+ const DISTANCE_EXPONENT = {
11
+ open: { low: 2.0, medium: 2.0 },
12
+ switchgear: { low: 1.473, medium: 0.973 },
13
+ mcc: { low: 1.641, medium: null },
14
+ panel: { low: 1.641, medium: null },
15
+ cable: { low: 2.0, medium: 2.0 },
16
+ };
17
+ /**
18
+ * Open configuration = no enclosure (open air, cable); box configuration = enclosed equipment.
19
+ * This selects K (arcing current) and K1 (normalized incident energy).
20
+ */
21
+ const ENCLOSED = {
22
+ open: false,
23
+ switchgear: true,
24
+ mcc: true,
25
+ panel: true,
26
+ cable: false,
27
+ };
28
+ /**
29
+ * Arc Flash Incident Energy — IEEE 1584-2002 empirical model, PPE category per NFPA 70E
4
30
  *
5
31
  * @formula
6
- * - Ia (arcing current) from empirical IEEE 1584 equations
7
- * - E (incident energy) = Cf × normalized energy × (t/0.2) × (610^x / D^x)
8
- * - AFB = distance where E = 1.2 cal/cm²
32
+ * - Arcing current, V ≤ 1 kV:
33
+ * lg Ia = K + 0.662 lg Ibf + 0.0966 V + 0.000526 G + 0.5588 V lg Ibf − 0.00304 G lg Ibf
34
+ * (K = −0.153 open, −0.097 box; V in kV)
35
+ * - Arcing current, 1 kV < V ≤ 15 kV: lg Ia = 0.00402 + 0.983 lg Ibf
36
+ * - Normalized energy (610 mm, 0.2 s): lg En = K1 + K2 + 1.081 lg Ia + 0.0011 G
37
+ * (K1 = −0.792 open, −0.555 box; K2 = 0 ungrounded/high-resistance grounded, −0.113 grounded)
38
+ * - Incident energy: E = Cf × En × (t / 0.2) × (610 / D)^x [cal/cm²]
39
+ * (Cf = 1.5 for V ≤ 1 kV, 1.0 above; x from Table 4 by equipment and voltage class)
40
+ * - Arc flash boundary: DB = [Cf × En × (t / 0.2) × 610^x / 1.2]^(1/x) [mm, at 1.2 cal/cm²]
41
+ * - For V ≤ 1 kV the guide also requires a second evaluation at 85 % of Ia; `reducedArcCurrent`
42
+ * is that current, for reading the protective device's clearing time.
9
43
  *
10
- * @reference IEEE 1584-2018 — Guide for Performing Arc-Flash Hazard Calculations
11
- * @reference NFPA 70E-2024 — Standard for Electrical Safety in the Workplace
44
+ * @reference IEEE 1584-2002 — Guide for Performing Arc Flash Hazard Calculations, clause 5, Table 4
45
+ * @reference NFPA 70E — PPE categories by incident energy
46
+ * @validation J. Phillips, "Arc Flash Calculation Guide" (Brainfiller), IEEE 1584-2002 worked
47
+ * example: 480 V, 30 kA, 25 mm panel, grounded, 1 cycle, 457.2 mm → Ia 16.761 kA,
48
+ * En 4.82, E 0.969 cal/cm² (4.05 J/cm²) — reproduced to the published digits
12
49
  *
13
- * @throws {RangeError} voltage, boltedFaultCurrent, workingDistance, faultClearingTime,
14
- * or gapBetweenConductors is not greater than 0
50
+ * @throws {RangeError} a non-positive input; voltage outside 208–15 000 V, bolted fault current
51
+ * outside 0.7–106 kA or gap outside 13–152 mm (the model's fitted range); MCC or panel above 1 kV
52
+ * (no distance exponent in Table 4)
15
53
  */
16
54
  export function arcFlash(input) {
17
- const { voltage, boltedFaultCurrent, workingDistance, faultClearingTime, gapBetweenConductors, enclosureType } = input;
18
- if (voltage <= 0) {
55
+ const { voltage, boltedFaultCurrent, workingDistance, faultClearingTime, gapBetweenConductors, equipment, grounding } = input;
56
+ if (voltage <= 0)
19
57
  throw new RangeError('voltage must be greater than 0');
20
- }
21
- if (boltedFaultCurrent <= 0) {
58
+ if (boltedFaultCurrent <= 0)
22
59
  throw new RangeError('boltedFaultCurrent must be greater than 0');
23
- }
24
- if (workingDistance <= 0) {
60
+ if (workingDistance <= 0)
25
61
  throw new RangeError('workingDistance must be greater than 0');
26
- }
27
- if (faultClearingTime <= 0) {
62
+ if (faultClearingTime <= 0)
28
63
  throw new RangeError('faultClearingTime must be greater than 0');
29
- }
30
- if (gapBetweenConductors <= 0) {
64
+ if (gapBetweenConductors <= 0)
31
65
  throw new RangeError('gapBetweenConductors must be greater than 0');
66
+ if (voltage < VOLTAGE_RANGE.min || voltage > VOLTAGE_RANGE.max) {
67
+ throw new RangeError(`voltage must be within ${VOLTAGE_RANGE.min}–${VOLTAGE_RANGE.max} V (IEEE 1584-2002 model range)`);
32
68
  }
33
- const Ibf = boltedFaultCurrent; // kA
34
- const V = voltage;
35
- const G = gapBetweenConductors; // mm
36
- const t = faultClearingTime; // seconds
37
- const D = workingDistance; // mm
38
- // Enclosure correction factors
39
- const enclosureCf = {
40
- open: 1.0,
41
- box: 1.5,
42
- mcc: 1.5,
43
- panel: 1.5,
44
- cable: 1.0,
45
- };
46
- const Cf = enclosureCf[enclosureType] ?? 1.0;
47
- // Distance exponents by voltage
48
- const distanceExponent = V <= 1000 ? 1.641 : 0.973;
49
- // Arcing current estimation (simplified IEEE 1584)
50
- let Ia;
51
- if (V <= 1000) {
52
- // Low voltage
53
- const logIa = 0.662 * Math.log10(Ibf) + 0.0966 * (V / 1000) + 0.000526 * G + 0.5588 * (V / 1000) * Math.log10(Ibf) - 0.00304 * G * Math.log10(Ibf);
54
- Ia = Math.pow(10, logIa);
69
+ if (boltedFaultCurrent < BOLTED_FAULT_RANGE.min || boltedFaultCurrent > BOLTED_FAULT_RANGE.max) {
70
+ throw new RangeError(`boltedFaultCurrent must be within ${BOLTED_FAULT_RANGE.min}–${BOLTED_FAULT_RANGE.max} kA (IEEE 1584-2002 model range)`);
55
71
  }
56
- else {
57
- // Medium voltage (> 1kV)
58
- const logIa = 0.00402 + 0.983 * Math.log10(Ibf);
59
- Ia = Math.pow(10, logIa);
72
+ if (gapBetweenConductors < GAP_RANGE.min || gapBetweenConductors > GAP_RANGE.max) {
73
+ throw new RangeError(`gapBetweenConductors must be within ${GAP_RANGE.min}–${GAP_RANGE.max} mm (IEEE 1584-2002 model range)`);
60
74
  }
61
- // Normalized incident energy at 610mm, 0.2s (cal/cm²)
62
- const K1 = enclosureType === 'open' ? -0.792 : -0.555;
63
- const K2 = 0; // ungrounded/HRG → -0.113, but default grounded
64
- const logEn = K1 + K2 + 1.081 * Math.log10(Ia) + 0.0011 * G;
65
- const En = Math.pow(10, logEn);
66
- // Incident energy at working distance
67
- const E = Cf * En * (t / 0.2) * Math.pow(610, distanceExponent) / Math.pow(D, distanceExponent);
68
- // Arc flash boundary (distance where E = 1.2 cal/cm²)
69
- const Eb = 1.2; // cal/cm² threshold
70
- const AFB = Math.pow((Cf * En * (t / 0.2) * Math.pow(610, distanceExponent)) / Eb, 1 / distanceExponent);
71
- // PPE Category per NFPA 70E Table 130.7(C)(15)(a)
75
+ const lowVoltage = voltage <= 1000;
76
+ const x = lowVoltage ? DISTANCE_EXPONENT[equipment].low : DISTANCE_EXPONENT[equipment].medium;
77
+ if (x === null) {
78
+ throw new RangeError(`equipment '${equipment}' has no distance exponent above 1 kV in IEEE 1584-2002 Table 4`);
79
+ }
80
+ const V = voltage / 1000; // kV
81
+ const G = gapBetweenConductors; // mm
82
+ const t = faultClearingTime; // s
83
+ const D = workingDistance; // mm
84
+ const lgIbf = Math.log10(boltedFaultCurrent);
85
+ const enclosed = ENCLOSED[equipment];
86
+ const K = enclosed ? -0.097 : -0.153;
87
+ const lgIa = lowVoltage
88
+ ? K + 0.662 * lgIbf + 0.0966 * V + 0.000526 * G + 0.5588 * V * lgIbf - 0.00304 * G * lgIbf
89
+ : 0.00402 + 0.983 * lgIbf;
90
+ const Ia = Math.pow(10, lgIa);
91
+ const K1 = enclosed ? -0.555 : -0.792;
92
+ const K2 = grounding === 'grounded' ? -0.113 : 0;
93
+ const En = Math.pow(10, K1 + K2 + 1.081 * Math.log10(Ia) + 0.0011 * G);
94
+ const Cf = lowVoltage ? 1.5 : 1.0;
95
+ const scaled = Cf * En * (t / 0.2);
96
+ const E = scaled * Math.pow(610 / D, x);
97
+ const AFB = Math.pow((scaled * Math.pow(610, x)) / 1.2, 1 / x);
98
+ // PPE category per NFPA 70E incident-energy bands
72
99
  let ppeCategory;
73
100
  if (E <= 1.2)
74
101
  ppeCategory = 0;
@@ -80,7 +107,6 @@ export function arcFlash(input) {
80
107
  ppeCategory = 3;
81
108
  else
82
109
  ppeCategory = 4;
83
- // Hazard level
84
110
  let hazardLevel;
85
111
  if (E <= 1.2)
86
112
  hazardLevel = 'safe';
@@ -88,7 +114,6 @@ export function arcFlash(input) {
88
114
  hazardLevel = 'danger';
89
115
  else
90
116
  hazardLevel = 'extreme';
91
- // Required PPE description
92
117
  const ppeDescriptions = {
93
118
  0: 'No PPE required (E ≤ 1.2 cal/cm²)',
94
119
  1: 'Arc-rated shirt, pants, safety glasses (4 cal/cm²)',
@@ -97,12 +122,16 @@ export function arcFlash(input) {
97
122
  4: 'Arc flash suit rated > 25 cal/cm² (40 cal/cm²)',
98
123
  };
99
124
  return {
100
- arcCurrent: roundTo(Ia, 2),
125
+ arcCurrent: roundTo(Ia, 3),
126
+ ...(lowVoltage ? { reducedArcCurrent: roundTo(0.85 * Ia, 3) } : {}),
127
+ normalizedIncidentEnergy: roundTo(En, 3),
101
128
  incidentEnergy: roundTo(E, 2),
102
129
  arcFlashBoundary: roundTo(AFB, 0),
130
+ distanceExponent: x,
103
131
  ppeCategory,
104
132
  hazardLevel,
105
133
  requiredPPE: ppeDescriptions[ppeCategory],
134
+ standard: 'IEEE 1584-2002',
106
135
  };
107
136
  }
108
137
  //# sourceMappingURL=arcFlash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arcFlash.js","sourceRoot":"","sources":["../../src/safety/arcFlash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arcFlash.js","sourceRoot":"","sources":["../../src/safety/arcFlash.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,32 @@
1
1
  import type { FallClearanceInput, FallClearanceResult } from './types.js';
2
2
  /**
3
- * Calculate fall clearance requirements for personal fall protection systems.
4
- * Implements ANSI Z359.1 and Z359.4 guidelines.
3
+ * Fall clearance for a personal fall arrest system on a fixed-length shock-absorbing lanyard.
5
4
  *
6
- * Total Fall Distance = Lanyard Length + Deceleration Distance + Harness Stretch + Worker Height
7
- * Free Space Required = Total Fall Distance + Safety Factor + Rescue Clearance - Anchor Height
8
- * Clearance Above Obstacle = Anchor Height - (Total Fall Distance + Safety Factor) - Obstacle Height
5
+ * Every height is measured from the worker's feet on the working surface, the way the anchor is
6
+ * located on site. After arrest the D-ring hangs lanyard + deceleration + harness stretch below the
7
+ * anchor and the feet a further D-ring height below that.
9
8
  *
10
- * ANSI Z359 Components:
11
- * - Lanyard/SRL length: typically 1.8m (6ft)
12
- * - Deceleration distance: max 1.07m (3.5ft) per OSHA
13
- * - Harness stretch: ~0.3m (1ft)
14
- * - D-ring to feet: ~1.5m (5ft)
15
- * - Rescue clearance: 0.9m (3ft) minimum per ANSI Z359.4
9
+ * @formula
10
+ * - Clearance below anchor = L + DD + HS + H_D + SF — the "18.5 ft" figure for a 6 ft lanyard
11
+ * - Total fall distance (feet travel) = L + DD + HS + H_D − A
12
+ * - Required clearance below the working surface = total fall distance + SF
13
+ * - Free fall = max(0, L + H_D − A) — the lanyard pays out before the absorber engages
14
+ * - With a working height W above the lower level: clearance above obstacle =
15
+ * W − obstacle height − required clearance, and the system is adequate when it is ≥ 0
16
16
  *
17
- * @param input - Fall clearance parameters
18
- * @returns Fall clearance results including adequacy assessment and warnings
19
- * @reference OSHA 29 CFR 1926.502(d)(16)(iv) — personal fall arrest systems must limit
20
- * deceleration distance to 3.5 ft (1.07 m)
21
- * @throws {RangeError} workerHeight ≤ 0, or any distance (lanyardLength,
22
- * decelerationDistance, harnessStretch, safetyFactor, rescueClearance,
23
- * obstacleHeight) is negative.
24
- * @remarks anchorHeight ≤ 0 is NOT rejected: it is a valid (dangerous) geometry
25
- * that the function reports as isAdequate=false with a warning.
17
+ * (L lanyard, DD deceleration distance, HS harness stretch/D-ring shift, H_D D-ring height above
18
+ * the feet, A anchor height above the feet, SF safety factor)
19
+ *
20
+ * @reference OSHA 29 CFR 1926.502(d)(16)(iii)–(iv) — free fall ≤ 1.8 m (6 ft), deceleration ≤ 1.07 m
21
+ * (3.5 ft), and the employee must not contact any lower level
22
+ * @reference ANSI/ASSP Z359 fall-arrest clearance practice
23
+ * @validation Clearance below anchor for a 6 ft lanyard, 3.5 ft deceleration, 1 ft harness stretch,
24
+ * 5 ft D-ring height and 3 ft safety factor = 18.5 ft (the widely published manufacturer and
25
+ * ARTBA worked figure)
26
+ *
27
+ * @throws {RangeError} dRingHeight ≤ 0, or lanyardLength, decelerationDistance, harnessStretch,
28
+ * safetyFactor, workingHeight or obstacleHeight is negative
29
+ * @remarks anchorAboveFeet may be negative (an anchor below the feet); the free-fall warning reports it.
26
30
  */
27
31
  export declare function fallClearance(input: FallClearanceInput): FallClearanceResult;
28
32
  //# sourceMappingURL=fallClearance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fallClearance.d.ts","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAqG5E"}
1
+ {"version":3,"file":"fallClearance.d.ts","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAO1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA+C5E"}
@@ -1,109 +1,67 @@
1
1
  import { roundTo } from '../utils.js';
2
+ /** OSHA 29 CFR 1926.502(d)(16)(iii) — a personal fall arrest system must limit free fall to 6 ft. */
3
+ const MAX_FREE_FALL = 6 * 0.3048; // m — the rule is written in feet; 1.8 m is its rounded metric
4
+ /** OSHA 29 CFR 1926.502(d)(16)(iv) — deceleration distance must not exceed 3.5 ft. */
5
+ const MAX_DECELERATION = 3.5 * 0.3048; // m
2
6
  /**
3
- * Calculate fall clearance requirements for personal fall protection systems.
4
- * Implements ANSI Z359.1 and Z359.4 guidelines.
7
+ * Fall clearance for a personal fall arrest system on a fixed-length shock-absorbing lanyard.
5
8
  *
6
- * Total Fall Distance = Lanyard Length + Deceleration Distance + Harness Stretch + Worker Height
7
- * Free Space Required = Total Fall Distance + Safety Factor + Rescue Clearance - Anchor Height
8
- * Clearance Above Obstacle = Anchor Height - (Total Fall Distance + Safety Factor) - Obstacle Height
9
+ * Every height is measured from the worker's feet on the working surface, the way the anchor is
10
+ * located on site. After arrest the D-ring hangs lanyard + deceleration + harness stretch below the
11
+ * anchor and the feet a further D-ring height below that.
9
12
  *
10
- * ANSI Z359 Components:
11
- * - Lanyard/SRL length: typically 1.8m (6ft)
12
- * - Deceleration distance: max 1.07m (3.5ft) per OSHA
13
- * - Harness stretch: ~0.3m (1ft)
14
- * - D-ring to feet: ~1.5m (5ft)
15
- * - Rescue clearance: 0.9m (3ft) minimum per ANSI Z359.4
13
+ * @formula
14
+ * - Clearance below anchor = L + DD + HS + H_D + SF — the "18.5 ft" figure for a 6 ft lanyard
15
+ * - Total fall distance (feet travel) = L + DD + HS + H_D − A
16
+ * - Required clearance below the working surface = total fall distance + SF
17
+ * - Free fall = max(0, L + H_D − A) — the lanyard pays out before the absorber engages
18
+ * - With a working height W above the lower level: clearance above obstacle =
19
+ * W − obstacle height − required clearance, and the system is adequate when it is ≥ 0
16
20
  *
17
- * @param input - Fall clearance parameters
18
- * @returns Fall clearance results including adequacy assessment and warnings
19
- * @reference OSHA 29 CFR 1926.502(d)(16)(iv) — personal fall arrest systems must limit
20
- * deceleration distance to 3.5 ft (1.07 m)
21
- * @throws {RangeError} workerHeight ≤ 0, or any distance (lanyardLength,
22
- * decelerationDistance, harnessStretch, safetyFactor, rescueClearance,
23
- * obstacleHeight) is negative.
24
- * @remarks anchorHeight ≤ 0 is NOT rejected: it is a valid (dangerous) geometry
25
- * that the function reports as isAdequate=false with a warning.
21
+ * (L lanyard, DD deceleration distance, HS harness stretch/D-ring shift, H_D D-ring height above
22
+ * the feet, A anchor height above the feet, SF safety factor)
23
+ *
24
+ * @reference OSHA 29 CFR 1926.502(d)(16)(iii)–(iv) — free fall ≤ 1.8 m (6 ft), deceleration ≤ 1.07 m
25
+ * (3.5 ft), and the employee must not contact any lower level
26
+ * @reference ANSI/ASSP Z359 fall-arrest clearance practice
27
+ * @validation Clearance below anchor for a 6 ft lanyard, 3.5 ft deceleration, 1 ft harness stretch,
28
+ * 5 ft D-ring height and 3 ft safety factor = 18.5 ft (the widely published manufacturer and
29
+ * ARTBA worked figure)
30
+ *
31
+ * @throws {RangeError} dRingHeight ≤ 0, or lanyardLength, decelerationDistance, harnessStretch,
32
+ * safetyFactor, workingHeight or obstacleHeight is negative
33
+ * @remarks anchorAboveFeet may be negative (an anchor below the feet); the free-fall warning reports it.
26
34
  */
27
35
  export function fallClearance(input) {
28
- const { lanyardLength, decelerationDistance, harnessStretch, workerHeight, safetyFactor, anchorHeight, rescueClearance = 0.9, // ANSI Z359.4 default minimum
29
- obstacleHeight = 0, // Ground level default
30
- } = input;
31
- if (workerHeight <= 0) {
32
- throw new RangeError('workerHeight must be greater than 0');
33
- }
34
- if (lanyardLength < 0 ||
35
- decelerationDistance < 0 ||
36
- harnessStretch < 0 ||
37
- safetyFactor < 0 ||
38
- rescueClearance < 0 ||
39
- obstacleHeight < 0) {
40
- throw new RangeError('lanyardLength, decelerationDistance, harnessStretch, safetyFactor, rescueClearance, and obstacleHeight must not be negative');
36
+ const { lanyardLength: L, decelerationDistance: DD, harnessStretch: HS, dRingHeight: HD, anchorAboveFeet: A, safetyFactor: SF, workingHeight, obstacleHeight = 0, } = input;
37
+ if (HD <= 0)
38
+ throw new RangeError('dRingHeight must be greater than 0');
39
+ if (L < 0 || DD < 0 || HS < 0 || SF < 0 || obstacleHeight < 0 || (workingHeight !== undefined && workingHeight < 0)) {
40
+ throw new RangeError('lanyardLength, decelerationDistance, harnessStretch, safetyFactor, workingHeight and obstacleHeight must not be negative');
41
41
  }
42
+ const clearanceBelowAnchor = L + DD + HS + HD + SF;
43
+ const totalFallDistance = L + DD + HS + HD - A;
44
+ const requiredClearance = totalFallDistance + SF;
45
+ const freeFallDistance = Math.max(0, L + HD - A);
46
+ // Judged on the reported (rounded) margin so the verdict and the number shown next to it agree.
47
+ const clearanceAboveObstacle = workingHeight === undefined ? null : roundTo(workingHeight - obstacleHeight - requiredClearance, 3);
48
+ const isAdequate = clearanceAboveObstacle === null ? null : clearanceAboveObstacle >= 0;
42
49
  const warnings = [];
43
- // Validate inputs and generate warnings
44
- if (lanyardLength > 1.8) {
45
- warnings.push('Lanyard exceeds standard 1.8m (6ft) length');
46
- }
47
- if (decelerationDistance > 1.07) {
48
- warnings.push('Deceleration distance exceeds OSHA maximum of 1.07m (3.5ft)');
49
- }
50
- if (workerHeight < 1.2 || workerHeight > 2.0) {
51
- warnings.push('Worker height outside typical range (1.2-2.0m)');
52
- }
53
- if (safetyFactor < 0.6) {
54
- warnings.push('Safety factor below recommended minimum (0.6m/2ft)');
55
- }
56
- if (rescueClearance < 0.9) {
57
- warnings.push('Rescue clearance below ANSI Z359.4 minimum (0.9m/3ft)');
58
- }
59
- // Calculate total fall distance (before arrest)
60
- // This is the distance worker falls before deceleration device fully activates
61
- const totalFallDistance = lanyardLength +
62
- decelerationDistance +
63
- harnessStretch +
64
- workerHeight;
65
- // Calculate minimum height requirement
66
- // This is the minimum anchor height needed to prevent ground contact
67
- const minimumHeight = totalFallDistance + safetyFactor - anchorHeight;
68
- // Calculate total free space required below anchor
69
- // Includes rescue clearance for post-fall positioning
70
- const freeSpaceRequired = totalFallDistance + safetyFactor + rescueClearance;
71
- // Calculate clearance above obstacle
72
- // Positive = safe clearance exists
73
- // Negative = worker would contact obstacle
74
- const workerLowestPoint = anchorHeight - (totalFallDistance + safetyFactor);
75
- const clearanceAboveObstacle = workerLowestPoint - obstacleHeight;
76
- // Determine if the system is adequate
77
- let isAdequate = null;
78
- if (anchorHeight <= 0) {
79
- // Anchor at or below feet level - extremely dangerous
80
- isAdequate = false;
81
- warnings.push('Anchor at or below foot level - fall protection inadequate');
82
- }
83
- else if (clearanceAboveObstacle < 0) {
84
- // Worker would contact obstacle
85
- isAdequate = false;
86
- warnings.push(`Insufficient clearance: worker would be ${Math.abs(clearanceAboveObstacle).toFixed(2)}m below obstacle level`);
87
- }
88
- else if (clearanceAboveObstacle < rescueClearance) {
89
- // Clearance exists but rescue may be difficult
90
- isAdequate = true;
91
- warnings.push('Limited clearance for rescue operations');
50
+ if (freeFallDistance > MAX_FREE_FALL) {
51
+ warnings.push(`Free fall of ${freeFallDistance.toFixed(2)} m exceeds the OSHA limit of 1.8 m (6 ft) — raise the anchor or shorten the lanyard`);
92
52
  }
93
- else {
94
- // Adequate clearance for fall arrest and rescue
95
- isAdequate = true;
53
+ if (DD > MAX_DECELERATION) {
54
+ warnings.push('Deceleration distance exceeds the OSHA limit of 1.07 m (3.5 ft)');
96
55
  }
97
- // Additional warning for marginal situations
98
- if (isAdequate && clearanceAboveObstacle < 1.5) {
99
- warnings.push('Consider increasing anchor height for additional safety margin');
56
+ if (clearanceAboveObstacle !== null && clearanceAboveObstacle < 0) {
57
+ warnings.push(`Insufficient clearance: ${Math.abs(clearanceAboveObstacle).toFixed(2)} m short of the required clearance above the obstacle`);
100
58
  }
101
59
  return {
102
60
  totalFallDistance: roundTo(totalFallDistance, 3),
103
- minimumHeight: roundTo(minimumHeight, 3),
104
- rescueClearance,
105
- freeSpaceRequired: roundTo(freeSpaceRequired, 3),
106
- clearanceAboveObstacle: roundTo(clearanceAboveObstacle, 3),
61
+ requiredClearance: roundTo(requiredClearance, 3),
62
+ clearanceBelowAnchor: roundTo(clearanceBelowAnchor, 3),
63
+ freeFallDistance: roundTo(freeFallDistance, 3),
64
+ clearanceAboveObstacle,
107
65
  isAdequate,
108
66
  warnings,
109
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fallClearance.js","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallClearance.js","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,qGAAqG;AACrG,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,+DAA+D;AACjG,sFAAsF;AACtF,MAAM,gBAAgB,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,aAAa,EAAE,CAAC,EAChB,oBAAoB,EAAE,EAAE,EACxB,cAAc,EAAE,EAAE,EAClB,WAAW,EAAE,EAAE,EACf,eAAe,EAAE,CAAC,EAClB,YAAY,EAAE,EAAE,EAChB,aAAa,EACb,cAAc,GAAG,CAAC,GACnB,GAAG,KAAK,CAAC;IAEV,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,UAAU,CAAC,0HAA0H,CAAC,CAAC;IACnJ,CAAC;IAED,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,EAAE,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjD,gGAAgG;IAChG,MAAM,sBAAsB,GAC1B,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,cAAc,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACtG,MAAM,UAAU,GAAG,sBAAsB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,gBAAgB,GAAG,aAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC;IAClJ,CAAC;IACD,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC;IAC/I,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACtD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,sBAAsB;QACtB,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -12,5 +12,5 @@ export { ergonomicRisk } from './ergonomicRisk.js';
12
12
  export { arcFlash } from './arcFlash.js';
13
13
  export { confinedSpace } from './confinedSpace.js';
14
14
  export { lel } from './lel.js';
15
- export type { VentilationActivityLevel, SpaceType, VentilationRateInput, VentilationRateResult, FallClearanceInput, FallClearanceResult, CouplingQuality, WorkDuration, NioshInput, NioshResult, CascadeStep, NoiseExposure, NoiseExposureInput, NoiseExposureContribution, NoiseExposureResult, WorkloadIntensity, WbgtInput, WbgtResult, ToolExposure, HavsInput, HavsResult, RespiratorType, RespiratorInput, RespiratorResult, LadderAngleInput, LadderAngleResult, IlluminanceInput, IlluminanceResult, ThermalComfortInput, ThermalComfortResult, RebaInput, RebaResult, ArcFlashInput, ArcFlashResult, ConfinedSpaceInput, ConfinedSpaceResult, GasComponent, LelInput, LelResult, } from './types.js';
15
+ export type { VentilationActivityLevel, SpaceType, VentilationRateInput, VentilationRateResult, FallClearanceInput, FallClearanceResult, CouplingQuality, WorkDuration, NioshInput, NioshResult, CascadeStep, NoiseExposure, NoiseExposureInput, NoiseExposureContribution, NoiseExposureResult, WorkloadIntensity, WbgtInput, WbgtResult, ToolExposure, HavsInput, HavsResult, RespiratorType, RespiratorInput, RespiratorResult, LadderAngleInput, LadderAngleResult, IlluminanceInput, IlluminanceResult, ThermalComfortInput, ThermalComfortResult, RebaInput, RebaResult, ArcFlashEquipment, ArcFlashInput, ArcFlashResult, ConfinedSpaceInput, ConfinedSpaceResult, GasComponent, LelInput, LelResult, } from './types.js';
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,YAAY,EAEV,wBAAwB,EACxB,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EAEnB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EAEX,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EAEnB,iBAAiB,EACjB,SAAS,EACT,UAAU,EAEV,YAAY,EACZ,SAAS,EACT,UAAU,EAEV,cAAc,EACd,eAAe,EACf,gBAAgB,EAEhB,gBAAgB,EAChB,iBAAiB,EAEjB,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EACnB,oBAAoB,EAEpB,SAAS,EACT,UAAU,EAEV,aAAa,EACb,cAAc,EAEd,kBAAkB,EAClB,mBAAmB,EAEnB,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,YAAY,EAEV,wBAAwB,EACxB,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EAEnB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EAEX,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EAEnB,iBAAiB,EACjB,SAAS,EACT,UAAU,EAEV,YAAY,EACZ,SAAS,EACT,UAAU,EAEV,cAAc,EACd,eAAe,EACf,gBAAgB,EAEhB,gBAAgB,EAChB,iBAAiB,EAEjB,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EACnB,oBAAoB,EAEpB,SAAS,EACT,UAAU,EAEV,iBAAiB,EACjB,aAAa,EACb,cAAc,EAEd,kBAAkB,EAClB,mBAAmB,EAEnB,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -11,8 +11,9 @@ export declare const LADDER_COMPLIANT_ANGLE_RANGE: {
11
11
  /**
12
12
  * Calculate ladder setup angle and OSHA compliance.
13
13
  *
14
- * OSHA 4:1 Rule: For every 4 feet of height, the base should be 1 foot out.
15
- * This gives an ideal angle of atan(4/1) ≈ 75.96° (commonly cited as 75.5°).
14
+ * OSHA 4:1 rule, 29 CFR 1926.1053(b)(5)(i): the foot of the ladder sits one quarter of its working
15
+ * length (foot to top support) out from the support, so cos θ = 1/4 and θ ≈ 75.5°.
16
+ * (A quarter of the *height* instead gives atan(4) ≈ 75.96°.)
16
17
  * Compliant range: see {@link LADDER_COMPLIANT_ANGLE_RANGE} (70°–80°).
17
18
  *
18
19
  * Provide ladderLength and either height or baseDistance.
@@ -1 +1 @@
1
- {"version":3,"file":"ladderAngle.d.ts","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKtE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;CAAgC,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAoFtE"}
1
+ {"version":3,"file":"ladderAngle.d.ts","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKtE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;CAAgC,CAAC;AAE1E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAsFtE"}
@@ -10,8 +10,9 @@ export const LADDER_COMPLIANT_ANGLE_RANGE = { min: 70, max: 80 };
10
10
  /**
11
11
  * Calculate ladder setup angle and OSHA compliance.
12
12
  *
13
- * OSHA 4:1 Rule: For every 4 feet of height, the base should be 1 foot out.
14
- * This gives an ideal angle of atan(4/1) ≈ 75.96° (commonly cited as 75.5°).
13
+ * OSHA 4:1 rule, 29 CFR 1926.1053(b)(5)(i): the foot of the ladder sits one quarter of its working
14
+ * length (foot to top support) out from the support, so cos θ = 1/4 and θ ≈ 75.5°.
15
+ * (A quarter of the *height* instead gives atan(4) ≈ 75.96°.)
15
16
  * Compliant range: see {@link LADDER_COMPLIANT_ANGLE_RANGE} (70°–80°).
16
17
  *
17
18
  * Provide ladderLength and either height or baseDistance.
@@ -75,8 +76,10 @@ export function ladderAngle(input) {
75
76
  else if (height !== undefined && height > 0) {
76
77
  angle = 90;
77
78
  }
78
- // Ideal base distance for OSHA 4:1 at given height
79
- const idealBaseDistance = height !== undefined ? height / 4 : 0;
79
+ // Ideal base distance: one quarter of the working length, OSHA 29 CFR 1926.1053(b)(5)(i). This is
80
+ // the same rule as the 75.5° default above (cos 75.5° ≈ 1/4); a quarter of the *height* would be
81
+ // atan(4) ≈ 75.96°, a different ladder.
82
+ const idealBaseDistance = ladderLength / 4;
80
83
  // Reach height = wall contact height + ~1m (3 feet) above contact point
81
84
  const reachHeight = (height ?? 0) + 1.0;
82
85
  // OSHA compliance: see LADDER_COMPLIANT_ANGLE_RANGE
@@ -1 +1 @@
1
- {"version":3,"file":"ladderAngle.js","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ladderAngle.js","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,20 @@ export interface FallClearanceInput {
4
4
  lanyardLength: number;
5
5
  decelerationDistance: number;
6
6
  harnessStretch: number;
7
- workerHeight: number;
7
+ dRingHeight: number;
8
+ anchorAboveFeet: number;
8
9
  safetyFactor: number;
9
- anchorHeight: number;
10
- rescueClearance?: number;
10
+ /** m — working surface height above the lower level. Without it the adequacy verdict is `null`. */
11
+ workingHeight?: number;
11
12
  obstacleHeight?: number;
12
13
  }
13
14
  export interface FallClearanceResult {
14
15
  totalFallDistance: number;
15
- minimumHeight: number;
16
- rescueClearance: number;
17
- freeSpaceRequired: number;
18
- clearanceAboveObstacle: number;
16
+ requiredClearance: number;
17
+ clearanceBelowAnchor: number;
18
+ freeFallDistance: number;
19
+ /** m — margin above the obstacle after the required clearance; `null` without `workingHeight`. */
20
+ clearanceAboveObstacle: number | null;
19
21
  isAdequate: boolean | null;
20
22
  warnings: string[];
21
23
  }
@@ -234,21 +236,30 @@ export interface RebaResult {
234
236
  /**
235
237
  * Arc Flash Types — IEEE 1584 / NFPA 70E
236
238
  */
239
+ /** IEEE 1584-2002 Table 4 equipment class. `open` and `cable` have no enclosure (open configuration). */
240
+ export type ArcFlashEquipment = 'open' | 'switchgear' | 'mcc' | 'panel' | 'cable';
237
241
  export interface ArcFlashInput {
238
242
  voltage: number;
239
243
  boltedFaultCurrent: number;
240
244
  workingDistance: number;
241
245
  faultClearingTime: number;
242
246
  gapBetweenConductors: number;
243
- enclosureType: 'open' | 'box' | 'mcc' | 'panel' | 'cable';
247
+ equipment: ArcFlashEquipment;
248
+ /** `ungrounded` covers high-resistance grounded systems (K2 = 0); `grounded` is solidly grounded (K2 = −0.113). */
249
+ grounding: 'grounded' | 'ungrounded';
244
250
  }
245
251
  export interface ArcFlashResult {
246
252
  arcCurrent: number;
253
+ /** 85 % of the arcing current, V ≤ 1 kV only — IEEE 1584-2002 asks for a second evaluation at it. */
254
+ reducedArcCurrent?: number;
255
+ normalizedIncidentEnergy: number;
247
256
  incidentEnergy: number;
248
257
  arcFlashBoundary: number;
258
+ distanceExponent: number;
249
259
  ppeCategory: 0 | 1 | 2 | 3 | 4;
250
260
  hazardLevel: 'safe' | 'danger' | 'extreme';
251
261
  requiredPPE: string;
262
+ standard: 'IEEE 1584-2002';
252
263
  }
253
264
  /**
254
265
  * Confined Space Atmospheric Assessment Types — OSHA 29 CFR 1910.146
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "formulab",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Manufacturing & Engineering calculation formulas library - 203 industrial calculations across 15 domains for OEE, Cpk, SPC, FMEA, Nelson Rules, metal weight, CNC machining, GD&T, battery, environmental, pipe flow, logistics, IE time study, and more",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",