@justair/justair-library 7.9.0 → 7.10.0-alpha.1a4bd33
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/README.md +26 -1
- package/dist/constants/pollutants.d.ts +89 -71
- package/package.json +1 -1
- package/src/constants/pollutants.js +38 -28
- package/src/constants/tests/pollutants.test.js +26 -2
package/README.md
CHANGED
|
@@ -121,6 +121,31 @@ Same install-time visibility caveat as the 7.4.0 section above.
|
|
|
121
121
|
|
|
122
122
|
`HI` is **derived, not measured**. Processing-Engine computes it from that reading's own `T_AMB` / `RH_AMB` pair using the NOAA formula (JA-3120); no supplier reports it. It takes no `_AMB` suffix because there is no internal counterpart — an enclosure Heat Index would describe the inside of the housing. Never compute it from the bare `T` / `RH`.
|
|
123
123
|
|
|
124
|
+
### New parameter and type changes in 7.10.0
|
|
125
|
+
|
|
126
|
+
| id | Name | Unit |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| `RN` | Radon | `pCi/L` |
|
|
129
|
+
|
|
130
|
+
Same install-time visibility caveat as the 7.4.0 section above. Nothing normalizes radon today, so no
|
|
131
|
+
monitor carries it yet, but the first one that does will surface publicly. JA-3427 records that radon
|
|
132
|
+
should start admin only; that gating lives only in JustAir-Client's `parameterFiltering.js` and V2 has
|
|
133
|
+
no equivalent.
|
|
134
|
+
|
|
135
|
+
`RN.rfc` is `4`, the EPA indoor action level in pCi/L. It is **not** an IRIS chronic inhalation RfC in
|
|
136
|
+
µg/m³, which is what every `HEAVY_METALS` `rfc` is. Nothing reads `rfc` off `PARAMETERS` today.
|
|
137
|
+
|
|
138
|
+
Two `type` values also changed, so a service that groups by `type` will show these in a new group
|
|
139
|
+
after install:
|
|
140
|
+
|
|
141
|
+
| id | Was | Now |
|
|
142
|
+
|---|---|---|
|
|
143
|
+
| `H2S` | `Volatile Organic Compound` | `Gas` |
|
|
144
|
+
| `CH4` | `Volatile Organic Compound` | `Gas` |
|
|
145
|
+
|
|
146
|
+
`origin` and `impacts` were also filled in for the non-AQI pollutants that had them blank. Display
|
|
147
|
+
only, no shape change.
|
|
148
|
+
|
|
124
149
|
### Object shape
|
|
125
150
|
|
|
126
151
|
Each constant is an object with the following fields:
|
|
@@ -132,7 +157,7 @@ Each constant is an object with the following fields:
|
|
|
132
157
|
| `name` | `string` | Full descriptive name (e.g. `"Particulate Matter 2.5 (PM₂.₅)"`) |
|
|
133
158
|
| `unit` | `string` | Measurement unit (e.g. `"µg/m³"`) |
|
|
134
159
|
| `type` | `string` | Category: `"Particulate Matter"`, `"Gas"`, `"Volatile Organic Compound"`, `"Weather"`, `"Heavy Metal"`, `"Heavy Metal - Essential Nutrient"` |
|
|
135
|
-
| `rfc` | `number \| null` | EPA IRIS chronic inhalation reference concentration (µg/m³) |
|
|
160
|
+
| `rfc` | `number \| null` | EPA IRIS chronic inhalation reference concentration (µg/m³). Exception: `RN.rfc` is the EPA indoor action level in pCi/L |
|
|
136
161
|
| `origin` | `string \| null` | Description of pollution source |
|
|
137
162
|
| `impacts` | `string \| null` | Human health impact description |
|
|
138
163
|
|
|
@@ -6,8 +6,8 @@ export namespace PARAMETERS {
|
|
|
6
6
|
let unit: string;
|
|
7
7
|
let type: string;
|
|
8
8
|
let rfc: any;
|
|
9
|
-
let origin:
|
|
10
|
-
let impacts:
|
|
9
|
+
let origin: string;
|
|
10
|
+
let impacts: string;
|
|
11
11
|
}
|
|
12
12
|
namespace NO2 {
|
|
13
13
|
let id_1: string;
|
|
@@ -94,9 +94,9 @@ export namespace PARAMETERS {
|
|
|
94
94
|
export { type_5 as type };
|
|
95
95
|
let rfc_5: any;
|
|
96
96
|
export { rfc_5 as rfc };
|
|
97
|
-
let origin_5:
|
|
97
|
+
let origin_5: string;
|
|
98
98
|
export { origin_5 as origin };
|
|
99
|
-
let impacts_5:
|
|
99
|
+
let impacts_5: string;
|
|
100
100
|
export { impacts_5 as impacts };
|
|
101
101
|
}
|
|
102
102
|
namespace BC {
|
|
@@ -112,9 +112,9 @@ export namespace PARAMETERS {
|
|
|
112
112
|
export { type_6 as type };
|
|
113
113
|
let rfc_6: any;
|
|
114
114
|
export { rfc_6 as rfc };
|
|
115
|
-
let origin_6:
|
|
115
|
+
let origin_6: string;
|
|
116
116
|
export { origin_6 as origin };
|
|
117
|
-
let impacts_6:
|
|
117
|
+
let impacts_6: string;
|
|
118
118
|
export { impacts_6 as impacts };
|
|
119
119
|
}
|
|
120
120
|
namespace BRC {
|
|
@@ -130,9 +130,9 @@ export namespace PARAMETERS {
|
|
|
130
130
|
export { type_7 as type };
|
|
131
131
|
let rfc_7: any;
|
|
132
132
|
export { rfc_7 as rfc };
|
|
133
|
-
let origin_7:
|
|
133
|
+
let origin_7: string;
|
|
134
134
|
export { origin_7 as origin };
|
|
135
|
-
let impacts_7:
|
|
135
|
+
let impacts_7: string;
|
|
136
136
|
export { impacts_7 as impacts };
|
|
137
137
|
}
|
|
138
138
|
namespace CO2 {
|
|
@@ -148,9 +148,9 @@ export namespace PARAMETERS {
|
|
|
148
148
|
export { type_8 as type };
|
|
149
149
|
let rfc_8: any;
|
|
150
150
|
export { rfc_8 as rfc };
|
|
151
|
-
let origin_8:
|
|
151
|
+
let origin_8: string;
|
|
152
152
|
export { origin_8 as origin };
|
|
153
|
-
let impacts_8:
|
|
153
|
+
let impacts_8: string;
|
|
154
154
|
export { impacts_8 as impacts };
|
|
155
155
|
}
|
|
156
156
|
namespace H2S {
|
|
@@ -166,9 +166,9 @@ export namespace PARAMETERS {
|
|
|
166
166
|
export { type_9 as type };
|
|
167
167
|
let rfc_9: any;
|
|
168
168
|
export { rfc_9 as rfc };
|
|
169
|
-
let origin_9:
|
|
169
|
+
let origin_9: string;
|
|
170
170
|
export { origin_9 as origin };
|
|
171
|
-
let impacts_9:
|
|
171
|
+
let impacts_9: string;
|
|
172
172
|
export { impacts_9 as impacts };
|
|
173
173
|
}
|
|
174
174
|
namespace CH4 {
|
|
@@ -184,9 +184,9 @@ export namespace PARAMETERS {
|
|
|
184
184
|
export { type_10 as type };
|
|
185
185
|
let rfc_10: any;
|
|
186
186
|
export { rfc_10 as rfc };
|
|
187
|
-
let origin_10:
|
|
187
|
+
let origin_10: string;
|
|
188
188
|
export { origin_10 as origin };
|
|
189
|
-
let impacts_10:
|
|
189
|
+
let impacts_10: string;
|
|
190
190
|
export { impacts_10 as impacts };
|
|
191
191
|
}
|
|
192
192
|
namespace NO {
|
|
@@ -202,12 +202,12 @@ export namespace PARAMETERS {
|
|
|
202
202
|
export { type_11 as type };
|
|
203
203
|
let rfc_11: any;
|
|
204
204
|
export { rfc_11 as rfc };
|
|
205
|
-
let origin_11:
|
|
205
|
+
let origin_11: string;
|
|
206
206
|
export { origin_11 as origin };
|
|
207
|
-
let impacts_11:
|
|
207
|
+
let impacts_11: string;
|
|
208
208
|
export { impacts_11 as impacts };
|
|
209
209
|
}
|
|
210
|
-
namespace
|
|
210
|
+
namespace RN {
|
|
211
211
|
let id_12: string;
|
|
212
212
|
export { id_12 as id };
|
|
213
213
|
let label_12: string;
|
|
@@ -218,14 +218,14 @@ export namespace PARAMETERS {
|
|
|
218
218
|
export { unit_12 as unit };
|
|
219
219
|
let type_12: string;
|
|
220
220
|
export { type_12 as type };
|
|
221
|
-
let rfc_12:
|
|
221
|
+
let rfc_12: number;
|
|
222
222
|
export { rfc_12 as rfc };
|
|
223
|
-
let origin_12:
|
|
223
|
+
let origin_12: string;
|
|
224
224
|
export { origin_12 as origin };
|
|
225
|
-
let impacts_12:
|
|
225
|
+
let impacts_12: string;
|
|
226
226
|
export { impacts_12 as impacts };
|
|
227
227
|
}
|
|
228
|
-
namespace
|
|
228
|
+
namespace PM1 {
|
|
229
229
|
let id_13: string;
|
|
230
230
|
export { id_13 as id };
|
|
231
231
|
let label_13: string;
|
|
@@ -238,12 +238,12 @@ export namespace PARAMETERS {
|
|
|
238
238
|
export { type_13 as type };
|
|
239
239
|
let rfc_13: any;
|
|
240
240
|
export { rfc_13 as rfc };
|
|
241
|
-
let origin_13:
|
|
241
|
+
let origin_13: string;
|
|
242
242
|
export { origin_13 as origin };
|
|
243
|
-
let impacts_13:
|
|
243
|
+
let impacts_13: string;
|
|
244
244
|
export { impacts_13 as impacts };
|
|
245
245
|
}
|
|
246
|
-
namespace
|
|
246
|
+
namespace UFP {
|
|
247
247
|
let id_14: string;
|
|
248
248
|
export { id_14 as id };
|
|
249
249
|
let label_14: string;
|
|
@@ -256,12 +256,12 @@ export namespace PARAMETERS {
|
|
|
256
256
|
export { type_14 as type };
|
|
257
257
|
let rfc_14: any;
|
|
258
258
|
export { rfc_14 as rfc };
|
|
259
|
-
let origin_14:
|
|
259
|
+
let origin_14: string;
|
|
260
260
|
export { origin_14 as origin };
|
|
261
|
-
let impacts_14:
|
|
261
|
+
let impacts_14: string;
|
|
262
262
|
export { impacts_14 as impacts };
|
|
263
263
|
}
|
|
264
|
-
namespace
|
|
264
|
+
namespace VOC {
|
|
265
265
|
let id_15: string;
|
|
266
266
|
export { id_15 as id };
|
|
267
267
|
let label_15: string;
|
|
@@ -274,12 +274,12 @@ export namespace PARAMETERS {
|
|
|
274
274
|
export { type_15 as type };
|
|
275
275
|
let rfc_15: any;
|
|
276
276
|
export { rfc_15 as rfc };
|
|
277
|
-
let origin_15:
|
|
277
|
+
let origin_15: string;
|
|
278
278
|
export { origin_15 as origin };
|
|
279
|
-
let impacts_15:
|
|
279
|
+
let impacts_15: string;
|
|
280
280
|
export { impacts_15 as impacts };
|
|
281
281
|
}
|
|
282
|
-
namespace
|
|
282
|
+
namespace DP {
|
|
283
283
|
let id_16: string;
|
|
284
284
|
export { id_16 as id };
|
|
285
285
|
let label_16: string;
|
|
@@ -297,7 +297,7 @@ export namespace PARAMETERS {
|
|
|
297
297
|
let impacts_16: any;
|
|
298
298
|
export { impacts_16 as impacts };
|
|
299
299
|
}
|
|
300
|
-
namespace
|
|
300
|
+
namespace DP_AMB {
|
|
301
301
|
let id_17: string;
|
|
302
302
|
export { id_17 as id };
|
|
303
303
|
let label_17: string;
|
|
@@ -315,7 +315,7 @@ export namespace PARAMETERS {
|
|
|
315
315
|
let impacts_17: any;
|
|
316
316
|
export { impacts_17 as impacts };
|
|
317
317
|
}
|
|
318
|
-
namespace
|
|
318
|
+
namespace RH {
|
|
319
319
|
let id_18: string;
|
|
320
320
|
export { id_18 as id };
|
|
321
321
|
let label_18: string;
|
|
@@ -333,7 +333,7 @@ export namespace PARAMETERS {
|
|
|
333
333
|
let impacts_18: any;
|
|
334
334
|
export { impacts_18 as impacts };
|
|
335
335
|
}
|
|
336
|
-
namespace
|
|
336
|
+
namespace RH_AMB {
|
|
337
337
|
let id_19: string;
|
|
338
338
|
export { id_19 as id };
|
|
339
339
|
let label_19: string;
|
|
@@ -351,7 +351,7 @@ export namespace PARAMETERS {
|
|
|
351
351
|
let impacts_19: any;
|
|
352
352
|
export { impacts_19 as impacts };
|
|
353
353
|
}
|
|
354
|
-
namespace
|
|
354
|
+
namespace T {
|
|
355
355
|
let id_20: string;
|
|
356
356
|
export { id_20 as id };
|
|
357
357
|
let label_20: string;
|
|
@@ -369,7 +369,7 @@ export namespace PARAMETERS {
|
|
|
369
369
|
let impacts_20: any;
|
|
370
370
|
export { impacts_20 as impacts };
|
|
371
371
|
}
|
|
372
|
-
namespace
|
|
372
|
+
namespace T_AMB {
|
|
373
373
|
let id_21: string;
|
|
374
374
|
export { id_21 as id };
|
|
375
375
|
let label_21: string;
|
|
@@ -387,7 +387,7 @@ export namespace PARAMETERS {
|
|
|
387
387
|
let impacts_21: any;
|
|
388
388
|
export { impacts_21 as impacts };
|
|
389
389
|
}
|
|
390
|
-
namespace
|
|
390
|
+
namespace WD {
|
|
391
391
|
let id_22: string;
|
|
392
392
|
export { id_22 as id };
|
|
393
393
|
let label_22: string;
|
|
@@ -405,7 +405,7 @@ export namespace PARAMETERS {
|
|
|
405
405
|
let impacts_22: any;
|
|
406
406
|
export { impacts_22 as impacts };
|
|
407
407
|
}
|
|
408
|
-
namespace
|
|
408
|
+
namespace WS {
|
|
409
409
|
let id_23: string;
|
|
410
410
|
export { id_23 as id };
|
|
411
411
|
let label_23: string;
|
|
@@ -423,7 +423,7 @@ export namespace PARAMETERS {
|
|
|
423
423
|
let impacts_23: any;
|
|
424
424
|
export { impacts_23 as impacts };
|
|
425
425
|
}
|
|
426
|
-
namespace
|
|
426
|
+
namespace GS {
|
|
427
427
|
let id_24: string;
|
|
428
428
|
export { id_24 as id };
|
|
429
429
|
let label_24: string;
|
|
@@ -441,7 +441,7 @@ export namespace PARAMETERS {
|
|
|
441
441
|
let impacts_24: any;
|
|
442
442
|
export { impacts_24 as impacts };
|
|
443
443
|
}
|
|
444
|
-
namespace
|
|
444
|
+
namespace HI {
|
|
445
445
|
let id_25: string;
|
|
446
446
|
export { id_25 as id };
|
|
447
447
|
let label_25: string;
|
|
@@ -459,7 +459,7 @@ export namespace PARAMETERS {
|
|
|
459
459
|
let impacts_25: any;
|
|
460
460
|
export { impacts_25 as impacts };
|
|
461
461
|
}
|
|
462
|
-
namespace
|
|
462
|
+
namespace R {
|
|
463
463
|
let id_26: string;
|
|
464
464
|
export { id_26 as id };
|
|
465
465
|
let label_26: string;
|
|
@@ -477,7 +477,7 @@ export namespace PARAMETERS {
|
|
|
477
477
|
let impacts_26: any;
|
|
478
478
|
export { impacts_26 as impacts };
|
|
479
479
|
}
|
|
480
|
-
namespace
|
|
480
|
+
namespace SR {
|
|
481
481
|
let id_27: string;
|
|
482
482
|
export { id_27 as id };
|
|
483
483
|
let label_27: string;
|
|
@@ -495,7 +495,7 @@ export namespace PARAMETERS {
|
|
|
495
495
|
let impacts_27: any;
|
|
496
496
|
export { impacts_27 as impacts };
|
|
497
497
|
}
|
|
498
|
-
namespace
|
|
498
|
+
namespace P {
|
|
499
499
|
let id_28: string;
|
|
500
500
|
export { id_28 as id };
|
|
501
501
|
let label_28: string;
|
|
@@ -513,7 +513,7 @@ export namespace PARAMETERS {
|
|
|
513
513
|
let impacts_28: any;
|
|
514
514
|
export { impacts_28 as impacts };
|
|
515
515
|
}
|
|
516
|
-
namespace
|
|
516
|
+
namespace PAR {
|
|
517
517
|
let id_29: string;
|
|
518
518
|
export { id_29 as id };
|
|
519
519
|
let label_29: string;
|
|
@@ -531,7 +531,7 @@ export namespace PARAMETERS {
|
|
|
531
531
|
let impacts_29: any;
|
|
532
532
|
export { impacts_29 as impacts };
|
|
533
533
|
}
|
|
534
|
-
namespace
|
|
534
|
+
namespace ARM {
|
|
535
535
|
let id_30: string;
|
|
536
536
|
export { id_30 as id };
|
|
537
537
|
let label_30: string;
|
|
@@ -549,7 +549,7 @@ export namespace PARAMETERS {
|
|
|
549
549
|
let impacts_30: any;
|
|
550
550
|
export { impacts_30 as impacts };
|
|
551
551
|
}
|
|
552
|
-
namespace
|
|
552
|
+
namespace ARW {
|
|
553
553
|
let id_31: string;
|
|
554
554
|
export { id_31 as id };
|
|
555
555
|
let label_31: string;
|
|
@@ -567,7 +567,7 @@ export namespace PARAMETERS {
|
|
|
567
567
|
let impacts_31: any;
|
|
568
568
|
export { impacts_31 as impacts };
|
|
569
569
|
}
|
|
570
|
-
namespace
|
|
570
|
+
namespace ARD {
|
|
571
571
|
let id_32: string;
|
|
572
572
|
export { id_32 as id };
|
|
573
573
|
let label_32: string;
|
|
@@ -585,9 +585,7 @@ export namespace PARAMETERS {
|
|
|
585
585
|
let impacts_32: any;
|
|
586
586
|
export { impacts_32 as impacts };
|
|
587
587
|
}
|
|
588
|
-
|
|
589
|
-
export namespace HEAVY_METALS {
|
|
590
|
-
export namespace AS {
|
|
588
|
+
namespace ARH {
|
|
591
589
|
let id_33: string;
|
|
592
590
|
export { id_33 as id };
|
|
593
591
|
let label_33: string;
|
|
@@ -598,14 +596,16 @@ export namespace HEAVY_METALS {
|
|
|
598
596
|
export { unit_33 as unit };
|
|
599
597
|
let type_33: string;
|
|
600
598
|
export { type_33 as type };
|
|
601
|
-
let rfc_33:
|
|
599
|
+
let rfc_33: any;
|
|
602
600
|
export { rfc_33 as rfc };
|
|
603
|
-
let origin_33:
|
|
601
|
+
let origin_33: any;
|
|
604
602
|
export { origin_33 as origin };
|
|
605
|
-
let impacts_33:
|
|
603
|
+
let impacts_33: any;
|
|
606
604
|
export { impacts_33 as impacts };
|
|
607
605
|
}
|
|
608
|
-
|
|
606
|
+
}
|
|
607
|
+
export namespace HEAVY_METALS {
|
|
608
|
+
export namespace AS {
|
|
609
609
|
let id_34: string;
|
|
610
610
|
export { id_34 as id };
|
|
611
611
|
let label_34: string;
|
|
@@ -616,14 +616,14 @@ export namespace HEAVY_METALS {
|
|
|
616
616
|
export { unit_34 as unit };
|
|
617
617
|
let type_34: string;
|
|
618
618
|
export { type_34 as type };
|
|
619
|
-
let rfc_34:
|
|
619
|
+
let rfc_34: number;
|
|
620
620
|
export { rfc_34 as rfc };
|
|
621
621
|
let origin_34: string;
|
|
622
622
|
export { origin_34 as origin };
|
|
623
623
|
let impacts_34: string;
|
|
624
624
|
export { impacts_34 as impacts };
|
|
625
625
|
}
|
|
626
|
-
export namespace
|
|
626
|
+
export namespace BA {
|
|
627
627
|
let id_35: string;
|
|
628
628
|
export { id_35 as id };
|
|
629
629
|
let label_35: string;
|
|
@@ -634,14 +634,14 @@ export namespace HEAVY_METALS {
|
|
|
634
634
|
export { unit_35 as unit };
|
|
635
635
|
let type_35: string;
|
|
636
636
|
export { type_35 as type };
|
|
637
|
-
let rfc_35:
|
|
637
|
+
let rfc_35: any;
|
|
638
638
|
export { rfc_35 as rfc };
|
|
639
639
|
let origin_35: string;
|
|
640
640
|
export { origin_35 as origin };
|
|
641
641
|
let impacts_35: string;
|
|
642
642
|
export { impacts_35 as impacts };
|
|
643
643
|
}
|
|
644
|
-
export namespace
|
|
644
|
+
export namespace C6H6 {
|
|
645
645
|
let id_36: string;
|
|
646
646
|
export { id_36 as id };
|
|
647
647
|
let label_36: string;
|
|
@@ -659,7 +659,7 @@ export namespace HEAVY_METALS {
|
|
|
659
659
|
let impacts_36: string;
|
|
660
660
|
export { impacts_36 as impacts };
|
|
661
661
|
}
|
|
662
|
-
export namespace
|
|
662
|
+
export namespace BE {
|
|
663
663
|
let id_37: string;
|
|
664
664
|
export { id_37 as id };
|
|
665
665
|
let label_37: string;
|
|
@@ -677,7 +677,7 @@ export namespace HEAVY_METALS {
|
|
|
677
677
|
let impacts_37: string;
|
|
678
678
|
export { impacts_37 as impacts };
|
|
679
679
|
}
|
|
680
|
-
export namespace
|
|
680
|
+
export namespace CD {
|
|
681
681
|
let id_38: string;
|
|
682
682
|
export { id_38 as id };
|
|
683
683
|
let label_38: string;
|
|
@@ -695,7 +695,7 @@ export namespace HEAVY_METALS {
|
|
|
695
695
|
let impacts_38: string;
|
|
696
696
|
export { impacts_38 as impacts };
|
|
697
697
|
}
|
|
698
|
-
export namespace
|
|
698
|
+
export namespace CR {
|
|
699
699
|
let id_39: string;
|
|
700
700
|
export { id_39 as id };
|
|
701
701
|
let label_39: string;
|
|
@@ -706,15 +706,14 @@ export namespace HEAVY_METALS {
|
|
|
706
706
|
export { unit_39 as unit };
|
|
707
707
|
let type_39: string;
|
|
708
708
|
export { type_39 as type };
|
|
709
|
-
let rfc_39:
|
|
709
|
+
let rfc_39: number;
|
|
710
710
|
export { rfc_39 as rfc };
|
|
711
711
|
let origin_39: string;
|
|
712
712
|
export { origin_39 as origin };
|
|
713
713
|
let impacts_39: string;
|
|
714
714
|
export { impacts_39 as impacts };
|
|
715
715
|
}
|
|
716
|
-
export
|
|
717
|
-
export namespace CU {
|
|
716
|
+
export namespace CO_1 {
|
|
718
717
|
let id_40: string;
|
|
719
718
|
export { id_40 as id };
|
|
720
719
|
let label_40: string;
|
|
@@ -732,7 +731,8 @@ export namespace HEAVY_METALS {
|
|
|
732
731
|
let impacts_40: string;
|
|
733
732
|
export { impacts_40 as impacts };
|
|
734
733
|
}
|
|
735
|
-
export
|
|
734
|
+
export { CO_1 as CO };
|
|
735
|
+
export namespace CU {
|
|
736
736
|
let id_41: string;
|
|
737
737
|
export { id_41 as id };
|
|
738
738
|
let label_41: string;
|
|
@@ -750,7 +750,7 @@ export namespace HEAVY_METALS {
|
|
|
750
750
|
let impacts_41: string;
|
|
751
751
|
export { impacts_41 as impacts };
|
|
752
752
|
}
|
|
753
|
-
export namespace
|
|
753
|
+
export namespace FE {
|
|
754
754
|
let id_42: string;
|
|
755
755
|
export { id_42 as id };
|
|
756
756
|
let label_42: string;
|
|
@@ -761,14 +761,14 @@ export namespace HEAVY_METALS {
|
|
|
761
761
|
export { unit_42 as unit };
|
|
762
762
|
let type_42: string;
|
|
763
763
|
export { type_42 as type };
|
|
764
|
-
let rfc_42:
|
|
764
|
+
let rfc_42: any;
|
|
765
765
|
export { rfc_42 as rfc };
|
|
766
766
|
let origin_42: string;
|
|
767
767
|
export { origin_42 as origin };
|
|
768
768
|
let impacts_42: string;
|
|
769
769
|
export { impacts_42 as impacts };
|
|
770
770
|
}
|
|
771
|
-
export namespace
|
|
771
|
+
export namespace PB {
|
|
772
772
|
let id_43: string;
|
|
773
773
|
export { id_43 as id };
|
|
774
774
|
let label_43: string;
|
|
@@ -786,7 +786,7 @@ export namespace HEAVY_METALS {
|
|
|
786
786
|
let impacts_43: string;
|
|
787
787
|
export { impacts_43 as impacts };
|
|
788
788
|
}
|
|
789
|
-
export namespace
|
|
789
|
+
export namespace MN {
|
|
790
790
|
let id_44: string;
|
|
791
791
|
export { id_44 as id };
|
|
792
792
|
let label_44: string;
|
|
@@ -797,14 +797,14 @@ export namespace HEAVY_METALS {
|
|
|
797
797
|
export { unit_44 as unit };
|
|
798
798
|
let type_44: string;
|
|
799
799
|
export { type_44 as type };
|
|
800
|
-
let rfc_44:
|
|
800
|
+
let rfc_44: number;
|
|
801
801
|
export { rfc_44 as rfc };
|
|
802
802
|
let origin_44: string;
|
|
803
803
|
export { origin_44 as origin };
|
|
804
804
|
let impacts_44: string;
|
|
805
805
|
export { impacts_44 as impacts };
|
|
806
806
|
}
|
|
807
|
-
export namespace
|
|
807
|
+
export namespace NI {
|
|
808
808
|
let id_45: string;
|
|
809
809
|
export { id_45 as id };
|
|
810
810
|
let label_45: string;
|
|
@@ -822,7 +822,7 @@ export namespace HEAVY_METALS {
|
|
|
822
822
|
let impacts_45: string;
|
|
823
823
|
export { impacts_45 as impacts };
|
|
824
824
|
}
|
|
825
|
-
export namespace
|
|
825
|
+
export namespace SE {
|
|
826
826
|
let id_46: string;
|
|
827
827
|
export { id_46 as id };
|
|
828
828
|
let label_46: string;
|
|
@@ -840,5 +840,23 @@ export namespace HEAVY_METALS {
|
|
|
840
840
|
let impacts_46: string;
|
|
841
841
|
export { impacts_46 as impacts };
|
|
842
842
|
}
|
|
843
|
+
export namespace ZN {
|
|
844
|
+
let id_47: string;
|
|
845
|
+
export { id_47 as id };
|
|
846
|
+
let label_47: string;
|
|
847
|
+
export { label_47 as label };
|
|
848
|
+
let name_47: string;
|
|
849
|
+
export { name_47 as name };
|
|
850
|
+
let unit_47: string;
|
|
851
|
+
export { unit_47 as unit };
|
|
852
|
+
let type_47: string;
|
|
853
|
+
export { type_47 as type };
|
|
854
|
+
let rfc_47: any;
|
|
855
|
+
export { rfc_47 as rfc };
|
|
856
|
+
let origin_47: string;
|
|
857
|
+
export { origin_47 as origin };
|
|
858
|
+
let impacts_47: string;
|
|
859
|
+
export { impacts_47 as impacts };
|
|
860
|
+
}
|
|
843
861
|
}
|
|
844
862
|
//# sourceMappingURL=pollutants.d.ts.map
|
package/package.json
CHANGED
|
@@ -11,8 +11,8 @@ export const PARAMETERS = {
|
|
|
11
11
|
unit: "ppm",
|
|
12
12
|
type: "Gas",
|
|
13
13
|
rfc: null,
|
|
14
|
-
origin:
|
|
15
|
-
impacts:
|
|
14
|
+
origin: "Made when fuel burns without enough oxygen. Comes mostly from car exhaust outdoors, and from heaters, furnaces, and gas stoves indoors. Has no color or smell.",
|
|
15
|
+
impacts: "Makes it harder for blood to carry oxygen to the heart and brain. High indoor levels can cause confusion, passing out, or death.",
|
|
16
16
|
},
|
|
17
17
|
NO2: {
|
|
18
18
|
id: "NO2",
|
|
@@ -21,7 +21,7 @@ export const PARAMETERS = {
|
|
|
21
21
|
unit: "ppb",
|
|
22
22
|
type: "Gas",
|
|
23
23
|
rfc: null,
|
|
24
|
-
origin: "Harmful gas from cars, power plants, and industrial equipment that contributes to smog and acid rain.",
|
|
24
|
+
origin: "Harmful gas from cars, power plants, and industrial equipment that contributes to smog and acid rain. Smells sharp and bitter.",
|
|
25
25
|
impacts: "Can cause respiratory problems, worsen asthma and bronchitis, and increase heart-related health risks.",
|
|
26
26
|
},
|
|
27
27
|
O3: {
|
|
@@ -31,7 +31,7 @@ export const PARAMETERS = {
|
|
|
31
31
|
unit: "ppm",
|
|
32
32
|
type: "Gas",
|
|
33
33
|
rfc: null,
|
|
34
|
-
origin: "Harmful smog component formed when pollution reacts with sunlight, especially problematic on hot, sunny days.",
|
|
34
|
+
origin: "Harmful smog component formed when pollution reacts with sunlight, especially problematic on hot, sunny days. Smell described as fresh or clean.",
|
|
35
35
|
impacts: "Can irritate lungs, intensify asthma and chronic bronchitis, and increase heart problems and mortality rates.",
|
|
36
36
|
},
|
|
37
37
|
PM2_5: {
|
|
@@ -61,8 +61,8 @@ export const PARAMETERS = {
|
|
|
61
61
|
unit: "ppb",
|
|
62
62
|
type: "Gas",
|
|
63
63
|
rfc: null,
|
|
64
|
-
origin:
|
|
65
|
-
impacts:
|
|
64
|
+
origin: "Comes mostly from burning fossil fuels at power plants and factories. Smaller amounts come from metal processing and volcanoes. Smells sharp or pungent.",
|
|
65
|
+
impacts: "Can make it hard to breathe and irritate the lungs, especially for people with asthma. Also helps form fine particle pollution and acid rain.",
|
|
66
66
|
},
|
|
67
67
|
BC: {
|
|
68
68
|
id: "BC",
|
|
@@ -71,8 +71,8 @@ export const PARAMETERS = {
|
|
|
71
71
|
unit: "ng/m³",
|
|
72
72
|
type: "Particulate Matter",
|
|
73
73
|
rfc: null,
|
|
74
|
-
origin:
|
|
75
|
-
impacts:
|
|
74
|
+
origin: "Black, sooty particles from burning fuel. Comes mostly from diesel and gas engines, coal power plants, and cookstoves that burn wood or coal. A major part of fine particle matter (PM₂.₅) in the air.",
|
|
75
|
+
impacts: "Can cause respiratory and cardiovascular disease, including asthma, heart attacks, and lung cancer.",
|
|
76
76
|
},
|
|
77
77
|
BRC: {
|
|
78
78
|
id: "BRC",
|
|
@@ -81,8 +81,8 @@ export const PARAMETERS = {
|
|
|
81
81
|
unit: "ng/m³",
|
|
82
82
|
type: "Particulate Matter",
|
|
83
83
|
rfc: null,
|
|
84
|
-
origin:
|
|
85
|
-
impacts:
|
|
84
|
+
origin: "Organic particles released by burning wood and plants, especially in wildfire smoke and wood fires at home.",
|
|
85
|
+
impacts: "Can cause respiratory and cardiovascular illnesses, exacerbate asthma, and increase mortality risk with prolonged exposure.",
|
|
86
86
|
},
|
|
87
87
|
CO2: {
|
|
88
88
|
id: "CO2",
|
|
@@ -91,28 +91,28 @@ export const PARAMETERS = {
|
|
|
91
91
|
unit: "ppm",
|
|
92
92
|
type: "Gas",
|
|
93
93
|
rfc: null,
|
|
94
|
-
origin:
|
|
95
|
-
impacts:
|
|
94
|
+
origin: "Comes mostly from burning fossil fuels, plus burning waste and plant material, and industrial processes like making cement. Has no color or smell.",
|
|
95
|
+
impacts: "Can cause drowsiness and reduced concentration, worsen headaches and fatigue, and increase breathing and heart-related health risks.",
|
|
96
96
|
},
|
|
97
97
|
H2S: {
|
|
98
98
|
id: "H2S",
|
|
99
99
|
label: "H₂S",
|
|
100
|
-
name: "Hydrogen
|
|
100
|
+
name: "Hydrogen sulfide (H₂S)",
|
|
101
101
|
unit: "ppm",
|
|
102
|
-
type: "
|
|
102
|
+
type: "Gas",
|
|
103
103
|
rfc: null,
|
|
104
|
-
origin:
|
|
105
|
-
impacts:
|
|
104
|
+
origin: "Found naturally in crude oil, natural gas, and volcanic gas. Also released by oil refineries, wastewater plants, farms with livestock, and landfills. Smells of rotten-eggs.",
|
|
105
|
+
impacts: "Low levels over a long time can irritate eyes and airways and cause headaches or nausea. Very high levels can cause someone to pass out or die.",
|
|
106
106
|
},
|
|
107
107
|
CH4: {
|
|
108
108
|
id: "CH4",
|
|
109
109
|
label: "CH₄",
|
|
110
110
|
name: "Methane (CH₄)",
|
|
111
111
|
unit: "ppm",
|
|
112
|
-
type: "
|
|
112
|
+
type: "Gas",
|
|
113
113
|
rfc: null,
|
|
114
|
-
origin:
|
|
115
|
-
impacts:
|
|
114
|
+
origin: "Comes from landfills, oil and gas drilling, livestock and farming, coal mines, and wastewater treatment. Has no natural smell, sometimes it is added to detect leaks.",
|
|
115
|
+
impacts: "Not harmful to breathe at normal outdoor levels. In a closed space, high levels can push out oxygen and cause dizziness or passing out. It also heats the planet, since it traps heat in the air like other gases that cause climate change.",
|
|
116
116
|
},
|
|
117
117
|
NO: {
|
|
118
118
|
id: "NO",
|
|
@@ -121,8 +121,18 @@ export const PARAMETERS = {
|
|
|
121
121
|
unit: "ppb",
|
|
122
122
|
type: "Gas",
|
|
123
123
|
rfc: null,
|
|
124
|
-
origin:
|
|
125
|
-
impacts:
|
|
124
|
+
origin: "Made when fuel burns in car engines, power plants, and factories. Turns into NO₂ once it's in the air. Smells sharp and sweet.",
|
|
125
|
+
impacts: "Can irritate the eyes, nose, throat, and lungs at low levels, and cause serious airway damage, fluid buildup in the lungs, and death at high levels.",
|
|
126
|
+
},
|
|
127
|
+
RN: {
|
|
128
|
+
id: "RN",
|
|
129
|
+
label: "Radon",
|
|
130
|
+
name: "Radon (Rn)",
|
|
131
|
+
unit: "pCi/L",
|
|
132
|
+
type: "Gas",
|
|
133
|
+
rfc: 4, // EPA indoor action level (pCi/L), not an IRIS inhalation RfC like the HEAVY_METALS values
|
|
134
|
+
origin: "A radioactive gas that comes naturally from uranium breaking down in rock, soil, and water. It can leak into buildings through cracks in the foundation. Has no color or smell.",
|
|
135
|
+
impacts: "The second leading cause of lung cancer in the US, after smoking. Linked to about 21,000 lung cancer deaths a year.",
|
|
126
136
|
},
|
|
127
137
|
PM1: {
|
|
128
138
|
id: "PM1",
|
|
@@ -131,8 +141,8 @@ export const PARAMETERS = {
|
|
|
131
141
|
unit: "µg/m³",
|
|
132
142
|
type: "Particulate Matter",
|
|
133
143
|
rfc: null,
|
|
134
|
-
origin:
|
|
135
|
-
impacts:
|
|
144
|
+
origin: "Very fine particles that can penetrate deep into lungs and bloodstream, originating from vehicle emissions, industrial processes, and wildfires.",
|
|
145
|
+
impacts: "Can cause respiratory and cardiovascular illnesses, exacerbate asthma, and increase mortality risk with prolonged exposure.",
|
|
136
146
|
},
|
|
137
147
|
UFP: {
|
|
138
148
|
id: "UFP",
|
|
@@ -141,18 +151,18 @@ export const PARAMETERS = {
|
|
|
141
151
|
unit: "pt/cm³",
|
|
142
152
|
type: "Particulate Matter",
|
|
143
153
|
rfc: null,
|
|
144
|
-
origin:
|
|
145
|
-
impacts:
|
|
154
|
+
origin: "Very tiny particles from burning fuel, especially from cars, trucks, factories, power plants, and home heating.",
|
|
155
|
+
impacts: "Can raise the risk of lung and heart disease.",
|
|
146
156
|
},
|
|
147
157
|
VOC: {
|
|
148
158
|
id: "VOC",
|
|
149
159
|
label: "VOC",
|
|
150
|
-
name: "Volatile
|
|
160
|
+
name: "Volatile organic compounds (VOC)",
|
|
151
161
|
unit: "ppm",
|
|
152
162
|
type: "Volatile Organic Compound",
|
|
153
163
|
rfc: null,
|
|
154
|
-
origin:
|
|
155
|
-
impacts:
|
|
164
|
+
origin: "Released when making or using everyday products like paint, cleaning supplies, solvents, and fuel.",
|
|
165
|
+
impacts: "Can harm health when breathed in indoors. Outdoors, reacts with sunlight to form smog. Some VOCs can cause cancer.",
|
|
156
166
|
},
|
|
157
167
|
// ---- T/RH/DP and their _AMB pairs (JA-3058). Does not apply to WD/WS below. ----
|
|
158
168
|
// Bare ids (T/RH/DP) are enclosure-internal, for corrections and fog detection only. The _AMB
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { PARAMETERS, HEAVY_METALS } from "../pollutants.js";
|
|
2
2
|
|
|
3
3
|
const REQUIRED_FIELDS = ["id", "label", "name", "unit", "type"];
|
|
4
|
+
|
|
5
|
+
// The one type that is not a pollutant. Stated, not derived: deriving the exemption from the
|
|
6
|
+
// entries would make the origin/impacts test assert nothing, since a new entry shipped blank
|
|
7
|
+
// would exempt itself.
|
|
8
|
+
const WEATHER_TYPE = "Weather";
|
|
9
|
+
|
|
4
10
|
const VALID_TYPES = [
|
|
5
11
|
"Particulate Matter",
|
|
6
12
|
"Gas",
|
|
7
13
|
"Volatile Organic Compound",
|
|
8
|
-
|
|
14
|
+
WEATHER_TYPE,
|
|
9
15
|
"Heavy Metal",
|
|
10
16
|
"Heavy Metal - Essential Nutrient",
|
|
11
17
|
];
|
|
@@ -67,8 +73,25 @@ function sharedAssertions(constants) {
|
|
|
67
73
|
});
|
|
68
74
|
}
|
|
69
75
|
|
|
76
|
+
// JA-3460: every pollutant needs Origin and Impacts copy. Weather parameters are exempt: they
|
|
77
|
+
// are not pollutants, and the Centralized Constants doc leaves both columns blank for them.
|
|
78
|
+
function hasOriginAndImpacts(constants) {
|
|
79
|
+
const pollutants = Object.entries(constants).filter(([, p]) => p.type !== WEATHER_TYPE);
|
|
80
|
+
|
|
81
|
+
test.each(pollutants)("%s: origin is populated", (key, pollutant) => {
|
|
82
|
+
expect(typeof pollutant.origin).toBe("string");
|
|
83
|
+
expect(pollutant.origin.trim().length).toBeGreaterThan(0);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
test.each(pollutants)("%s: impacts is populated", (key, pollutant) => {
|
|
87
|
+
expect(typeof pollutant.impacts).toBe("string");
|
|
88
|
+
expect(pollutant.impacts.trim().length).toBeGreaterThan(0);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
70
92
|
describe("PARAMETERS", () => {
|
|
71
93
|
sharedAssertions(PARAMETERS);
|
|
94
|
+
hasOriginAndImpacts(PARAMETERS);
|
|
72
95
|
|
|
73
96
|
// JA-3060: Processing-Engine hardcodes these ids, so lock the ambient/internal pairing.
|
|
74
97
|
const ambientKeys = Object.keys(PARAMETERS).filter((key) => key.endsWith("_AMB"));
|
|
@@ -90,7 +113,7 @@ describe("PARAMETERS", () => {
|
|
|
90
113
|
test("is declared as a Weather parameter in °F", () => {
|
|
91
114
|
expect(PARAMETERS.HI).toBeDefined();
|
|
92
115
|
expect(PARAMETERS.HI.unit).toBe("°F");
|
|
93
|
-
expect(PARAMETERS.HI.type).toBe(
|
|
116
|
+
expect(PARAMETERS.HI.type).toBe(WEATHER_TYPE);
|
|
94
117
|
});
|
|
95
118
|
|
|
96
119
|
test("shares T_AMB's unit, since it is an apparent temperature", () => {
|
|
@@ -105,6 +128,7 @@ describe("PARAMETERS", () => {
|
|
|
105
128
|
|
|
106
129
|
describe("HEAVY_METALS", () => {
|
|
107
130
|
sharedAssertions(HEAVY_METALS);
|
|
131
|
+
hasOriginAndImpacts(HEAVY_METALS);
|
|
108
132
|
|
|
109
133
|
test("PB.rfc is exactly 0, not null", () => {
|
|
110
134
|
expect(HEAVY_METALS.PB.rfc).toBe(0);
|