@etainabl/nodejs-sdk 1.0.19 → 1.1.1
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/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/units.d.ts +24 -0
- package/dist/units.js +65 -0
- package/dist/units.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +3 -1
- package/src/units.ts +82 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ import consumption from './consumption.js';
|
|
|
3
3
|
import logger from './logger.js';
|
|
4
4
|
import db from './db.js';
|
|
5
5
|
import slack from './slack.js';
|
|
6
|
-
|
|
6
|
+
import units from './units.js';
|
|
7
|
+
export { api, logger, consumption, db, slack, units };
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,6 @@ import consumption from './consumption.js';
|
|
|
3
3
|
import logger from './logger.js';
|
|
4
4
|
import db from './db.js';
|
|
5
5
|
import slack from './slack.js';
|
|
6
|
-
|
|
6
|
+
import units from './units.js';
|
|
7
|
+
export { api, logger, consumption, db, slack, units };
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,GAAG,EACH,MAAM,EACN,WAAW,EACX,EAAE,EACF,KAAK,EACN,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,GAAG,EACH,MAAM,EACN,WAAW,EACX,EAAE,EACF,KAAK,EACL,KAAK,EACN,CAAA"}
|
package/dist/units.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
interface Item {
|
|
2
|
+
units: string | null;
|
|
3
|
+
unit: string | null;
|
|
4
|
+
factor: number | null;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
export declare type AccountType = 'electricity' | 'gas' | 'water' | 'waste' | 'solar' | 'heating' | 'flow' | 'cooling' | 'temperature';
|
|
8
|
+
export declare type ETNUnit = 'kwh' | 'kg' | 'm3' | 'lbs' | 'tonnes' | 'wh' | 'mwh' | 'ft3' | 'hcf' | 'm3/h' | 'wh' | 'qty' | 'l' | 'C';
|
|
9
|
+
export declare type BaseUnit = 'kwh' | 'm3' | 'C' | 'kg' | 'm3/h';
|
|
10
|
+
export declare const convertItems: (items: Item[], type: AccountType) => {
|
|
11
|
+
value: number;
|
|
12
|
+
units: string | null;
|
|
13
|
+
unit: string | null;
|
|
14
|
+
factor: number | null;
|
|
15
|
+
}[];
|
|
16
|
+
declare const _default: {
|
|
17
|
+
convertItems: (items: Item[], type: AccountType) => {
|
|
18
|
+
value: number;
|
|
19
|
+
units: string | null;
|
|
20
|
+
unit: string | null;
|
|
21
|
+
factor: number | null;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
export default _default;
|
package/dist/units.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const accountTypeMap = {
|
|
2
|
+
electricity: 'kwh',
|
|
3
|
+
gas: 'kwh',
|
|
4
|
+
water: 'm3',
|
|
5
|
+
waste: 'kg',
|
|
6
|
+
solar: 'kwh',
|
|
7
|
+
heating: 'kwh',
|
|
8
|
+
flow: 'm3/h',
|
|
9
|
+
cooling: 'kwh',
|
|
10
|
+
temperature: 'C'
|
|
11
|
+
};
|
|
12
|
+
const unitConversionFactors = {
|
|
13
|
+
kwh: {
|
|
14
|
+
kwh: 1,
|
|
15
|
+
mwh: 1000,
|
|
16
|
+
wh: 0.001,
|
|
17
|
+
m3: (39 * 1.02264) / 3.6,
|
|
18
|
+
ft3: (0.0283 * 39 * 1.02264) / 3.6,
|
|
19
|
+
hcf: (2.83 * 39 * 1.02264) / 3.6
|
|
20
|
+
},
|
|
21
|
+
m3: {
|
|
22
|
+
m3: 1,
|
|
23
|
+
l: 0.001
|
|
24
|
+
},
|
|
25
|
+
C: {
|
|
26
|
+
C: 1
|
|
27
|
+
},
|
|
28
|
+
kg: {
|
|
29
|
+
kg: 1,
|
|
30
|
+
lbs: 0.45359237,
|
|
31
|
+
tonnes: 1000
|
|
32
|
+
},
|
|
33
|
+
'm3/h': {
|
|
34
|
+
'm3/h': 1
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
// Convert units to base format
|
|
38
|
+
export const convertItems = (items, type) => {
|
|
39
|
+
if (!type)
|
|
40
|
+
throw new Error('Account type is required');
|
|
41
|
+
const baseUnit = accountTypeMap[type];
|
|
42
|
+
if (!baseUnit)
|
|
43
|
+
throw new Error(`Account type ${type} is not supported`);
|
|
44
|
+
const convertedItems = items.map(item => {
|
|
45
|
+
const factor = item.factor || 1;
|
|
46
|
+
const units = item.units || item.unit || baseUnit;
|
|
47
|
+
const convertedValue = item.value * _getConversionFactor(units, baseUnit) * factor;
|
|
48
|
+
return { ...item, value: convertedValue };
|
|
49
|
+
});
|
|
50
|
+
return convertedItems;
|
|
51
|
+
};
|
|
52
|
+
const _getConversionFactor = (fromUnit = 'kwh', toUnit) => {
|
|
53
|
+
const conversionFactors = unitConversionFactors[toUnit];
|
|
54
|
+
if (!conversionFactors) {
|
|
55
|
+
throw new Error(`Conversion factor base unit ${toUnit} is not defined`);
|
|
56
|
+
}
|
|
57
|
+
if (!conversionFactors[fromUnit]) {
|
|
58
|
+
throw new Error(`Conversion factor from unit ${fromUnit} is not defined`);
|
|
59
|
+
}
|
|
60
|
+
return conversionFactors[fromUnit];
|
|
61
|
+
};
|
|
62
|
+
export default {
|
|
63
|
+
convertItems
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../src/units.ts"],"names":[],"mappings":"AAUA,MAAM,cAAc,GAAgC;IAClD,WAAW,EAAE,KAAK;IAClB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,MAAM,qBAAqB,GAA2B;IACpD,GAAG,EAAE;QACH,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAI;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG;QACxB,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG;QAClC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG;KACjC;IACD,EAAE,EAAE;QACF,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,KAAK;KACT;IACD,CAAC,EAAE;QACD,CAAC,EAAE,CAAC;KACL;IACD,EAAE,EAAE;QACF,EAAE,EAAE,CAAC;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,IAAI;KACb;IACD,MAAM,EAAE;QACN,MAAM,EAAE,CAAC;KACV;CACF,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,IAAiB,EAAE,EAAE;IAC/D,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,CAAC;IAExE,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC;QACnF,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAAmB,KAAK,EAAE,MAAc,EAAE,EAAE;IACxE,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAExD,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,iBAAiB,CAAC,CAAC;KACzE;IAED,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,iBAAiB,CAAC,CAAC;KAC3E;IAED,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,eAAe;IACb,YAAY;CACb,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -3,11 +3,13 @@ import consumption from './consumption.js';
|
|
|
3
3
|
import logger from './logger.js';
|
|
4
4
|
import db from './db.js';
|
|
5
5
|
import slack from './slack.js';
|
|
6
|
+
import units from './units.js';
|
|
6
7
|
|
|
7
8
|
export {
|
|
8
9
|
api,
|
|
9
10
|
logger,
|
|
10
11
|
consumption,
|
|
11
12
|
db,
|
|
12
|
-
slack
|
|
13
|
+
slack,
|
|
14
|
+
units
|
|
13
15
|
}
|
package/src/units.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
interface Item {
|
|
2
|
+
units: string | null;
|
|
3
|
+
unit: string | null;
|
|
4
|
+
factor: number | null;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type AccountType = 'electricity' | 'gas' | 'water' | 'waste' | 'solar' | 'heating' | 'flow' | 'cooling' | 'temperature';
|
|
9
|
+
export type ETNUnit = 'kwh' | 'kg' | 'm3' | 'lbs' | 'tonnes' | 'wh' | 'mwh' | 'ft3' | 'hcf' | 'm3/h' | 'wh' | 'qty' | 'l' | 'C';
|
|
10
|
+
export type BaseUnit = 'kwh' | 'm3' | 'C' | 'kg' | 'm3/h';
|
|
11
|
+
const accountTypeMap: { [key: string]: BaseUnit } = {
|
|
12
|
+
electricity: 'kwh',
|
|
13
|
+
gas: 'kwh',
|
|
14
|
+
water: 'm3',
|
|
15
|
+
waste: 'kg',
|
|
16
|
+
solar: 'kwh',
|
|
17
|
+
heating: 'kwh',
|
|
18
|
+
flow: 'm3/h',
|
|
19
|
+
cooling: 'kwh',
|
|
20
|
+
temperature: 'C'
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const unitConversionFactors: { [key: string]: any } = {
|
|
24
|
+
kwh: {
|
|
25
|
+
kwh: 1,
|
|
26
|
+
mwh: 1000,
|
|
27
|
+
wh: 0.001,
|
|
28
|
+
m3: (39 * 1.02264) / 3.6,
|
|
29
|
+
ft3: (0.0283 * 39 * 1.02264) / 3.6,
|
|
30
|
+
hcf: (2.83 * 39 * 1.02264) / 3.6
|
|
31
|
+
},
|
|
32
|
+
m3: {
|
|
33
|
+
m3: 1,
|
|
34
|
+
l: 0.001
|
|
35
|
+
},
|
|
36
|
+
C: {
|
|
37
|
+
C: 1
|
|
38
|
+
},
|
|
39
|
+
kg: {
|
|
40
|
+
kg: 1,
|
|
41
|
+
lbs: 0.45359237,
|
|
42
|
+
tonnes: 1000
|
|
43
|
+
},
|
|
44
|
+
'm3/h': {
|
|
45
|
+
'm3/h': 1
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// Convert units to base format
|
|
50
|
+
export const convertItems = (items: Item[], type: AccountType) => {
|
|
51
|
+
if (!type) throw new Error('Account type is required');
|
|
52
|
+
|
|
53
|
+
const baseUnit = accountTypeMap[type];
|
|
54
|
+
if (!baseUnit) throw new Error(`Account type ${type} is not supported`);
|
|
55
|
+
|
|
56
|
+
const convertedItems = items.map(item => {
|
|
57
|
+
const factor = item.factor || 1;
|
|
58
|
+
const units = item.units || item.unit || baseUnit;
|
|
59
|
+
const convertedValue = item.value * _getConversionFactor(units, baseUnit) * factor;
|
|
60
|
+
return { ...item, value: convertedValue };
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return convertedItems;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const _getConversionFactor = (fromUnit: string = 'kwh', toUnit: string) => {
|
|
67
|
+
const conversionFactors = unitConversionFactors[toUnit];
|
|
68
|
+
|
|
69
|
+
if (!conversionFactors) {
|
|
70
|
+
throw new Error(`Conversion factor base unit ${toUnit} is not defined`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!conversionFactors[fromUnit]) {
|
|
74
|
+
throw new Error(`Conversion factor from unit ${fromUnit} is not defined`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return conversionFactors[fromUnit];
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default {
|
|
81
|
+
convertItems
|
|
82
|
+
};
|