formulab 0.13.6 → 0.13.8
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 +21 -0
- package/dist/metal/index.d.ts +1 -1
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.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/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
|
@@ -16,11 +16,27 @@ import { roundTo } from '../utils.js';
|
|
|
16
16
|
*
|
|
17
17
|
* @param input - Fall clearance parameters
|
|
18
18
|
* @returns Fall clearance results including adequacy assessment and warnings
|
|
19
|
+
* @throws {RangeError} workerHeight ≤ 0, or any distance (lanyardLength,
|
|
20
|
+
* decelerationDistance, harnessStretch, safetyFactor, rescueClearance,
|
|
21
|
+
* obstacleHeight) is negative.
|
|
22
|
+
* @remarks anchorHeight ≤ 0 is NOT rejected: it is a valid (dangerous) geometry
|
|
23
|
+
* that the function reports as isAdequate=false with a warning.
|
|
19
24
|
*/
|
|
20
25
|
export function fallClearance(input) {
|
|
21
26
|
const { lanyardLength, decelerationDistance, harnessStretch, workerHeight, safetyFactor, anchorHeight, rescueClearance = 0.9, // ANSI Z359.4 default minimum
|
|
22
27
|
obstacleHeight = 0, // Ground level default
|
|
23
28
|
} = input;
|
|
29
|
+
if (workerHeight <= 0) {
|
|
30
|
+
throw new RangeError('workerHeight must be greater than 0');
|
|
31
|
+
}
|
|
32
|
+
if (lanyardLength < 0 ||
|
|
33
|
+
decelerationDistance < 0 ||
|
|
34
|
+
harnessStretch < 0 ||
|
|
35
|
+
safetyFactor < 0 ||
|
|
36
|
+
rescueClearance < 0 ||
|
|
37
|
+
obstacleHeight < 0) {
|
|
38
|
+
throw new RangeError('lanyardLength, decelerationDistance, harnessStretch, safetyFactor, rescueClearance, and obstacleHeight must not be negative');
|
|
39
|
+
}
|
|
24
40
|
const warnings = [];
|
|
25
41
|
// Validate inputs and generate warnings
|
|
26
42
|
if (lanyardLength > 1.8) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallClearance.js","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC
|
|
1
|
+
{"version":3,"file":"fallClearance.js","sourceRoot":"","sources":["../../src/safety/fallClearance.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,9 @@ import type { HavsInput, HavsResult } from './types.js';
|
|
|
11
11
|
*
|
|
12
12
|
* @param input - HAVS input parameters with tool exposures
|
|
13
13
|
* @returns HAVS results including A(8), status, and exposure metrics
|
|
14
|
+
* @throws {RangeError} a tool has a negative vibrationMagnitude or exposureTime.
|
|
15
|
+
* @remarks Zero-valued tool entries are treated as unused and filtered out; an empty
|
|
16
|
+
* (or all-zero) tool list is a valid input that reports no exposure.
|
|
14
17
|
*/
|
|
15
18
|
export declare function havsCalculate(input: HavsInput): HavsResult;
|
|
16
19
|
//# sourceMappingURL=havsCalculate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"havsCalculate.d.ts","sourceRoot":"","sources":["../../src/safety/havsCalculate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAyEtE
|
|
1
|
+
{"version":3,"file":"havsCalculate.d.ts","sourceRoot":"","sources":["../../src/safety/havsCalculate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAyEtE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAwC1D"}
|
|
@@ -72,9 +72,17 @@ function calculateMaxDailyExposure(tools) {
|
|
|
72
72
|
*
|
|
73
73
|
* @param input - HAVS input parameters with tool exposures
|
|
74
74
|
* @returns HAVS results including A(8), status, and exposure metrics
|
|
75
|
+
* @throws {RangeError} a tool has a negative vibrationMagnitude or exposureTime.
|
|
76
|
+
* @remarks Zero-valued tool entries are treated as unused and filtered out; an empty
|
|
77
|
+
* (or all-zero) tool list is a valid input that reports no exposure.
|
|
75
78
|
*/
|
|
76
79
|
export function havsCalculate(input) {
|
|
77
80
|
const { tools } = input;
|
|
81
|
+
for (const t of tools) {
|
|
82
|
+
if (t.vibrationMagnitude < 0 || t.exposureTime < 0) {
|
|
83
|
+
throw new RangeError('tool vibrationMagnitude and exposureTime must not be negative');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
78
86
|
// Filter out empty entries
|
|
79
87
|
const validTools = tools.filter(t => t.vibrationMagnitude > 0 && t.exposureTime > 0);
|
|
80
88
|
// Calculate partial exposures for each tool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"havsCalculate.js","sourceRoot":"","sources":["../../src/safety/havsCalculate.ts"],"names":[],"mappings":"AAEA,yCAAyC;AACzC,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,wCAAwC;AACxC,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,gCAAgC;AAChC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEb;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,IAAkB;IAClD,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAClD,IAAI,kBAAkB,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,gBAA0B;IAClD,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,EAAU;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,EAAU;IACjC,IAAI,EAAE,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,EAAE,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,KAAqB;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE9B,8DAA8D;IAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,YAAY,EAC9E,CAAC,CACF,CAAC;IACF,MAAM,aAAa,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAEpD,IAAI,aAAa,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,+BAA+B;IAC/B,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC;AAC1C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"havsCalculate.js","sourceRoot":"","sources":["../../src/safety/havsCalculate.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ import type { IlluminanceInput, IlluminanceResult } from './types.js';
|
|
|
8
8
|
*
|
|
9
9
|
* @param input - Room dimensions and lighting parameters
|
|
10
10
|
* @returns Number of fixtures needed and lighting metrics
|
|
11
|
+
* @throws {RangeError} roomLength, roomWidth, lumensPerLuminaire, or targetLux ≤ 0,
|
|
12
|
+
* or the mounting height above the workplane (luminaireHeight − workplaneHeight) ≤ 0.
|
|
11
13
|
*/
|
|
12
14
|
export declare function illuminance(input: IlluminanceInput): IlluminanceResult;
|
|
13
15
|
//# sourceMappingURL=illuminance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"illuminance.d.ts","sourceRoot":"","sources":["../../src/safety/illuminance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgCtE
|
|
1
|
+
{"version":3,"file":"illuminance.d.ts","sourceRoot":"","sources":["../../src/safety/illuminance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgCtE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAuDtE"}
|
|
@@ -37,30 +37,18 @@ function lookupCU(roomIndex) {
|
|
|
37
37
|
*
|
|
38
38
|
* @param input - Room dimensions and lighting parameters
|
|
39
39
|
* @returns Number of fixtures needed and lighting metrics
|
|
40
|
+
* @throws {RangeError} roomLength, roomWidth, lumensPerLuminaire, or targetLux ≤ 0,
|
|
41
|
+
* or the mounting height above the workplane (luminaireHeight − workplaneHeight) ≤ 0.
|
|
40
42
|
*/
|
|
41
43
|
export function illuminance(input) {
|
|
42
44
|
const { roomLength, roomWidth, luminaireHeight, workplaneHeight = 0.85, targetLux, lumensPerLuminaire, wattsPerLuminaire, cu: cuOverride, mf = 0.8, } = input;
|
|
43
45
|
if (roomLength <= 0 || roomWidth <= 0 || lumensPerLuminaire <= 0 || targetLux <= 0) {
|
|
44
|
-
|
|
45
|
-
fixturesNeeded: 0,
|
|
46
|
-
actualLux: 0,
|
|
47
|
-
roomIndex: 0,
|
|
48
|
-
totalLumens: 0,
|
|
49
|
-
powerDensity: null,
|
|
50
|
-
recommendedSpacing: 0,
|
|
51
|
-
};
|
|
46
|
+
throw new RangeError('roomLength, roomWidth, lumensPerLuminaire, and targetLux must all be greater than 0');
|
|
52
47
|
}
|
|
53
48
|
const area = roomLength * roomWidth;
|
|
54
49
|
const hm = luminaireHeight - workplaneHeight;
|
|
55
50
|
if (hm <= 0) {
|
|
56
|
-
|
|
57
|
-
fixturesNeeded: 0,
|
|
58
|
-
actualLux: 0,
|
|
59
|
-
roomIndex: 0,
|
|
60
|
-
totalLumens: 0,
|
|
61
|
-
powerDensity: null,
|
|
62
|
-
recommendedSpacing: 0,
|
|
63
|
-
};
|
|
51
|
+
throw new RangeError('luminaireHeight must be greater than workplaneHeight');
|
|
64
52
|
}
|
|
65
53
|
// Room Index (Cavity Ratio)
|
|
66
54
|
const roomIndex = (roomLength * roomWidth) / (hm * (roomLength + roomWidth));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"illuminance.js","sourceRoot":"","sources":["../../src/safety/illuminance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,QAAQ,GAAuB;IACnC,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,SAAS,QAAQ,CAAC,SAAiB;IACjC,IAAI,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1C,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"illuminance.js","sourceRoot":"","sources":["../../src/safety/illuminance.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ import type { LadderAngleInput, LadderAngleResult } from './types.js';
|
|
|
11
11
|
*
|
|
12
12
|
* @param input - Ladder dimensions (2 of 3 required)
|
|
13
13
|
* @returns Angle, compliance status, and warnings
|
|
14
|
+
* @throws {RangeError} a provided height/baseDistance is negative, or ladderLength ≤ 0
|
|
15
|
+
* when it is used as a given (i.e. height and baseDistance are not both supplied).
|
|
14
16
|
*/
|
|
15
17
|
export declare function ladderAngle(input: LadderAngleInput): LadderAngleResult;
|
|
16
18
|
//# sourceMappingURL=ladderAngle.d.ts.map
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAmFtE"}
|
|
@@ -13,10 +13,24 @@ const RAD = Math.PI / 180;
|
|
|
13
13
|
*
|
|
14
14
|
* @param input - Ladder dimensions (2 of 3 required)
|
|
15
15
|
* @returns Angle, compliance status, and warnings
|
|
16
|
+
* @throws {RangeError} a provided height/baseDistance is negative, or ladderLength ≤ 0
|
|
17
|
+
* when it is used as a given (i.e. height and baseDistance are not both supplied).
|
|
16
18
|
*/
|
|
17
19
|
export function ladderAngle(input) {
|
|
18
20
|
let { ladderLength, height, baseDistance } = input;
|
|
19
21
|
const warnings = [];
|
|
22
|
+
if (height !== undefined && height < 0) {
|
|
23
|
+
throw new RangeError('height must not be negative');
|
|
24
|
+
}
|
|
25
|
+
if (baseDistance !== undefined && baseDistance < 0) {
|
|
26
|
+
throw new RangeError('baseDistance must not be negative');
|
|
27
|
+
}
|
|
28
|
+
// When both height and baseDistance are given, ladderLength is recalculated and
|
|
29
|
+
// its input value (often a 0 placeholder) is ignored. Otherwise it is a given.
|
|
30
|
+
const bothGiven = height !== undefined && baseDistance !== undefined;
|
|
31
|
+
if (!bothGiven && ladderLength <= 0) {
|
|
32
|
+
throw new RangeError('ladderLength must be greater than 0');
|
|
33
|
+
}
|
|
20
34
|
// Resolve the third dimension from the other two
|
|
21
35
|
if (height !== undefined && baseDistance !== undefined) {
|
|
22
36
|
// Both given: recalculate ladder length
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladderAngle.js","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAE1B
|
|
1
|
+
{"version":3,"file":"ladderAngle.js","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"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"}
|
package/dist/safety/lel.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ import type { LelInput, LelResult } from './types.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @reference Le Chatelier, H. (1891). Estimation of Firedamp by Flammability Limits.
|
|
11
11
|
* @reference NFPA 69 — Standard on Explosion Prevention Systems
|
|
12
|
+
*
|
|
13
|
+
* @throws {RangeError} a gas component has a negative concentration or a non-positive LEL.
|
|
14
|
+
* @remarks Status thresholds follow the industry %LEL convention (matching
|
|
15
|
+
* {@link confinedSpace}): safe < 10%, caution 10–25%, danger > 25%. An empty
|
|
16
|
+
* gas list (no flammable gas present) is a valid input that reports 'safe'.
|
|
12
17
|
*/
|
|
13
18
|
export declare function lel(input: LelInput): LelResult;
|
|
14
19
|
//# sourceMappingURL=lel.d.ts.map
|
package/dist/safety/lel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lel.d.ts","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"lel.d.ts","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAmE9C"}
|
package/dist/safety/lel.js
CHANGED
|
@@ -9,9 +9,22 @@ import { roundTo } from '../utils.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @reference Le Chatelier, H. (1891). Estimation of Firedamp by Flammability Limits.
|
|
11
11
|
* @reference NFPA 69 — Standard on Explosion Prevention Systems
|
|
12
|
+
*
|
|
13
|
+
* @throws {RangeError} a gas component has a negative concentration or a non-positive LEL.
|
|
14
|
+
* @remarks Status thresholds follow the industry %LEL convention (matching
|
|
15
|
+
* {@link confinedSpace}): safe < 10%, caution 10–25%, danger > 25%. An empty
|
|
16
|
+
* gas list (no flammable gas present) is a valid input that reports 'safe'.
|
|
12
17
|
*/
|
|
13
18
|
export function lel(input) {
|
|
14
19
|
const { gases } = input;
|
|
20
|
+
for (const gas of gases) {
|
|
21
|
+
if (gas.concentration < 0) {
|
|
22
|
+
throw new RangeError(`gas "${gas.name}" concentration must not be negative`);
|
|
23
|
+
}
|
|
24
|
+
if (gas.lel <= 0) {
|
|
25
|
+
throw new RangeError(`gas "${gas.name}" LEL must be greater than 0`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
15
28
|
const totalConcentration = gases.reduce((s, g) => s + g.concentration, 0);
|
|
16
29
|
if (totalConcentration === 0 || gases.length === 0) {
|
|
17
30
|
return {
|
|
@@ -28,9 +41,8 @@ export function lel(input) {
|
|
|
28
41
|
const contributions = [];
|
|
29
42
|
for (const gas of gases) {
|
|
30
43
|
const yi = gas.concentration / totalConcentration;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
44
|
+
// gas.lel > 0 is guaranteed by input validation above
|
|
45
|
+
sumFractionOverLel += yi / gas.lel;
|
|
34
46
|
contributions.push({
|
|
35
47
|
name: gas.name,
|
|
36
48
|
fraction: roundTo(yi * 100, 2),
|
|
@@ -43,12 +55,13 @@ export function lel(input) {
|
|
|
43
55
|
const safetyMargin = mixtureLel > 0
|
|
44
56
|
? mixtureLel - totalConcentration
|
|
45
57
|
: 0;
|
|
46
|
-
// Status
|
|
58
|
+
// Status — industry %LEL convention (matches confinedSpace):
|
|
59
|
+
// safe < 10%, caution 10–25%, danger > 25%
|
|
47
60
|
let status;
|
|
48
|
-
if (percentOfLel <
|
|
61
|
+
if (percentOfLel < 10) {
|
|
49
62
|
status = 'safe';
|
|
50
63
|
}
|
|
51
|
-
else if (percentOfLel
|
|
64
|
+
else if (percentOfLel <= 25) {
|
|
52
65
|
status = 'caution';
|
|
53
66
|
}
|
|
54
67
|
else {
|
package/dist/safety/lel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lel.js","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC
|
|
1
|
+
{"version":3,"file":"lel.js","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,11 @@ import type { NioshInput, NioshResult } from './types.js';
|
|
|
25
25
|
*
|
|
26
26
|
* @param input - NIOSH lifting parameters
|
|
27
27
|
* @returns NIOSH results including RWL, LI, multipliers, and risk level
|
|
28
|
+
* @throws {RangeError} any distance, angle, frequency, or loadWeight is negative.
|
|
29
|
+
* @remarks Distances below the equation's domain (H, D < 25 cm) are clamped per the
|
|
30
|
+
* NIOSH spec rather than rejected. When the frequency multiplier drives RWL to 0
|
|
31
|
+
* (sustained high-frequency lifting), liftingIndex is Infinity — an intentional
|
|
32
|
+
* sentinel meaning "no weight is acceptable for this task".
|
|
28
33
|
*/
|
|
29
34
|
export declare function nioshLifting(input: NioshInput): NioshResult;
|
|
30
35
|
//# sourceMappingURL=nioshLifting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nioshLifting.d.ts","sourceRoot":"","sources":["../../src/safety/nioshLifting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAoHpB
|
|
1
|
+
{"version":3,"file":"nioshLifting.d.ts","sourceRoot":"","sources":["../../src/safety/nioshLifting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAoHpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAuE3D"}
|
|
@@ -125,9 +125,22 @@ function getCouplingMultiplier(coupling, verticalDistance) {
|
|
|
125
125
|
*
|
|
126
126
|
* @param input - NIOSH lifting parameters
|
|
127
127
|
* @returns NIOSH results including RWL, LI, multipliers, and risk level
|
|
128
|
+
* @throws {RangeError} any distance, angle, frequency, or loadWeight is negative.
|
|
129
|
+
* @remarks Distances below the equation's domain (H, D < 25 cm) are clamped per the
|
|
130
|
+
* NIOSH spec rather than rejected. When the frequency multiplier drives RWL to 0
|
|
131
|
+
* (sustained high-frequency lifting), liftingIndex is Infinity — an intentional
|
|
132
|
+
* sentinel meaning "no weight is acceptable for this task".
|
|
128
133
|
*/
|
|
129
134
|
export function nioshLifting(input) {
|
|
130
135
|
const { horizontalDistance, verticalDistance, verticalTravel, asymmetryAngle, frequency, duration, coupling, loadWeight, } = input;
|
|
136
|
+
if (horizontalDistance < 0 ||
|
|
137
|
+
verticalDistance < 0 ||
|
|
138
|
+
verticalTravel < 0 ||
|
|
139
|
+
asymmetryAngle < 0 ||
|
|
140
|
+
frequency < 0 ||
|
|
141
|
+
loadWeight < 0) {
|
|
142
|
+
throw new RangeError('distances, asymmetryAngle, frequency, and loadWeight must not be negative');
|
|
143
|
+
}
|
|
131
144
|
// Calculate multipliers
|
|
132
145
|
// HM: Horizontal Multiplier (25/H), max 1.0, H must be >= 25cm
|
|
133
146
|
const h = Math.max(horizontalDistance, 25);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nioshLifting.js","sourceRoot":"","sources":["../../src/safety/nioshLifting.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nioshLifting.js","sourceRoot":"","sources":["../../src/safety/nioshLifting.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,9 @@ import type { NoiseExposureInput, NoiseExposureResult } from './types.js';
|
|
|
17
17
|
*
|
|
18
18
|
* @param input - Noise exposure input with array of exposures
|
|
19
19
|
* @returns Noise exposure result with dose, TWA, and status
|
|
20
|
+
* @throws {RangeError} an exposure entry has a negative duration.
|
|
21
|
+
* @remarks An empty exposure list (no significant noise) is a valid input that
|
|
22
|
+
* reports a compliant 0% dose.
|
|
20
23
|
*/
|
|
21
24
|
export declare function noiseExposure(input: NoiseExposureInput): NoiseExposureResult;
|
|
22
25
|
//# sourceMappingURL=noiseExposure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noiseExposure.d.ts","sourceRoot":"","sources":["../../src/safety/noiseExposure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkB1E
|
|
1
|
+
{"version":3,"file":"noiseExposure.d.ts","sourceRoot":"","sources":["../../src/safety/noiseExposure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkB1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAgD5E"}
|
|
@@ -31,9 +31,17 @@ function getAllowableTime(soundLevel) {
|
|
|
31
31
|
*
|
|
32
32
|
* @param input - Noise exposure input with array of exposures
|
|
33
33
|
* @returns Noise exposure result with dose, TWA, and status
|
|
34
|
+
* @throws {RangeError} an exposure entry has a negative duration.
|
|
35
|
+
* @remarks An empty exposure list (no significant noise) is a valid input that
|
|
36
|
+
* reports a compliant 0% dose.
|
|
34
37
|
*/
|
|
35
38
|
export function noiseExposure(input) {
|
|
36
39
|
const { exposures } = input;
|
|
40
|
+
for (const exposure of exposures) {
|
|
41
|
+
if (exposure.duration < 0) {
|
|
42
|
+
throw new RangeError('exposure duration must not be negative');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
37
45
|
// Calculate dose as sum of (Cn/Tn)
|
|
38
46
|
let doseSum = 0;
|
|
39
47
|
for (const exposure of exposures) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noiseExposure.js","sourceRoot":"","sources":["../../src/safety/noiseExposure.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,2DAA2D;IAC3D,4DAA4D;IAC5D,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"noiseExposure.js","sourceRoot":"","sources":["../../src/safety/noiseExposure.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,2DAA2D;IAC3D,4DAA4D;IAC5D,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAC1C,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,QAAQ,GAAG,aAAa,CAAC;QACtC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;IAE3B,+CAA+C;IAC/C,kCAAkC;IAClC,mDAAmD;IACnD,IAAI,GAAW,CAAC;IAChB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,gCAAgC;QAChC,GAAG,GAAG,CAAC,CAAC;IACV,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAkD,CAAC;IACvD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,gBAAgB,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI;QACJ,GAAG;QACH,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,9 @@ import type { RespiratorInput, RespiratorResult } from './types.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @param input - Respirator input parameters
|
|
11
11
|
* @returns Respirator results including MUC, APF, and protection assessment
|
|
12
|
+
* @throws {RangeError} oel is not greater than 0, or concentration is negative
|
|
13
|
+
* @remarks When concentration is 0 (no hazard present), safetyMargin is Infinity —
|
|
14
|
+
* an intentional sentinel meaning "any respirator is infinitely adequate".
|
|
12
15
|
*/
|
|
13
16
|
export declare function respiratorCalculate(input: RespiratorInput): RespiratorResult;
|
|
14
17
|
//# sourceMappingURL=respiratorCalculate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respiratorCalculate.d.ts","sourceRoot":"","sources":["../../src/safety/respiratorCalculate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AA2DpF
|
|
1
|
+
{"version":3,"file":"respiratorCalculate.d.ts","sourceRoot":"","sources":["../../src/safety/respiratorCalculate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AA2DpF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAqC5E"}
|
|
@@ -32,8 +32,7 @@ function calculateMUC(apf, oel) {
|
|
|
32
32
|
* concentration exceeds the occupational exposure limit.
|
|
33
33
|
*/
|
|
34
34
|
function calculateHazardRatio(concentration, oel) {
|
|
35
|
-
|
|
36
|
-
return Infinity;
|
|
35
|
+
// oel > 0 is guaranteed by the caller's input validation
|
|
37
36
|
return concentration / oel;
|
|
38
37
|
}
|
|
39
38
|
/**
|
|
@@ -62,9 +61,18 @@ function calculateSafetyMargin(apf, requiredAPF) {
|
|
|
62
61
|
*
|
|
63
62
|
* @param input - Respirator input parameters
|
|
64
63
|
* @returns Respirator results including MUC, APF, and protection assessment
|
|
64
|
+
* @throws {RangeError} oel is not greater than 0, or concentration is negative
|
|
65
|
+
* @remarks When concentration is 0 (no hazard present), safetyMargin is Infinity —
|
|
66
|
+
* an intentional sentinel meaning "any respirator is infinitely adequate".
|
|
65
67
|
*/
|
|
66
68
|
export function respiratorCalculate(input) {
|
|
67
69
|
const { concentration, oel, respiratorType } = input;
|
|
70
|
+
if (oel <= 0) {
|
|
71
|
+
throw new RangeError('oel (occupational exposure limit) must be greater than 0');
|
|
72
|
+
}
|
|
73
|
+
if (concentration < 0) {
|
|
74
|
+
throw new RangeError('concentration must not be negative');
|
|
75
|
+
}
|
|
68
76
|
// Get APF for selected respirator type
|
|
69
77
|
const apf = APF_VALUES[respiratorType];
|
|
70
78
|
// Calculate MUC
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respiratorCalculate.js","sourceRoot":"","sources":["../../src/safety/respiratorCalculate.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,GAAmC;IACjD,qBAAqB,EAAE,EAAE;IACzB,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,EAAE;IACvB,cAAc,EAAE,EAAE;IAClB,wBAAwB,EAAE,IAAI;IAC9B,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,EAAE;IACvB,sBAAsB,EAAE,IAAI;IAC5B,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC5C,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,aAAqB,EAAE,GAAW;IAC9D,
|
|
1
|
+
{"version":3,"file":"respiratorCalculate.js","sourceRoot":"","sources":["../../src/safety/respiratorCalculate.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,GAAmC;IACjD,qBAAqB,EAAE,EAAE;IACzB,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,EAAE;IACvB,cAAc,EAAE,EAAE;IAClB,wBAAwB,EAAE,IAAI;IAC9B,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,EAAE;IACvB,sBAAsB,EAAE,IAAI;IAC5B,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC5C,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,aAAqB,EAAE,GAAW;IAC9D,yDAAyD;IACzD,OAAO,aAAa,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,GAAW,EAAE,WAAmB;IAC7D,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACtC,OAAO,GAAG,GAAG,WAAW,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAErD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IAED,uCAAuC;IACvC,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAEvC,gBAAgB;IAChB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnC,yBAAyB;IACzB,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAE7D,yBAAyB;IACzB,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEtD,kCAAkC;IAClC,4EAA4E;IAC5E,MAAM,kBAAkB,GAAG,aAAa,IAAI,GAAG,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE7D,OAAO;QACL,GAAG;QACH,GAAG;QACH,WAAW;QACX,WAAW;QACX,kBAAkB;QAClB,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,11 @@ import type { ThermalComfortInput, ThermalComfortResult } from './types.js';
|
|
|
9
9
|
* @reference ISO 7730:2005 — Ergonomics of the thermal environment
|
|
10
10
|
* @reference ASHRAE Standard 55-2020
|
|
11
11
|
* @reference pythermalcomfort reference implementation
|
|
12
|
+
*
|
|
13
|
+
* @throws {RangeError} relativeHumidity outside 0–100, metabolicRate ≤ 0,
|
|
14
|
+
* clothingInsulation < 0, or airVelocity < 0.
|
|
15
|
+
* @remarks Air and radiant temperatures are in °C and may be negative, so they
|
|
16
|
+
* are not range-checked.
|
|
12
17
|
*/
|
|
13
18
|
export declare function thermalComfort(input: ThermalComfortInput): ThermalComfortResult;
|
|
14
19
|
//# sourceMappingURL=thermalComfort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermalComfort.d.ts","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"thermalComfort.d.ts","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA+F/E"}
|
|
@@ -9,9 +9,26 @@ import { roundTo } from '../utils.js';
|
|
|
9
9
|
* @reference ISO 7730:2005 — Ergonomics of the thermal environment
|
|
10
10
|
* @reference ASHRAE Standard 55-2020
|
|
11
11
|
* @reference pythermalcomfort reference implementation
|
|
12
|
+
*
|
|
13
|
+
* @throws {RangeError} relativeHumidity outside 0–100, metabolicRate ≤ 0,
|
|
14
|
+
* clothingInsulation < 0, or airVelocity < 0.
|
|
15
|
+
* @remarks Air and radiant temperatures are in °C and may be negative, so they
|
|
16
|
+
* are not range-checked.
|
|
12
17
|
*/
|
|
13
18
|
export function thermalComfort(input) {
|
|
14
19
|
const { airTemp, radiantTemp, airVelocity, relativeHumidity, metabolicRate, clothingInsulation } = input;
|
|
20
|
+
if (relativeHumidity < 0 || relativeHumidity > 100) {
|
|
21
|
+
throw new RangeError('relativeHumidity must be between 0 and 100');
|
|
22
|
+
}
|
|
23
|
+
if (metabolicRate <= 0) {
|
|
24
|
+
throw new RangeError('metabolicRate must be greater than 0');
|
|
25
|
+
}
|
|
26
|
+
if (clothingInsulation < 0) {
|
|
27
|
+
throw new RangeError('clothingInsulation must not be negative');
|
|
28
|
+
}
|
|
29
|
+
if (airVelocity < 0) {
|
|
30
|
+
throw new RangeError('airVelocity must not be negative');
|
|
31
|
+
}
|
|
15
32
|
const M = metabolicRate * 58.15; // W/m²
|
|
16
33
|
const W = 0;
|
|
17
34
|
const Icl = clothingInsulation * 0.155; // m²·K/W
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermalComfort.js","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC
|
|
1
|
+
{"version":3,"file":"thermalComfort.js","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "formulab",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.8",
|
|
4
4
|
"description": "Manufacturing & Engineering calculation formulas library - 182 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",
|