@buynomics-lib/bn-shared 1.18.12-feature-ace-424.0 → 1.18.12
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/build/helpers/measurement-converter.d.ts +2 -15
- package/build/helpers/measurement-converter.js +5 -30
- package/build/helpers/measurement-converter.js.map +1 -1
- package/build/helpers/measurement-converter.test.js +22 -25
- package/build/helpers/measurement-converter.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,21 +26,8 @@ interface ParsedMeasurement {
|
|
|
26
26
|
*/
|
|
27
27
|
export declare class MeasurementConverter {
|
|
28
28
|
private readonly config;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
* Default is 6 decimal digits, which provides precision up to 0.000001 (1e-06).
|
|
33
|
-
* This handles floating-point arithmetic issues common in unit conversions.
|
|
34
|
-
*
|
|
35
|
-
* Examples:
|
|
36
|
-
* - 1.3 L to ml = 1300.0 (instead of 1300.0000000000002)
|
|
37
|
-
* - 1/3 percent to fraction = 0.003333 (instead of 0.003333333333333334)
|
|
38
|
-
*
|
|
39
|
-
* Can be overridden via environment variable:
|
|
40
|
-
* MEASUREMENT_CONVERTER_DEFAULT_DECIMAL_DIGITS_PRECISION=8
|
|
41
|
-
*/
|
|
42
|
-
static readonly DEFAULT_DECIMAL_DIGITS_PRECISION: number;
|
|
43
|
-
constructor();
|
|
29
|
+
private readonly decimalDigitsPrecision;
|
|
30
|
+
constructor(decimalDigitsPrecision?: number);
|
|
44
31
|
private loadConfig;
|
|
45
32
|
/**
|
|
46
33
|
* Return the version number of the loaded measurement config.
|
|
@@ -64,20 +64,7 @@ var measurementConfigSchema = {
|
|
|
64
64
|
required: ['version', 'measurement_families'],
|
|
65
65
|
additionalProperties: false,
|
|
66
66
|
};
|
|
67
|
-
|
|
68
|
-
* Default decimal precision for rounding conversion results.
|
|
69
|
-
*
|
|
70
|
-
* Provides 6 decimal digits precision (allows difference up to 0.000001).
|
|
71
|
-
* This handles floating-point arithmetic issues common in unit conversions.
|
|
72
|
-
*
|
|
73
|
-
* Examples:
|
|
74
|
-
* - 1.3 L to ml = 1300.0 (instead of 1300.0000000000002)
|
|
75
|
-
* - 1/3 percent to fraction = 0.003333 (instead of 0.003333333333333334)
|
|
76
|
-
*
|
|
77
|
-
* Can be overridden via environment variable:
|
|
78
|
-
* MEASUREMENT_CONVERTER_DEFAULT_DECIMAL_DIGITS_PRECISION=8
|
|
79
|
-
*/
|
|
80
|
-
var DEFAULT_DECIMAL_DIGITS_PRECISION = Number.parseInt(process.env.MEASUREMENT_CONVERTER_DEFAULT_DECIMAL_DIGITS_PRECISION || '6', 10);
|
|
67
|
+
var DEFAULT_DECIMAL_DIGITS_PRECISION = 6;
|
|
81
68
|
/**
|
|
82
69
|
* MeasurementConverter for Measuring Units 3.0.
|
|
83
70
|
*
|
|
@@ -88,7 +75,9 @@ var DEFAULT_DECIMAL_DIGITS_PRECISION = Number.parseInt(process.env.MEASUREMENT_C
|
|
|
88
75
|
* - Lists all known measurements as "family.unit" strings
|
|
89
76
|
*/
|
|
90
77
|
var MeasurementConverter = /** @class */ (function () {
|
|
91
|
-
function MeasurementConverter() {
|
|
78
|
+
function MeasurementConverter(decimalDigitsPrecision) {
|
|
79
|
+
if (decimalDigitsPrecision === void 0) { decimalDigitsPrecision = DEFAULT_DECIMAL_DIGITS_PRECISION; }
|
|
80
|
+
this.decimalDigitsPrecision = decimalDigitsPrecision;
|
|
92
81
|
this.config = this.loadConfig();
|
|
93
82
|
}
|
|
94
83
|
// ---------------------------------------------------------------------------
|
|
@@ -130,7 +119,7 @@ var MeasurementConverter = /** @class */ (function () {
|
|
|
130
119
|
throw new Error("Cannot convert across measurement families: '".concat(src.family, "' \u2192 '").concat(tgt.family, "'."));
|
|
131
120
|
}
|
|
132
121
|
var result = (value * src.unitDef.factor_to_base) / tgt.unitDef.factor_to_base;
|
|
133
|
-
return Number(result.toFixed(
|
|
122
|
+
return Number(result.toFixed(this.decimalDigitsPrecision));
|
|
134
123
|
};
|
|
135
124
|
/**
|
|
136
125
|
* Return the unit label for a measurement string.
|
|
@@ -186,20 +175,6 @@ var MeasurementConverter = /** @class */ (function () {
|
|
|
186
175
|
}
|
|
187
176
|
return { family: family, unit: unit, unitDef: unitDef };
|
|
188
177
|
};
|
|
189
|
-
/**
|
|
190
|
-
* Number of decimal digits to round conversion results.
|
|
191
|
-
*
|
|
192
|
-
* Default is 6 decimal digits, which provides precision up to 0.000001 (1e-06).
|
|
193
|
-
* This handles floating-point arithmetic issues common in unit conversions.
|
|
194
|
-
*
|
|
195
|
-
* Examples:
|
|
196
|
-
* - 1.3 L to ml = 1300.0 (instead of 1300.0000000000002)
|
|
197
|
-
* - 1/3 percent to fraction = 0.003333 (instead of 0.003333333333333334)
|
|
198
|
-
*
|
|
199
|
-
* Can be overridden via environment variable:
|
|
200
|
-
* MEASUREMENT_CONVERTER_DEFAULT_DECIMAL_DIGITS_PRECISION=8
|
|
201
|
-
*/
|
|
202
|
-
MeasurementConverter.DEFAULT_DECIMAL_DIGITS_PRECISION = DEFAULT_DECIMAL_DIGITS_PRECISION;
|
|
203
178
|
return MeasurementConverter;
|
|
204
179
|
}());
|
|
205
180
|
exports.MeasurementConverter = MeasurementConverter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measurement-converter.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAyC;AACzC,0FAA6E;AAuB7E,IAAM,uBAAuB,GAAsC;IACjE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACvC,oBAAoB,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,CAAC;YAChB,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;oBAC3C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,EAAE;wBACZ,aAAa,EAAE,CAAC;wBAChB,oBAAoB,EAAE;4BACpB,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE;gCACvD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC1B;4BACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC;4BACrC,oBAAoB,EAAE,KAAK;yBAC5B;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;gBAChC,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC7C,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"measurement-converter.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,59 +13,59 @@ describe('MeasurementConverter', function () {
|
|
|
13
13
|
});
|
|
14
14
|
describe('convert', function () {
|
|
15
15
|
it('should convert ml to l', function () {
|
|
16
|
-
expect(converter.convert(1000, 'volume.ml', 'volume.l')).toBeCloseTo(1,
|
|
16
|
+
expect(converter.convert(1000, 'volume.ml', 'volume.l')).toBeCloseTo(1, 6);
|
|
17
17
|
});
|
|
18
18
|
it('should convert zero values', function () {
|
|
19
19
|
expect(converter.convert(0, 'volume.ml', 'volume.l')).toBe(0);
|
|
20
20
|
});
|
|
21
21
|
it('should convert ml to cl', function () {
|
|
22
|
-
expect(converter.convert(100, 'volume.ml', 'volume.cl')).toBeCloseTo(10,
|
|
22
|
+
expect(converter.convert(100, 'volume.ml', 'volume.cl')).toBeCloseTo(10, 6);
|
|
23
23
|
});
|
|
24
24
|
it('should convert g to kg', function () {
|
|
25
|
-
expect(converter.convert(2000, 'weight.g', 'weight.kg')).toBeCloseTo(2,
|
|
25
|
+
expect(converter.convert(2000, 'weight.g', 'weight.kg')).toBeCloseTo(2, 6);
|
|
26
26
|
});
|
|
27
27
|
it('should convert percent to fraction', function () {
|
|
28
|
-
expect(converter.convert(50, 'percent.percent', 'percent.fraction')).toBeCloseTo(0.5,
|
|
28
|
+
expect(converter.convert(50, 'percent.percent', 'percent.fraction')).toBeCloseTo(0.5, 6);
|
|
29
29
|
});
|
|
30
30
|
it('should convert rational to fraction', function () {
|
|
31
|
-
expect(converter.convert(1 / 3, 'percent.percent', 'percent.fraction')).toBeCloseTo(0.003333,
|
|
31
|
+
expect(converter.convert(1 / 3, 'percent.percent', 'percent.fraction')).toBeCloseTo(0.003333, 6);
|
|
32
32
|
});
|
|
33
33
|
it('should convert units to units', function () {
|
|
34
|
-
expect(converter.convert(100, 'units.unit', 'units.unit')).toBeCloseTo(100,
|
|
34
|
+
expect(converter.convert(100, 'units.unit', 'units.unit')).toBeCloseTo(100, 6);
|
|
35
35
|
});
|
|
36
36
|
it('should convert mg to g', function () {
|
|
37
|
-
expect(converter.convert(1000, 'weight.mg', 'weight.g')).toBeCloseTo(1,
|
|
37
|
+
expect(converter.convert(1000, 'weight.mg', 'weight.g')).toBeCloseTo(1, 6);
|
|
38
38
|
});
|
|
39
39
|
it('should convert oz to g', function () {
|
|
40
|
-
expect(converter.convert(1, 'weight.oz', 'weight.g')).toBeCloseTo(28.349523,
|
|
40
|
+
expect(converter.convert(1, 'weight.oz', 'weight.g')).toBeCloseTo(28.349523, 6);
|
|
41
41
|
});
|
|
42
42
|
it('should convert ml to fl_oz_us', function () {
|
|
43
|
-
expect(converter.convert(29.57353, 'volume.ml', 'volume.fl_oz_us')).toBeCloseTo(1,
|
|
43
|
+
expect(converter.convert(29.57353, 'volume.ml', 'volume.fl_oz_us')).toBeCloseTo(1, 6);
|
|
44
44
|
});
|
|
45
45
|
it('should convert gallon_us to l', function () {
|
|
46
|
-
expect(converter.convert(1, 'volume.gallon_us', 'volume.l')).toBeCloseTo(3.785412,
|
|
46
|
+
expect(converter.convert(1, 'volume.gallon_us', 'volume.l')).toBeCloseTo(3.785412, 6);
|
|
47
47
|
});
|
|
48
48
|
it('should convert ml to quart_us', function () {
|
|
49
|
-
expect(converter.convert(1, 'volume.ml', 'volume.quart_us')).toBeCloseTo(0.001057,
|
|
49
|
+
expect(converter.convert(1, 'volume.ml', 'volume.quart_us')).toBeCloseTo(0.001057, 6);
|
|
50
50
|
});
|
|
51
51
|
it('should convert inch to cm', function () {
|
|
52
|
-
expect(converter.convert(1, 'length.inch', 'length.cm')).toBeCloseTo(2.54,
|
|
52
|
+
expect(converter.convert(1, 'length.inch', 'length.cm')).toBeCloseTo(2.54, 6);
|
|
53
53
|
});
|
|
54
54
|
it('should convert mile to km', function () {
|
|
55
|
-
expect(converter.convert(1, 'length.mile', 'length.km')).toBeCloseTo(1.609344,
|
|
55
|
+
expect(converter.convert(1, 'length.mile', 'length.km')).toBeCloseTo(1.609344, 6);
|
|
56
56
|
});
|
|
57
57
|
it('should convert mb to gb', function () {
|
|
58
|
-
expect(converter.convert(1000, 'data.mb', 'data.gb')).toBeCloseTo(0.977,
|
|
58
|
+
expect(converter.convert(1000, 'data.mb', 'data.gb')).toBeCloseTo(0.977, 6);
|
|
59
59
|
});
|
|
60
60
|
it('should convert tb to gb', function () {
|
|
61
|
-
expect(converter.convert(1, 'data.tb', 'data.gb')).toBeCloseTo(1024,
|
|
61
|
+
expect(converter.convert(1, 'data.tb', 'data.gb')).toBeCloseTo(1024, 6);
|
|
62
62
|
});
|
|
63
63
|
it('should convert kbps to mbps', function () {
|
|
64
|
-
expect(converter.convert(1000, 'internet_speed.kbps', 'internet_speed.mbps')).toBeCloseTo(1,
|
|
64
|
+
expect(converter.convert(1000, 'internet_speed.kbps', 'internet_speed.mbps')).toBeCloseTo(1, 6);
|
|
65
65
|
});
|
|
66
66
|
it('should convert large numbers', function () {
|
|
67
|
-
expect(converter.convert(666666666666.666666666, 'volume.l', 'volume.ml')).toBeCloseTo(666666666666666.666666,
|
|
68
|
-
expect(converter.convert(66666666666666.666666, 'volume.ml', 'volume.l')).toBeCloseTo(66666666666.666666,
|
|
67
|
+
expect(converter.convert(666666666666.666666666, 'volume.l', 'volume.ml')).toBeCloseTo(666666666666666.666666, 6);
|
|
68
|
+
expect(converter.convert(66666666666666.666666, 'volume.ml', 'volume.l')).toBeCloseTo(66666666666.666666, 6);
|
|
69
69
|
});
|
|
70
70
|
it('should handle JavaScript floating point precision issues', function () {
|
|
71
71
|
// 0.1 + 0.2 = 0.30000000000000004 in JS
|
|
@@ -81,11 +81,11 @@ describe('MeasurementConverter', function () {
|
|
|
81
81
|
it('should handle repeating decimals', function () {
|
|
82
82
|
// 1/3 = 0.333333...
|
|
83
83
|
var result = converter.convert(1 / 3, 'volume.l', 'volume.ml');
|
|
84
|
-
expect(result).toBeCloseTo(333.333333,
|
|
84
|
+
expect(result).toBeCloseTo(333.333333, 6);
|
|
85
85
|
});
|
|
86
86
|
it('should handle very small numbers', function () {
|
|
87
87
|
var result = converter.convert(0.000001, 'volume.l', 'volume.ml');
|
|
88
|
-
expect(result).toBeCloseTo(0.001,
|
|
88
|
+
expect(result).toBeCloseTo(0.001, 6);
|
|
89
89
|
});
|
|
90
90
|
it('should handle negative floating point precision', function () {
|
|
91
91
|
var result = converter.convert(-0.1, 'volume.l', 'volume.ml');
|
|
@@ -129,9 +129,6 @@ describe('MeasurementConverter', function () {
|
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
131
|
describe('precision', function () {
|
|
132
|
-
it('should have DEFAULT_DECIMAL_DIGITS_PRECISION of 6', function () {
|
|
133
|
-
expect(measurement_converter_1.MeasurementConverter.DEFAULT_DECIMAL_DIGITS_PRECISION).toBe(6);
|
|
134
|
-
});
|
|
135
132
|
it('should maintain precision for common conversions', function () {
|
|
136
133
|
// Test common conversions that might have precision issues
|
|
137
134
|
expect(converter.convert(1.5, 'volume.l', 'volume.ml')).toBe(1500);
|
|
@@ -141,12 +138,12 @@ describe('MeasurementConverter', function () {
|
|
|
141
138
|
it('should handle division precision', function () {
|
|
142
139
|
// 1/3 percent to fraction
|
|
143
140
|
var result = converter.convert(1 / 3, 'percent.percent', 'percent.fraction');
|
|
144
|
-
expect(result).toBeCloseTo(0.003333,
|
|
141
|
+
expect(result).toBeCloseTo(0.003333, 6);
|
|
145
142
|
});
|
|
146
143
|
it('should handle multiplication precision', function () {
|
|
147
144
|
// Test multiplication doesn't accumulate errors
|
|
148
145
|
var result = converter.convert(999.999, 'volume.ml', 'volume.l');
|
|
149
|
-
expect(result).toBeCloseTo(0.999999,
|
|
146
|
+
expect(result).toBeCloseTo(0.999999, 6);
|
|
150
147
|
});
|
|
151
148
|
});
|
|
152
149
|
describe('listAllMeasurements', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measurement-converter.test.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.test.ts"],"names":[],"mappings":";;AAAA,iEAA8D;AAE9D,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,IAAI,SAA+B,CAAA;IAEnC,UAAU,CAAC;QACT,SAAS,GAAG,IAAI,4CAAoB,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE;QACrB,EAAE,CAAC,yBAAyB,EAAE;YAC5B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE;QAClB,EAAE,CAAC,wBAAwB,EAAE;YAC3B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"measurement-converter.test.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.test.ts"],"names":[],"mappings":"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"}
|