@carbonbox/domain 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.js +11 -2
- package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionCountryError.js +20 -0
- package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionCountry.js +41 -0
- package/build/carbonbox/emission-calculation-formulas/domain/entity/EmissionCalculationFormula.js +1 -1
- package/build/carbonbox/emission-calculation-formulas/domain/value-objects/EmissionCalculationFormulaApplicableGreenhouseGases.js +30 -215
- package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorGreenhouseGasValues.js +16 -11
- package/build/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/value-objects/GlobalWarmingPotentialGreenhouseGasPotentials.js +18 -13
- package/build/carbonbox/emission-calculation-results/emission-aggregations/domain/value-objects/EmissionAggregationGhgBreakdown.js +52 -109
- package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/entity/GHGEmissionResult.js +9 -4
- package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGreenhouseGas.js +44 -160
- package/build/carbonbox/shared/domain/enums/GreenhouseGasCategory.js +15 -0
- package/build/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.js +50 -0
- package/build/main/index.js +24 -20
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts +2 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts.map +1 -1
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts +2 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts.map +1 -1
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionCountryError.d.ts +7 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionCountryError.d.ts.map +1 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts +2 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts +2 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts.map +1 -1
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionCountry.d.ts +18 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionCountry.d.ts.map +1 -0
- package/build/types/carbonbox/emission-calculation-formulas/domain/types/EmissionCalculationFormulaPrimitives.d.ts +1 -2
- package/build/types/carbonbox/emission-calculation-formulas/domain/types/EmissionCalculationFormulaPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/domain/types/EmissionCalculationFormulaProps.d.ts +1 -2
- package/build/types/carbonbox/emission-calculation-formulas/domain/types/EmissionCalculationFormulaProps.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/domain/value-objects/EmissionCalculationFormulaApplicableGreenhouseGases.d.ts +11 -105
- package/build/types/carbonbox/emission-calculation-formulas/domain/value-objects/EmissionCalculationFormulaApplicableGreenhouseGases.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/GHGFactorValue.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/GHGFactorValue.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/GHGFactorValuePrimitives.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/GHGFactorValuePrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorGreenhouseGasValues.d.ts +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorGreenhouseGasValues.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/types/GHGPotentialValue.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/types/GHGPotentialValue.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/types/GHGPotentialValuePrimitives.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/types/GHGPotentialValuePrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/value-objects/GlobalWarmingPotentialGreenhouseGasPotentials.d.ts +2 -2
- package/build/types/carbonbox/emission-calculation-formulas/global-warming-potentials/domain/value-objects/GlobalWarmingPotentialGreenhouseGasPotentials.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/types/GHGBreakdown.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/types/GHGBreakdown.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/types/GHGBreakdownPrimitives.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/types/GHGBreakdownPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/value-objects/EmissionAggregationGhgBreakdown.d.ts +9 -80
- package/build/types/carbonbox/emission-calculation-results/emission-aggregations/domain/value-objects/EmissionAggregationGhgBreakdown.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/entity/GHGEmissionResult.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultPrimitives.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultProps.d.ts +3 -2
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultProps.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGreenhouseGas.d.ts +22 -89
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGreenhouseGas.d.ts.map +1 -1
- package/build/types/carbonbox/shared/domain/enums/GreenhouseGasCategory.d.ts +12 -0
- package/build/types/carbonbox/shared/domain/enums/GreenhouseGasCategory.d.ts.map +1 -0
- package/build/types/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.d.ts +24 -0
- package/build/types/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.d.ts.map +1 -0
- package/build/types/main/index.d.ts +4 -1
- package/build/types/main/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/build/carbonbox/shared/domain/enums/GreenhouseGas.js +0 -14
- package/build/types/carbonbox/shared/domain/enums/GreenhouseGas.d.ts +0 -11
- package/build/types/carbonbox/shared/domain/enums/GreenhouseGas.d.ts.map +0 -1
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _ActivityDataSubmission_dynamicFormCode, _ActivityDataSubmission_carbonClient, _ActivityDataSubmission_footprintType, _ActivityDataSubmission_footprintConfiguration, _ActivityDataSubmission_segmentConfiguration, _ActivityDataSubmission_filledByStakeholder, _ActivityDataSubmission_fieldResponses, _ActivityDataSubmission_periodStart, _ActivityDataSubmission_periodEnd, _ActivityDataSubmission_overallUncertaintyPercentage, _ActivityDataSubmission_uncertaintySource, _ActivityDataSubmission_dataQualityNotes, _ActivityDataSubmission_reportingStandard, _ActivityDataSubmission_emissionScope, _ActivityDataSubmission_subScope, _ActivityDataSubmission_status, _ActivityDataSubmission_submittedAt, _ActivityDataSubmission_approvedAt, _ActivityDataSubmission_rejectedAt, _ActivityDataSubmission_rejectionReason;
|
|
13
|
+
var _ActivityDataSubmission_dynamicFormCode, _ActivityDataSubmission_carbonClient, _ActivityDataSubmission_footprintType, _ActivityDataSubmission_country, _ActivityDataSubmission_footprintConfiguration, _ActivityDataSubmission_segmentConfiguration, _ActivityDataSubmission_filledByStakeholder, _ActivityDataSubmission_fieldResponses, _ActivityDataSubmission_periodStart, _ActivityDataSubmission_periodEnd, _ActivityDataSubmission_overallUncertaintyPercentage, _ActivityDataSubmission_uncertaintySource, _ActivityDataSubmission_dataQualityNotes, _ActivityDataSubmission_reportingStandard, _ActivityDataSubmission_emissionScope, _ActivityDataSubmission_subScope, _ActivityDataSubmission_status, _ActivityDataSubmission_submittedAt, _ActivityDataSubmission_approvedAt, _ActivityDataSubmission_rejectedAt, _ActivityDataSubmission_rejectionReason;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.ActivityDataSubmission = void 0;
|
|
16
16
|
const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
|
|
@@ -23,6 +23,7 @@ const ActivityDataSubmissionEmissionScope_1 = require("../value-objects/Activity
|
|
|
23
23
|
const ActivityDataSubmissionFieldResponses_1 = require("../value-objects/ActivityDataSubmissionFieldResponses");
|
|
24
24
|
const ActivityDataSubmissionFilledByStakeholder_1 = require("../value-objects/ActivityDataSubmissionFilledByStakeholder");
|
|
25
25
|
const ActivityDataSubmissionFootprintType_1 = require("../value-objects/ActivityDataSubmissionFootprintType");
|
|
26
|
+
const ActivityDataSubmissionCountry_1 = require("../value-objects/ActivityDataSubmissionCountry");
|
|
26
27
|
const ActivityDataSubmissionFootprintConfiguration_1 = require("../value-objects/ActivityDataSubmissionFootprintConfiguration");
|
|
27
28
|
const ActivityDataSubmissionSegmentConfiguration_1 = require("../value-objects/ActivityDataSubmissionSegmentConfiguration");
|
|
28
29
|
const ActivityDataSubmissionPeriodStart_1 = require("../value-objects/ActivityDataSubmissionPeriodStart");
|
|
@@ -45,6 +46,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
45
46
|
_ActivityDataSubmission_dynamicFormCode.set(this, void 0);
|
|
46
47
|
_ActivityDataSubmission_carbonClient.set(this, void 0);
|
|
47
48
|
_ActivityDataSubmission_footprintType.set(this, void 0);
|
|
49
|
+
_ActivityDataSubmission_country.set(this, void 0);
|
|
48
50
|
_ActivityDataSubmission_footprintConfiguration.set(this, void 0);
|
|
49
51
|
_ActivityDataSubmission_segmentConfiguration.set(this, void 0);
|
|
50
52
|
_ActivityDataSubmission_filledByStakeholder.set(this, void 0);
|
|
@@ -66,6 +68,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
66
68
|
__classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.create(props.dynamicFormCode), "f");
|
|
67
69
|
__classPrivateFieldSet(this, _ActivityDataSubmission_carbonClient, ActivityDataSubmissionCarbonClient_1.ActivityDataSubmissionCarbonClient.create(props.carbonClient), "f");
|
|
68
70
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintType, ActivityDataSubmissionFootprintType_1.ActivityDataSubmissionFootprintType.create(props.footprintType), "f");
|
|
71
|
+
__classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.create(props.country), "f");
|
|
69
72
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.create(props.footprintConfiguration), "f");
|
|
70
73
|
__classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.create(props.segmentConfiguration), "f");
|
|
71
74
|
__classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.create(props.filledByStakeholder), "f");
|
|
@@ -89,6 +92,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
89
92
|
__classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.fromPrimitives(props.dynamicFormCode), "f");
|
|
90
93
|
__classPrivateFieldSet(this, _ActivityDataSubmission_carbonClient, ActivityDataSubmissionCarbonClient_1.ActivityDataSubmissionCarbonClient.fromPrimitives(props.carbonClient), "f");
|
|
91
94
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintType, ActivityDataSubmissionFootprintType_1.ActivityDataSubmissionFootprintType.fromPrimitives(props.footprintType), "f");
|
|
95
|
+
__classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.fromPrimitives(props.country), "f");
|
|
92
96
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.fromPrimitives(props.footprintConfiguration), "f");
|
|
93
97
|
__classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.fromPrimitives(props.segmentConfiguration), "f");
|
|
94
98
|
__classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.fromPrimitives(props.filledByStakeholder), "f");
|
|
@@ -133,6 +137,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
133
137
|
dynamicFormCode: primitives.dynamicFormCode,
|
|
134
138
|
carbonClient: primitives.carbonClient,
|
|
135
139
|
footprintType: primitives.footprintType,
|
|
140
|
+
country: primitives.country,
|
|
136
141
|
footprintConfiguration: primitives.footprintConfiguration,
|
|
137
142
|
segmentConfiguration: primitives.segmentConfiguration,
|
|
138
143
|
filledByStakeholder: primitives.filledByStakeholder,
|
|
@@ -159,6 +164,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
159
164
|
dynamicFormCode: __classPrivateFieldGet(this, _ActivityDataSubmission_dynamicFormCode, "f").toPrimitives(),
|
|
160
165
|
carbonClient: __classPrivateFieldGet(this, _ActivityDataSubmission_carbonClient, "f").toPrimitives(),
|
|
161
166
|
footprintType: __classPrivateFieldGet(this, _ActivityDataSubmission_footprintType, "f").toEnum(),
|
|
167
|
+
country: __classPrivateFieldGet(this, _ActivityDataSubmission_country, "f").toEnum(),
|
|
162
168
|
footprintConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_footprintConfiguration, "f").toPrimitives(),
|
|
163
169
|
segmentConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_segmentConfiguration, "f").toPrimitives(),
|
|
164
170
|
filledByStakeholder: __classPrivateFieldGet(this, _ActivityDataSubmission_filledByStakeholder, "f").toPrimitives(),
|
|
@@ -187,6 +193,9 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
187
193
|
get footprintType() {
|
|
188
194
|
return __classPrivateFieldGet(this, _ActivityDataSubmission_footprintType, "f");
|
|
189
195
|
}
|
|
196
|
+
get country() {
|
|
197
|
+
return __classPrivateFieldGet(this, _ActivityDataSubmission_country, "f");
|
|
198
|
+
}
|
|
190
199
|
get footprintConfiguration() {
|
|
191
200
|
return __classPrivateFieldGet(this, _ActivityDataSubmission_footprintConfiguration, "f");
|
|
192
201
|
}
|
|
@@ -240,4 +249,4 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
240
249
|
}
|
|
241
250
|
}
|
|
242
251
|
exports.ActivityDataSubmission = ActivityDataSubmission;
|
|
243
|
-
_ActivityDataSubmission_dynamicFormCode = new WeakMap(), _ActivityDataSubmission_carbonClient = new WeakMap(), _ActivityDataSubmission_footprintType = new WeakMap(), _ActivityDataSubmission_footprintConfiguration = new WeakMap(), _ActivityDataSubmission_segmentConfiguration = new WeakMap(), _ActivityDataSubmission_filledByStakeholder = new WeakMap(), _ActivityDataSubmission_fieldResponses = new WeakMap(), _ActivityDataSubmission_periodStart = new WeakMap(), _ActivityDataSubmission_periodEnd = new WeakMap(), _ActivityDataSubmission_overallUncertaintyPercentage = new WeakMap(), _ActivityDataSubmission_uncertaintySource = new WeakMap(), _ActivityDataSubmission_dataQualityNotes = new WeakMap(), _ActivityDataSubmission_reportingStandard = new WeakMap(), _ActivityDataSubmission_emissionScope = new WeakMap(), _ActivityDataSubmission_subScope = new WeakMap(), _ActivityDataSubmission_status = new WeakMap(), _ActivityDataSubmission_submittedAt = new WeakMap(), _ActivityDataSubmission_approvedAt = new WeakMap(), _ActivityDataSubmission_rejectedAt = new WeakMap(), _ActivityDataSubmission_rejectionReason = new WeakMap();
|
|
252
|
+
_ActivityDataSubmission_dynamicFormCode = new WeakMap(), _ActivityDataSubmission_carbonClient = new WeakMap(), _ActivityDataSubmission_footprintType = new WeakMap(), _ActivityDataSubmission_country = new WeakMap(), _ActivityDataSubmission_footprintConfiguration = new WeakMap(), _ActivityDataSubmission_segmentConfiguration = new WeakMap(), _ActivityDataSubmission_filledByStakeholder = new WeakMap(), _ActivityDataSubmission_fieldResponses = new WeakMap(), _ActivityDataSubmission_periodStart = new WeakMap(), _ActivityDataSubmission_periodEnd = new WeakMap(), _ActivityDataSubmission_overallUncertaintyPercentage = new WeakMap(), _ActivityDataSubmission_uncertaintySource = new WeakMap(), _ActivityDataSubmission_dataQualityNotes = new WeakMap(), _ActivityDataSubmission_reportingStandard = new WeakMap(), _ActivityDataSubmission_emissionScope = new WeakMap(), _ActivityDataSubmission_subScope = new WeakMap(), _ActivityDataSubmission_status = new WeakMap(), _ActivityDataSubmission_submittedAt = new WeakMap(), _ActivityDataSubmission_approvedAt = new WeakMap(), _ActivityDataSubmission_rejectedAt = new WeakMap(), _ActivityDataSubmission_rejectionReason = new WeakMap();
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidActivityDataSubmissionCountryError = void 0;
|
|
4
|
+
const RootError_1 = require("../../../../shared/domain/exceptions/RootError");
|
|
5
|
+
const CountryCode_1 = require("../../../../shared/domain/enums/CountryCode");
|
|
6
|
+
class InvalidActivityDataSubmissionCountryError extends RootError_1.RootError {
|
|
7
|
+
constructor(receivedValue) {
|
|
8
|
+
const validCountries = Object.values(CountryCode_1.CountryCode).join(', ');
|
|
9
|
+
const message = `Invalid activity data submission country '${receivedValue}': must be a valid ISO CountryCode (one of ${validCountries}).`;
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'InvalidActivityDataSubmissionCountryError';
|
|
12
|
+
}
|
|
13
|
+
static create(receivedValue) {
|
|
14
|
+
return new InvalidActivityDataSubmissionCountryError(receivedValue);
|
|
15
|
+
}
|
|
16
|
+
logError() {
|
|
17
|
+
return `${this.name}: ${this.message}`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.InvalidActivityDataSubmissionCountryError = InvalidActivityDataSubmissionCountryError;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityDataSubmissionCountry = void 0;
|
|
4
|
+
const CountryCode_1 = require("../../../../shared/domain/enums/CountryCode");
|
|
5
|
+
const String_1 = require("../../../../shared/domain/value-objects/String");
|
|
6
|
+
const InvalidActivityDataSubmissionCountryError_1 = require("../exceptions/InvalidActivityDataSubmissionCountryError");
|
|
7
|
+
/**
|
|
8
|
+
* CAL-013: país (ISO `CountryCode`) de la actividad reportada en el submission.
|
|
9
|
+
* Se usa para seleccionar el `countryValue` correcto del Emission Factor en el
|
|
10
|
+
* motor de cálculo (junto con la vigencia del período). Tipado fuerte contra el
|
|
11
|
+
* enum `CountryCode` para garantizar match confiable con `countryValue.country`.
|
|
12
|
+
*/
|
|
13
|
+
class ActivityDataSubmissionCountry extends String_1.String {
|
|
14
|
+
constructor(value, skipDomainValidation) {
|
|
15
|
+
super(value, skipDomainValidation, ActivityDataSubmissionCountry.PROPERTY_NAME);
|
|
16
|
+
if (skipDomainValidation === false) {
|
|
17
|
+
this.validateCountry(value);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static create(value) {
|
|
21
|
+
String_1.String.guardAgainstEmptyValue(value, ActivityDataSubmissionCountry.PROPERTY_NAME);
|
|
22
|
+
String_1.String.guardAgainstInvalidType(value, ActivityDataSubmissionCountry.PROPERTY_NAME);
|
|
23
|
+
return new ActivityDataSubmissionCountry(value, false);
|
|
24
|
+
}
|
|
25
|
+
static fromPrimitives(primitive) {
|
|
26
|
+
return new ActivityDataSubmissionCountry(primitive, true);
|
|
27
|
+
}
|
|
28
|
+
validateCountry(value) {
|
|
29
|
+
if (!Object.values(CountryCode_1.CountryCode).includes(value)) {
|
|
30
|
+
throw InvalidActivityDataSubmissionCountryError_1.InvalidActivityDataSubmissionCountryError.create(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
toPrimitives() {
|
|
34
|
+
return this.value;
|
|
35
|
+
}
|
|
36
|
+
toEnum() {
|
|
37
|
+
return this.value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.ActivityDataSubmissionCountry = ActivityDataSubmissionCountry;
|
|
41
|
+
ActivityDataSubmissionCountry.PROPERTY_NAME = 'country';
|
package/build/carbonbox/emission-calculation-formulas/domain/entity/EmissionCalculationFormula.js
CHANGED
|
@@ -134,7 +134,7 @@ class EmissionCalculationFormula extends AggregateRoot_1.AggregateRoot {
|
|
|
134
134
|
expression: __classPrivateFieldGet(this, _EmissionCalculationFormula_expression, "f").toPrimitives(),
|
|
135
135
|
resultUnit: __classPrivateFieldGet(this, _EmissionCalculationFormula_resultUnit, "f").toEnum(),
|
|
136
136
|
status: __classPrivateFieldGet(this, _EmissionCalculationFormula_status, "f").toEnum(),
|
|
137
|
-
applicableGreenhouseGases: __classPrivateFieldGet(this, _EmissionCalculationFormula_applicableGreenhouseGases, "f").
|
|
137
|
+
applicableGreenhouseGases: __classPrivateFieldGet(this, _EmissionCalculationFormula_applicableGreenhouseGases, "f").toPrimitives(),
|
|
138
138
|
emissionSource: __classPrivateFieldGet(this, _EmissionCalculationFormula_emissionSource, "f").toEnum(),
|
|
139
139
|
variables: __classPrivateFieldGet(this, _EmissionCalculationFormula_variables, "f").toPrimitives(),
|
|
140
140
|
activityVariableSymbol: __classPrivateFieldGet(this, _EmissionCalculationFormula_activityVariableSymbol, "f").toPrimitives(),
|
|
@@ -1,248 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _a, _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstInvalidGreenhouseGasTypes, _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstDuplicateGreenhouseGases;
|
|
8
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
3
|
exports.EmissionCalculationFormulaApplicableGreenhouseGases = void 0;
|
|
10
4
|
const StringList_1 = require("../../../shared/domain/value-objects/StringList");
|
|
11
|
-
const
|
|
12
|
-
const InvalidGreenhouseGasTypeError_1 = require("../exceptions/InvalidGreenhouseGasTypeError");
|
|
5
|
+
const GreenhouseGasSpecies_1 = require("../../../shared/domain/value-objects/GreenhouseGasSpecies");
|
|
13
6
|
const DuplicateGreenhouseGasError_1 = require("../exceptions/DuplicateGreenhouseGasError");
|
|
7
|
+
/**
|
|
8
|
+
* Especies de gas a las que aplica una fórmula (códigos normalizados: `CO2`, `CH4-FOSSIL`, `R-410A`…).
|
|
9
|
+
* La categoría de cada especie NO se guarda aquí: se resuelve desde el dato de referencia
|
|
10
|
+
* (EmissionFactor / GlobalWarmingPotential), que es la fuente de verdad de la taxonomía.
|
|
11
|
+
* Vacío = la fórmula aplica a toda submission del emissionSource (semántica CAL-007 preservada).
|
|
12
|
+
*/
|
|
14
13
|
class EmissionCalculationFormulaApplicableGreenhouseGases extends StringList_1.StringList {
|
|
15
14
|
constructor(value, skipDomainValidation) {
|
|
16
|
-
super(value, skipDomainValidation,
|
|
15
|
+
super(value, skipDomainValidation, EmissionCalculationFormulaApplicableGreenhouseGases.PROPERTY_NAME, { allowEmpty: false });
|
|
17
16
|
if (skipDomainValidation === false) {
|
|
18
|
-
|
|
19
|
-
_a.guardAgainstInvalidGreenhouseGases(value);
|
|
17
|
+
EmissionCalculationFormulaApplicableGreenhouseGases.guardAgainstDuplicateSpecies(value);
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Factory method para crear una instancia.
|
|
24
|
-
*/
|
|
25
20
|
static create(value) {
|
|
26
|
-
StringList_1.StringList.guardAgainstInvalidStringList(value,
|
|
27
|
-
|
|
21
|
+
StringList_1.StringList.guardAgainstInvalidStringList(value, EmissionCalculationFormulaApplicableGreenhouseGases.PROPERTY_NAME);
|
|
22
|
+
// Normaliza + valida cada especie por el VO compartido (trim + colapsar espacios + UPPERCASE).
|
|
23
|
+
const normalized = value.map((species) => GreenhouseGasSpecies_1.GreenhouseGasSpecies.create(species).toPrimitives());
|
|
24
|
+
return new EmissionCalculationFormulaApplicableGreenhouseGases(normalized, false);
|
|
28
25
|
}
|
|
29
26
|
static fromPrimitives(primitives) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
return new EmissionCalculationFormulaApplicableGreenhouseGases([...primitives], true);
|
|
28
|
+
}
|
|
29
|
+
static guardAgainstDuplicateSpecies(value) {
|
|
30
|
+
const counts = new Map();
|
|
31
|
+
value.forEach((species) => counts.set(species, (counts.get(species) || 0) + 1));
|
|
32
|
+
const duplicates = [...counts.entries()].filter(([, count]) => count > 1).map(([species]) => species);
|
|
33
|
+
if (duplicates.length > 0) {
|
|
34
|
+
throw DuplicateGreenhouseGasError_1.DuplicateGreenhouseGasError.create(EmissionCalculationFormulaApplicableGreenhouseGases.PROPERTY_NAME, duplicates);
|
|
35
|
+
}
|
|
39
36
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Convierte a representación primitiva.
|
|
42
|
-
*/
|
|
43
37
|
toPrimitives() {
|
|
44
38
|
return [...this.value];
|
|
45
39
|
}
|
|
46
|
-
|
|
47
|
-
* Obtiene los greenhouse gas types como array de enums.
|
|
48
|
-
*/
|
|
49
|
-
toEnums() {
|
|
50
|
-
return this.value;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Obtiene los greenhouse gas types como array de strings.
|
|
54
|
-
*/
|
|
55
|
-
toGreenhouseGasTypeStrings() {
|
|
56
|
-
return [...this.value];
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Verifica si contiene un greenhouse gas type específico.
|
|
60
|
-
*/
|
|
61
|
-
contains(gasType) {
|
|
62
|
-
return this.value.includes(gasType);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Obtiene los greenhouse gases como array inmutable.
|
|
66
|
-
*/
|
|
67
|
-
get greenhouseGases() {
|
|
40
|
+
get speciesCodes() {
|
|
68
41
|
return Object.freeze([...this.value]);
|
|
69
42
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
43
|
+
contains(species) {
|
|
44
|
+
return this.value.includes(GreenhouseGasSpecies_1.GreenhouseGasSpecies.normalize(species));
|
|
45
|
+
}
|
|
73
46
|
get length() {
|
|
74
47
|
return this.value.length;
|
|
75
48
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Verifica si la colección está vacía.
|
|
78
|
-
*/
|
|
79
49
|
isEmpty() {
|
|
80
50
|
return this.value.length === 0;
|
|
81
51
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Verifica si la colección tiene valores.
|
|
84
|
-
*/
|
|
85
52
|
hasValues() {
|
|
86
53
|
return !this.isEmpty();
|
|
87
54
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
*/
|
|
91
|
-
includesAllOf(gasTypes) {
|
|
92
|
-
return gasTypes.every((gasType) => this.contains(gasType));
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Verifica si incluye alguno de los greenhouse gas types especificados.
|
|
96
|
-
*/
|
|
97
|
-
includesAnyOf(gasTypes) {
|
|
98
|
-
return gasTypes.some((gasType) => this.contains(gasType));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Obtiene los greenhouse gas types comunes con otra colección.
|
|
102
|
-
*/
|
|
103
|
-
getCommonGases(other) {
|
|
104
|
-
return this.value.filter((gas) => other.contains(gas));
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Obtiene los greenhouse gas types únicos de esta colección comparado con otra.
|
|
108
|
-
*/
|
|
109
|
-
getUniqueGases(other) {
|
|
110
|
-
return this.value.filter((gas) => !other.contains(gas));
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Verifica si contiene CO2.
|
|
114
|
-
*/
|
|
115
|
-
hasCO2() {
|
|
116
|
-
return this.contains(GreenhouseGas_1.GreenhouseGas.CO2);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Verifica si contiene CH4 (metano).
|
|
120
|
-
*/
|
|
121
|
-
hasMethane() {
|
|
122
|
-
return this.contains(GreenhouseGas_1.GreenhouseGas.CH4);
|
|
55
|
+
includesAllOf(species) {
|
|
56
|
+
return species.every((current) => this.contains(current));
|
|
123
57
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*/
|
|
127
|
-
hasNitrousOxide() {
|
|
128
|
-
return this.contains(GreenhouseGas_1.GreenhouseGas.N2O);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Verifica si contiene gases fluorados (HFCs, PFCs, SF6, NF3).
|
|
132
|
-
*/
|
|
133
|
-
hasFluorinatedGases() {
|
|
134
|
-
const fluorinatedGases = [
|
|
135
|
-
GreenhouseGas_1.GreenhouseGas.HFC134a,
|
|
136
|
-
GreenhouseGas_1.GreenhouseGas.SF6,
|
|
137
|
-
GreenhouseGas_1.GreenhouseGas.NF3,
|
|
138
|
-
];
|
|
139
|
-
return fluorinatedGases.some((gas) => this.contains(gas));
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Verifica si contiene solo los tres gases principales del Protocolo de Kyoto.
|
|
143
|
-
*/
|
|
144
|
-
hasOnlyKyotoMainGases() {
|
|
145
|
-
const kyotoMainGases = [GreenhouseGas_1.GreenhouseGas.CO2, GreenhouseGas_1.GreenhouseGas.CH4, GreenhouseGas_1.GreenhouseGas.N2O];
|
|
146
|
-
return this.value.length === 3 && this.includesAllOf(kyotoMainGases);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Verifica si incluye todos los gases del Protocolo de Kyoto.
|
|
150
|
-
*/
|
|
151
|
-
includesAllKyotoGases() {
|
|
152
|
-
const allKyotoGases = Object.values(GreenhouseGas_1.GreenhouseGas);
|
|
153
|
-
return this.includesAllOf(allKyotoGases);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Obtiene los gases por categoría de potencial de calentamiento.
|
|
157
|
-
*/
|
|
158
|
-
getGasesByWarmingPotentialCategory() {
|
|
159
|
-
const lowPotential = [];
|
|
160
|
-
const mediumPotential = [];
|
|
161
|
-
const highPotential = [];
|
|
162
|
-
this.value.forEach((gas) => {
|
|
163
|
-
const gasType = gas;
|
|
164
|
-
switch (gasType) {
|
|
165
|
-
case GreenhouseGas_1.GreenhouseGas.CO2:
|
|
166
|
-
lowPotential.push(gasType);
|
|
167
|
-
break;
|
|
168
|
-
case GreenhouseGas_1.GreenhouseGas.CH4:
|
|
169
|
-
case GreenhouseGas_1.GreenhouseGas.N2O:
|
|
170
|
-
mediumPotential.push(gasType);
|
|
171
|
-
break;
|
|
172
|
-
default:
|
|
173
|
-
highPotential.push(gasType);
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
return {
|
|
178
|
-
lowPotential,
|
|
179
|
-
mediumPotential,
|
|
180
|
-
highPotential,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Obtiene la complejidad de la colección basada en el número y tipo de gases.
|
|
185
|
-
*/
|
|
186
|
-
getComplexity() {
|
|
187
|
-
const gasCount = this.length;
|
|
188
|
-
const hasFluorinatedGases = this.hasFluorinatedGases();
|
|
189
|
-
if (gasCount === 1)
|
|
190
|
-
return 'simple';
|
|
191
|
-
if (gasCount <= 3 && !hasFluorinatedGases)
|
|
192
|
-
return 'simple';
|
|
193
|
-
if (gasCount <= 5)
|
|
194
|
-
return 'medium';
|
|
195
|
-
return 'complex';
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Obtiene estadísticas de la colección.
|
|
199
|
-
*/
|
|
200
|
-
getStatistics() {
|
|
201
|
-
return {
|
|
202
|
-
totalGases: this.length,
|
|
203
|
-
hasCO2: this.hasCO2(),
|
|
204
|
-
hasMethane: this.hasMethane(),
|
|
205
|
-
hasNitrousOxide: this.hasNitrousOxide(),
|
|
206
|
-
hasFluorinatedGases: this.hasFluorinatedGases(),
|
|
207
|
-
includesAllKyotoGases: this.includesAllKyotoGases(),
|
|
208
|
-
complexity: this.getComplexity(),
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Representación como string de los greenhouse gas types.
|
|
213
|
-
*/
|
|
214
|
-
toString() {
|
|
215
|
-
return this.value.join(', ');
|
|
58
|
+
includesAnyOf(species) {
|
|
59
|
+
return species.some((current) => this.contains(current));
|
|
216
60
|
}
|
|
217
61
|
}
|
|
218
62
|
exports.EmissionCalculationFormulaApplicableGreenhouseGases = EmissionCalculationFormulaApplicableGreenhouseGases;
|
|
219
|
-
_a = EmissionCalculationFormulaApplicableGreenhouseGases, _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstInvalidGreenhouseGasTypes = function _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstInvalidGreenhouseGasTypes(value) {
|
|
220
|
-
const validGasTypes = Object.values(GreenhouseGas_1.GreenhouseGas);
|
|
221
|
-
const invalidGases = [];
|
|
222
|
-
value.forEach((gas, index) => {
|
|
223
|
-
if (!validGasTypes.includes(gas)) {
|
|
224
|
-
invalidGases.push(`[${index}]: ${gas}`);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
if (invalidGases.length > 0) {
|
|
228
|
-
throw InvalidGreenhouseGasTypeError_1.InvalidGreenhouseGasTypeError.create(_a.PROPERTY_NAME, validGasTypes, invalidGases.join(', '));
|
|
229
|
-
}
|
|
230
|
-
}, _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstDuplicateGreenhouseGases = function _EmissionCalculationFormulaApplicableGreenhouseGases_guardAgainstDuplicateGreenhouseGases(value) {
|
|
231
|
-
const gasTypeCount = new Map();
|
|
232
|
-
const duplicates = [];
|
|
233
|
-
// Contar ocurrencias
|
|
234
|
-
value.forEach((gas) => {
|
|
235
|
-
const count = gasTypeCount.get(gas) || 0;
|
|
236
|
-
gasTypeCount.set(gas, count + 1);
|
|
237
|
-
});
|
|
238
|
-
// Encontrar duplicados
|
|
239
|
-
gasTypeCount.forEach((count, gas) => {
|
|
240
|
-
if (count > 1) {
|
|
241
|
-
duplicates.push(gas);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
if (duplicates.length > 0) {
|
|
245
|
-
throw DuplicateGreenhouseGasError_1.DuplicateGreenhouseGasError.create(_a.PROPERTY_NAME, duplicates);
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
63
|
EmissionCalculationFormulaApplicableGreenhouseGases.PROPERTY_NAME = 'applicableGreenhouseGases';
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EmissionFactorGreenhouseGasValues = void 0;
|
|
4
4
|
const ValueObject_1 = require("../../../../shared/domain/value-objects/ValueObject");
|
|
5
|
-
const
|
|
5
|
+
const GreenhouseGasCategory_1 = require("../../../../shared/domain/enums/GreenhouseGasCategory");
|
|
6
|
+
const GreenhouseGasSpecies_1 = require("../../../../shared/domain/value-objects/GreenhouseGasSpecies");
|
|
6
7
|
const CountryCode_1 = require("../../../../shared/domain/enums/CountryCode");
|
|
7
8
|
const String_1 = require("../../../../shared/domain/value-objects/String");
|
|
8
9
|
const Numeric_1 = require("../../../../shared/domain/value-objects/Numeric");
|
|
@@ -19,7 +20,8 @@ class EmissionFactorGreenhouseGasValues extends ValueObject_1.ValueObject {
|
|
|
19
20
|
}
|
|
20
21
|
static fromPrimitives(primitives) {
|
|
21
22
|
const value = primitives.map((primitive) => ({
|
|
22
|
-
|
|
23
|
+
greenhouseGasCategory: primitive.greenhouseGasCategory,
|
|
24
|
+
greenhouseGasSpecies: primitive.greenhouseGasSpecies,
|
|
23
25
|
countryValues: primitive.countryValues.map((countryValue) => countryValue),
|
|
24
26
|
dataSource: primitive.dataSource,
|
|
25
27
|
unit: primitive.unit,
|
|
@@ -45,14 +47,16 @@ class EmissionFactorGreenhouseGasValues extends ValueObject_1.ValueObject {
|
|
|
45
47
|
if (!value || typeof value !== 'object') {
|
|
46
48
|
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'object', typeof value);
|
|
47
49
|
}
|
|
48
|
-
EmissionFactorGreenhouseGasValues.
|
|
50
|
+
EmissionFactorGreenhouseGasValues.guardAgainstInvalidCategory(value.greenhouseGasCategory, `${propertyName}.greenhouseGasCategory`);
|
|
51
|
+
// Normaliza + valida el código de especie (lanza si el formato es inválido).
|
|
52
|
+
GreenhouseGasSpecies_1.GreenhouseGasSpecies.create(value.greenhouseGasSpecies);
|
|
49
53
|
EmissionFactorGreenhouseGasValues.guardAgainstInvalidCountryValues(value.countryValues, `${propertyName}.countryValues`);
|
|
50
54
|
EmissionFactorGreenhouseGasValues.guardAgainstInvalidUnit(value.unit, `${propertyName}.unit`);
|
|
51
55
|
EmissionFactorGreenhouseGasValues.guardAgainstInvalidDataSource(value.dataSource, `${propertyName}.dataSource`);
|
|
52
56
|
}
|
|
53
|
-
static
|
|
54
|
-
if (!Object.values(
|
|
55
|
-
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, `valid
|
|
57
|
+
static guardAgainstInvalidCategory(category, propertyName) {
|
|
58
|
+
if (!Object.values(GreenhouseGasCategory_1.GreenhouseGasCategory).includes(category)) {
|
|
59
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, `valid GreenhouseGasCategory enum value (${Object.values(GreenhouseGasCategory_1.GreenhouseGasCategory).join(', ')})`, `"${category}"`);
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
static guardAgainstInvalidCountryValues(countryValues, propertyName) {
|
|
@@ -133,10 +137,10 @@ class EmissionFactorGreenhouseGasValues extends ValueObject_1.ValueObject {
|
|
|
133
137
|
String_1.String.guardAgainstEmptyValue(dataSource, propertyName);
|
|
134
138
|
}
|
|
135
139
|
static guardAgainstDuplicateGreenhouseGases(values, propertyName) {
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
139
|
-
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'unique greenhouse
|
|
140
|
+
const species = values.map((value) => GreenhouseGasSpecies_1.GreenhouseGasSpecies.normalize(value.greenhouseGasSpecies));
|
|
141
|
+
const uniqueSpecies = new Set(species);
|
|
142
|
+
if (species.length !== uniqueSpecies.size) {
|
|
143
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'unique greenhouse gas species', 'duplicate greenhouse gas species entries found');
|
|
140
144
|
}
|
|
141
145
|
}
|
|
142
146
|
static guardAgainstDuplicateCountries(countryValues, propertyName) {
|
|
@@ -148,7 +152,8 @@ class EmissionFactorGreenhouseGasValues extends ValueObject_1.ValueObject {
|
|
|
148
152
|
}
|
|
149
153
|
static toPrimitivesArray(value) {
|
|
150
154
|
return value.map((ghgFactorValue) => ({
|
|
151
|
-
|
|
155
|
+
greenhouseGasCategory: ghgFactorValue.greenhouseGasCategory,
|
|
156
|
+
greenhouseGasSpecies: GreenhouseGasSpecies_1.GreenhouseGasSpecies.normalize(ghgFactorValue.greenhouseGasSpecies),
|
|
152
157
|
countryValues: ghgFactorValue.countryValues.map((countryValue) => ({
|
|
153
158
|
country: countryValue.country,
|
|
154
159
|
factorValue: countryValue.factorValue,
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GlobalWarmingPotentialGreenhouseGasPotentials = void 0;
|
|
4
4
|
const ValueObject_1 = require("../../../../shared/domain/value-objects/ValueObject");
|
|
5
|
-
const
|
|
5
|
+
const GreenhouseGasCategory_1 = require("../../../../shared/domain/enums/GreenhouseGasCategory");
|
|
6
|
+
const GreenhouseGasSpecies_1 = require("../../../../shared/domain/value-objects/GreenhouseGasSpecies");
|
|
6
7
|
const Numeric_1 = require("../../../../shared/domain/value-objects/Numeric");
|
|
7
8
|
const InvalidPropertyValueError_1 = require("../../../../shared/domain/exceptions/InvalidPropertyValueError");
|
|
8
9
|
class GlobalWarmingPotentialGreenhouseGasPotentials extends ValueObject_1.ValueObject {
|
|
@@ -17,7 +18,8 @@ class GlobalWarmingPotentialGreenhouseGasPotentials extends ValueObject_1.ValueO
|
|
|
17
18
|
}
|
|
18
19
|
static fromPrimitives(primitives) {
|
|
19
20
|
const value = primitives.map(((primitive) => ({
|
|
20
|
-
|
|
21
|
+
greenhouseGasCategory: primitive.greenhouseGasCategory,
|
|
22
|
+
greenhouseGasSpecies: primitive.greenhouseGasSpecies,
|
|
21
23
|
potentialValue: primitive.potentialValue,
|
|
22
24
|
})));
|
|
23
25
|
return new GlobalWarmingPotentialGreenhouseGasPotentials(value, true);
|
|
@@ -35,18 +37,20 @@ class GlobalWarmingPotentialGreenhouseGasPotentials extends ValueObject_1.ValueO
|
|
|
35
37
|
value.forEach((ghgPotentialValue, index) => {
|
|
36
38
|
GlobalWarmingPotentialGreenhouseGasPotentials.guardAgainstInvalidGHGPotentialValue(ghgPotentialValue, `${propertyName}[${index}]`);
|
|
37
39
|
});
|
|
38
|
-
GlobalWarmingPotentialGreenhouseGasPotentials.
|
|
40
|
+
GlobalWarmingPotentialGreenhouseGasPotentials.guardAgainstDuplicateSpecies(value, propertyName);
|
|
39
41
|
}
|
|
40
42
|
static guardAgainstInvalidGHGPotentialValue(value, propertyName) {
|
|
41
43
|
if (!value || typeof value !== 'object') {
|
|
42
44
|
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'object', typeof value);
|
|
43
45
|
}
|
|
44
|
-
GlobalWarmingPotentialGreenhouseGasPotentials.
|
|
46
|
+
GlobalWarmingPotentialGreenhouseGasPotentials.guardAgainstInvalidCategory(value.greenhouseGasCategory, `${propertyName}.greenhouseGasCategory`);
|
|
47
|
+
// Normaliza + valida el código de especie (lanza si el formato es inválido).
|
|
48
|
+
GreenhouseGasSpecies_1.GreenhouseGasSpecies.create(value.greenhouseGasSpecies);
|
|
45
49
|
GlobalWarmingPotentialGreenhouseGasPotentials.guardAgainstInvalidPotentialValue(value.potentialValue, `${propertyName}.potentialValue`);
|
|
46
50
|
}
|
|
47
|
-
static
|
|
48
|
-
if (!Object.values(
|
|
49
|
-
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, `valid
|
|
51
|
+
static guardAgainstInvalidCategory(category, propertyName) {
|
|
52
|
+
if (!Object.values(GreenhouseGasCategory_1.GreenhouseGasCategory).includes(category)) {
|
|
53
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, `valid GreenhouseGasCategory enum value (${Object.values(GreenhouseGasCategory_1.GreenhouseGasCategory).join(', ')})`, `"${category}"`);
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
static guardAgainstInvalidPotentialValue(potentialValue, propertyName) {
|
|
@@ -58,16 +62,17 @@ class GlobalWarmingPotentialGreenhouseGasPotentials extends ValueObject_1.ValueO
|
|
|
58
62
|
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-negative number', `${potentialValue}`);
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
|
-
static
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'unique greenhouse
|
|
65
|
+
static guardAgainstDuplicateSpecies(values, propertyName) {
|
|
66
|
+
const species = values.map((value) => GreenhouseGasSpecies_1.GreenhouseGasSpecies.normalize(value.greenhouseGasSpecies));
|
|
67
|
+
const uniqueSpecies = new Set(species);
|
|
68
|
+
if (species.length !== uniqueSpecies.size) {
|
|
69
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'unique greenhouse gas species', 'duplicate greenhouse gas species entries found');
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
static toPrimitivesArray(value) {
|
|
69
73
|
return value.map((ghgPotentialValue) => ({
|
|
70
|
-
|
|
74
|
+
greenhouseGasCategory: ghgPotentialValue.greenhouseGasCategory,
|
|
75
|
+
greenhouseGasSpecies: GreenhouseGasSpecies_1.GreenhouseGasSpecies.normalize(ghgPotentialValue.greenhouseGasSpecies),
|
|
71
76
|
potentialValue: ghgPotentialValue.potentialValue,
|
|
72
77
|
}));
|
|
73
78
|
}
|