@carbonbox/domain 0.44.0 → 0.46.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 +24 -2
- package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionFacilityError.js +31 -0
- package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionFacility.js +25 -0
- package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.js +10 -10
- package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacilities.js +24 -0
- package/build/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.js +5 -1
- package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/entity/GHGEmissionResult.js +7 -0
- package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGreenhouseGas.js +12 -0
- package/build/carbonbox/reporting/shared/domain/enums/DataBindingSource.js +3 -2
- package/build/carbonbox/shared/domain/enums/ErrorCode.js +3 -1
- package/build/carbonbox/shared/domain/types/FacilityReferencesOptions.js +2 -0
- package/build/carbonbox/shared/domain/value-objects/FacilityReferences.js +224 -0
- package/build/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.js +17 -0
- package/build/carbonbox/shared/domain/value-objects/NullableFacilityReference.js +139 -0
- package/build/main/index.js +30 -22
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts +10 -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/InvalidActivityDataSubmissionFacilityError.d.ts +7 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionFacilityError.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/ActivityDataSubmissionFacility.d.ts +15 -0
- package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionFacility.d.ts.map +1 -0
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.d.ts +2 -2
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.d.ts.map +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/ICorporateCarbonFootprintConfiguration.d.ts +2 -2
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/ICorporateCarbonFootprintConfiguration.d.ts.map +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/repository/ICorporateCarbonFootprintConfigurationRepository.d.ts +2 -2
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/repository/ICorporateCarbonFootprintConfigurationRepository.d.ts.map +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationPrimitives.d.ts +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationProps.d.ts +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationProps.d.ts.map +1 -1
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/{CorporateCarbonFootprintConfigurationFacility.d.ts → CorporateCarbonFootprintConfigurationFacilities.d.ts} +6 -6
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacilities.d.ts.map +1 -0
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensions.d.ts +1 -0
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensions.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensionsPrimitives.d.ts +1 -0
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensionsPrimitives.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.d.ts +1 -1
- package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.d.ts.map +1 -1
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/entity/GHGEmissionResult.d.ts +5 -0
- 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/value-objects/GHGEmissionResultGreenhouseGas.d.ts +8 -0
- package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGreenhouseGas.d.ts.map +1 -1
- package/build/types/carbonbox/reporting/shared/domain/enums/DataBindingSource.d.ts +1 -1
- package/build/types/carbonbox/reporting/shared/domain/enums/DataBindingSource.d.ts.map +1 -1
- package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts +2 -1
- package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts.map +1 -1
- package/build/types/carbonbox/shared/domain/types/FacilityReferencesOptions.d.ts +4 -0
- package/build/types/carbonbox/shared/domain/types/FacilityReferencesOptions.d.ts.map +1 -0
- package/build/types/carbonbox/shared/domain/value-objects/FacilityReferences.d.ts +104 -0
- package/build/types/carbonbox/shared/domain/value-objects/FacilityReferences.d.ts.map +1 -0
- package/build/types/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.d.ts +13 -0
- package/build/types/carbonbox/shared/domain/value-objects/GreenhouseGasSpecies.d.ts.map +1 -1
- package/build/types/carbonbox/shared/domain/value-objects/NullableFacilityReference.d.ts +28 -0
- package/build/types/carbonbox/shared/domain/value-objects/NullableFacilityReference.d.ts.map +1 -0
- package/build/types/main/index.d.ts +6 -1
- package/build/types/main/index.d.ts.map +1 -1
- package/package.json +54 -54
- package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacility.js +0 -24
- package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacility.d.ts.map +0 -1
|
@@ -10,16 +10,19 @@ 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_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;
|
|
13
|
+
var _ActivityDataSubmission_dynamicFormCode, _ActivityDataSubmission_carbonClient, _ActivityDataSubmission_footprintType, _ActivityDataSubmission_country, _ActivityDataSubmission_footprintConfiguration, _ActivityDataSubmission_segmentConfiguration, _ActivityDataSubmission_facility, _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");
|
|
17
17
|
const InvalidPropertyValueError_1 = require("../../../../shared/domain/exceptions/InvalidPropertyValueError");
|
|
18
|
+
const CarbonFootprint_1 = require("../../../../carbon-footprint-configurations/shared/domain/enums/CarbonFootprint");
|
|
19
|
+
const InvalidActivityDataSubmissionFacilityError_1 = require("../exceptions/InvalidActivityDataSubmissionFacilityError");
|
|
18
20
|
const ActivityDataSubmissionApprovedAt_1 = require("../value-objects/ActivityDataSubmissionApprovedAt");
|
|
19
21
|
const ActivityDataSubmissionCarbonClient_1 = require("../value-objects/ActivityDataSubmissionCarbonClient");
|
|
20
22
|
const ActivityDataSubmissionDataQualityNotes_1 = require("../value-objects/ActivityDataSubmissionDataQualityNotes");
|
|
21
23
|
const ActivityDataSubmissionDynamicFormCode_1 = require("../value-objects/ActivityDataSubmissionDynamicFormCode");
|
|
22
24
|
const ActivityDataSubmissionEmissionScope_1 = require("../value-objects/ActivityDataSubmissionEmissionScope");
|
|
25
|
+
const ActivityDataSubmissionFacility_1 = require("../value-objects/ActivityDataSubmissionFacility");
|
|
23
26
|
const ActivityDataSubmissionFieldResponses_1 = require("../value-objects/ActivityDataSubmissionFieldResponses");
|
|
24
27
|
const ActivityDataSubmissionFilledByStakeholder_1 = require("../value-objects/ActivityDataSubmissionFilledByStakeholder");
|
|
25
28
|
const ActivityDataSubmissionFootprintType_1 = require("../value-objects/ActivityDataSubmissionFootprintType");
|
|
@@ -49,6 +52,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
49
52
|
_ActivityDataSubmission_country.set(this, void 0);
|
|
50
53
|
_ActivityDataSubmission_footprintConfiguration.set(this, void 0);
|
|
51
54
|
_ActivityDataSubmission_segmentConfiguration.set(this, void 0);
|
|
55
|
+
_ActivityDataSubmission_facility.set(this, void 0);
|
|
52
56
|
_ActivityDataSubmission_filledByStakeholder.set(this, void 0);
|
|
53
57
|
_ActivityDataSubmission_fieldResponses.set(this, void 0);
|
|
54
58
|
_ActivityDataSubmission_periodStart.set(this, void 0);
|
|
@@ -71,6 +75,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
71
75
|
__classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.create(props.country), "f");
|
|
72
76
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.create(props.footprintConfiguration), "f");
|
|
73
77
|
__classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.create(props.segmentConfiguration), "f");
|
|
78
|
+
__classPrivateFieldSet(this, _ActivityDataSubmission_facility, ActivityDataSubmissionFacility_1.ActivityDataSubmissionFacility.create(props.facility), "f");
|
|
74
79
|
__classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.create(props.filledByStakeholder), "f");
|
|
75
80
|
__classPrivateFieldSet(this, _ActivityDataSubmission_fieldResponses, ActivityDataSubmissionFieldResponses_1.ActivityDataSubmissionFieldResponses.create(props.fieldResponses), "f");
|
|
76
81
|
__classPrivateFieldSet(this, _ActivityDataSubmission_periodStart, ActivityDataSubmissionPeriodStart_1.ActivityDataSubmissionPeriodStart.create(props.periodStart), "f");
|
|
@@ -87,6 +92,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
87
92
|
__classPrivateFieldSet(this, _ActivityDataSubmission_rejectedAt, ActivityDataSubmissionRejectedAt_1.ActivityDataSubmissionRejectedAt.create(props.rejectedAt), "f");
|
|
88
93
|
__classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.create(props.rejectionReason), "f");
|
|
89
94
|
ActivityDataSubmission.guardAgainstInvalidPeriodRange(props.periodStart, props.periodEnd);
|
|
95
|
+
ActivityDataSubmission.guardAgainstFacilityOnNonCorporateFootprint(props.facility, props.footprintType);
|
|
90
96
|
}
|
|
91
97
|
else {
|
|
92
98
|
__classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.fromPrimitives(props.dynamicFormCode), "f");
|
|
@@ -95,6 +101,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
95
101
|
__classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.fromPrimitives(props.country), "f");
|
|
96
102
|
__classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.fromPrimitives(props.footprintConfiguration), "f");
|
|
97
103
|
__classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.fromPrimitives(props.segmentConfiguration), "f");
|
|
104
|
+
__classPrivateFieldSet(this, _ActivityDataSubmission_facility, ActivityDataSubmissionFacility_1.ActivityDataSubmissionFacility.fromPrimitives(props.facility), "f");
|
|
98
105
|
__classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.fromPrimitives(props.filledByStakeholder), "f");
|
|
99
106
|
__classPrivateFieldSet(this, _ActivityDataSubmission_fieldResponses, ActivityDataSubmissionFieldResponses_1.ActivityDataSubmissionFieldResponses.fromPrimitives(props.fieldResponses), "f");
|
|
100
107
|
__classPrivateFieldSet(this, _ActivityDataSubmission_periodStart, ActivityDataSubmissionPeriodStart_1.ActivityDataSubmissionPeriodStart.fromPrimitives(props.periodStart), "f");
|
|
@@ -112,6 +119,16 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
112
119
|
__classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.fromPrimitives(props.rejectionReason), "f");
|
|
113
120
|
}
|
|
114
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* A facility attributes the activity data to one site of a corporate inventory. Product and
|
|
124
|
+
* event footprints measure a product / event edition, so they never carry a facility.
|
|
125
|
+
* `null` on a corporate submission means the data is reported at corporate level.
|
|
126
|
+
*/
|
|
127
|
+
static guardAgainstFacilityOnNonCorporateFootprint(facility, footprintType) {
|
|
128
|
+
if (facility !== null && footprintType !== CarbonFootprint_1.CarbonFootprint.CORPORATE) {
|
|
129
|
+
throw InvalidActivityDataSubmissionFacilityError_1.InvalidActivityDataSubmissionFacilityError.create(facility.id, footprintType);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
115
132
|
/**
|
|
116
133
|
* Validates that the reporting period range is coherent (`periodStart <= periodEnd`).
|
|
117
134
|
* Dates are in canonical DD/MM/YYYY format (project convention DT-2).
|
|
@@ -140,6 +157,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
140
157
|
country: primitives.country,
|
|
141
158
|
footprintConfiguration: primitives.footprintConfiguration,
|
|
142
159
|
segmentConfiguration: primitives.segmentConfiguration,
|
|
160
|
+
facility: primitives.facility,
|
|
143
161
|
filledByStakeholder: primitives.filledByStakeholder,
|
|
144
162
|
fieldResponses: primitives.fieldResponses,
|
|
145
163
|
periodStart: primitives.periodStart,
|
|
@@ -167,6 +185,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
167
185
|
country: __classPrivateFieldGet(this, _ActivityDataSubmission_country, "f").toEnum(),
|
|
168
186
|
footprintConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_footprintConfiguration, "f").toPrimitives(),
|
|
169
187
|
segmentConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_segmentConfiguration, "f").toPrimitives(),
|
|
188
|
+
facility: __classPrivateFieldGet(this, _ActivityDataSubmission_facility, "f").toPrimitives(),
|
|
170
189
|
filledByStakeholder: __classPrivateFieldGet(this, _ActivityDataSubmission_filledByStakeholder, "f").toPrimitives(),
|
|
171
190
|
fieldResponses: __classPrivateFieldGet(this, _ActivityDataSubmission_fieldResponses, "f").toPrimitives(),
|
|
172
191
|
periodStart: __classPrivateFieldGet(this, _ActivityDataSubmission_periodStart, "f").toPrimitives(),
|
|
@@ -202,6 +221,9 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
202
221
|
get segmentConfiguration() {
|
|
203
222
|
return __classPrivateFieldGet(this, _ActivityDataSubmission_segmentConfiguration, "f");
|
|
204
223
|
}
|
|
224
|
+
get facility() {
|
|
225
|
+
return __classPrivateFieldGet(this, _ActivityDataSubmission_facility, "f");
|
|
226
|
+
}
|
|
205
227
|
get filledByStakeholder() {
|
|
206
228
|
return __classPrivateFieldGet(this, _ActivityDataSubmission_filledByStakeholder, "f");
|
|
207
229
|
}
|
|
@@ -249,4 +271,4 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
|
|
|
249
271
|
}
|
|
250
272
|
}
|
|
251
273
|
exports.ActivityDataSubmission = ActivityDataSubmission;
|
|
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();
|
|
274
|
+
_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_facility = 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,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidActivityDataSubmissionFacilityError = void 0;
|
|
4
|
+
const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
|
|
5
|
+
const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
|
|
6
|
+
const CarbonFootprint_1 = require("../../../../carbon-footprint-configurations/shared/domain/enums/CarbonFootprint");
|
|
7
|
+
class InvalidActivityDataSubmissionFacilityError extends CodedRootError_1.CodedRootError {
|
|
8
|
+
constructor(facilityId, receivedFootprintType) {
|
|
9
|
+
const technicalMessage = `Invalid activity data submission facility '${facilityId}': a facility can only be assigned to a ${CarbonFootprint_1.CarbonFootprint.CORPORATE} footprint submission, received footprint type '${receivedFootprintType}'.`;
|
|
10
|
+
const context = {
|
|
11
|
+
facilityId,
|
|
12
|
+
receivedFootprintType,
|
|
13
|
+
allowedFootprintType: CarbonFootprint_1.CarbonFootprint.CORPORATE,
|
|
14
|
+
timestamp: new Date().toISOString(),
|
|
15
|
+
};
|
|
16
|
+
const suggestions = [
|
|
17
|
+
'Send facility as null for PRODUCT and EVENT footprint submissions',
|
|
18
|
+
'Assign a facility only when the submission belongs to a CORPORATE footprint configuration',
|
|
19
|
+
'Use null on a CORPORATE submission to report the activity data at corporate level',
|
|
20
|
+
];
|
|
21
|
+
super(ErrorCode_1.ErrorCode.INVALID_SUBMISSION_FACILITY, technicalMessage, context, suggestions);
|
|
22
|
+
this.name = 'InvalidActivityDataSubmissionFacilityError';
|
|
23
|
+
}
|
|
24
|
+
static create(facilityId, receivedFootprintType) {
|
|
25
|
+
return new InvalidActivityDataSubmissionFacilityError(facilityId, receivedFootprintType);
|
|
26
|
+
}
|
|
27
|
+
logError() {
|
|
28
|
+
return `${this.name}: ${this.technicalMessage}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.InvalidActivityDataSubmissionFacilityError = InvalidActivityDataSubmissionFacilityError;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityDataSubmissionFacility = void 0;
|
|
4
|
+
const NullableFacilityReference_1 = require("../../../../shared/domain/value-objects/NullableFacilityReference");
|
|
5
|
+
/**
|
|
6
|
+
* Sede a la que se imputa el dato de actividad. `null` significa "Nivel Corporativo":
|
|
7
|
+
* el dato pertenece a la organización y no a una sede concreta.
|
|
8
|
+
*/
|
|
9
|
+
class ActivityDataSubmissionFacility extends NullableFacilityReference_1.NullableFacilityReference {
|
|
10
|
+
constructor(value, skipDomainValidation) {
|
|
11
|
+
super(value, skipDomainValidation, ActivityDataSubmissionFacility.PROPERTY_NAME);
|
|
12
|
+
}
|
|
13
|
+
static create(value) {
|
|
14
|
+
return new ActivityDataSubmissionFacility(value, false);
|
|
15
|
+
}
|
|
16
|
+
static fromPrimitives(primitives) {
|
|
17
|
+
const value = primitives;
|
|
18
|
+
return new ActivityDataSubmissionFacility(value, true);
|
|
19
|
+
}
|
|
20
|
+
toPrimitives() {
|
|
21
|
+
return this.value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ActivityDataSubmissionFacility = ActivityDataSubmissionFacility;
|
|
25
|
+
ActivityDataSubmissionFacility.PROPERTY_NAME = 'facility';
|
|
@@ -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
|
|
13
|
+
var _CorporateCarbonFootprintConfiguration_facilities, _CorporateCarbonFootprintConfiguration_executionPeriod, _CorporateCarbonFootprintConfiguration_baseYear, _CorporateCarbonFootprintConfiguration_segmentConfigurations;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.CorporateCarbonFootprintConfiguration = void 0;
|
|
16
16
|
const CarbonFootprintConfiguration_1 = require("../../../shared/domain/entities/CarbonFootprintConfiguration");
|
|
@@ -20,7 +20,7 @@ const CorporateCarbonFootprintConfigurationName_1 = require("../value-objects/Co
|
|
|
20
20
|
const CorporateCarbonFootprintConfigurationCreatedByStakeholder_1 = require("../value-objects/CorporateCarbonFootprintConfigurationCreatedByStakeholder");
|
|
21
21
|
const CorporateCarbonFootprintConfigurationExecutionPeriod_1 = require("../value-objects/CorporateCarbonFootprintConfigurationExecutionPeriod");
|
|
22
22
|
const CorporateCarbonFootprintConfigurationBaseYear_1 = require("../value-objects/CorporateCarbonFootprintConfigurationBaseYear");
|
|
23
|
-
const
|
|
23
|
+
const CorporateCarbonFootprintConfigurationFacilities_1 = require("../value-objects/CorporateCarbonFootprintConfigurationFacilities");
|
|
24
24
|
const CorporateCarbonFootprintConfigurationFootprintType_1 = require("../value-objects/CorporateCarbonFootprintConfigurationFootprintType");
|
|
25
25
|
const CorporateCarbonFootprintConfigurationIntensityIndicatorConfigurations_1 = require("../value-objects/CorporateCarbonFootprintConfigurationIntensityIndicatorConfigurations");
|
|
26
26
|
const CorporateCarbonFootprintConfigurationOwnedByCarbonClient_1 = require("../value-objects/CorporateCarbonFootprintConfigurationOwnedByCarbonClient");
|
|
@@ -72,20 +72,20 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
|
|
|
72
72
|
ownedByCarbonClient,
|
|
73
73
|
createdByStakeholder,
|
|
74
74
|
}, skipDomainValidation);
|
|
75
|
-
|
|
75
|
+
_CorporateCarbonFootprintConfiguration_facilities.set(this, void 0);
|
|
76
76
|
_CorporateCarbonFootprintConfiguration_executionPeriod.set(this, void 0);
|
|
77
77
|
_CorporateCarbonFootprintConfiguration_baseYear.set(this, void 0);
|
|
78
78
|
_CorporateCarbonFootprintConfiguration_segmentConfigurations.set(this, void 0);
|
|
79
79
|
if (skipDomainValidation === false) {
|
|
80
80
|
// Initialize with domain validation
|
|
81
|
-
__classPrivateFieldSet(this,
|
|
81
|
+
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facilities, CorporateCarbonFootprintConfigurationFacilities_1.CorporateCarbonFootprintConfigurationFacilities.create(props.facilities), "f");
|
|
82
82
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, CorporateCarbonFootprintConfigurationExecutionPeriod_1.CorporateCarbonFootprintConfigurationExecutionPeriod.create(props.executionPeriod), "f");
|
|
83
83
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_baseYear, CorporateCarbonFootprintConfigurationBaseYear_1.CorporateCarbonFootprintConfigurationBaseYear.create(props.baseYear), "f");
|
|
84
84
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_segmentConfigurations, CorporateCarbonFootprintConfigurationSegmentConfigurations_1.CorporateCarbonFootprintConfigurationSegmentConfigurations.create(props.segmentConfigurations), "f");
|
|
85
85
|
}
|
|
86
86
|
else {
|
|
87
87
|
// Initialize from primitives (no domain validation)
|
|
88
|
-
__classPrivateFieldSet(this,
|
|
88
|
+
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facilities, CorporateCarbonFootprintConfigurationFacilities_1.CorporateCarbonFootprintConfigurationFacilities.fromPrimitives(props.facilities), "f");
|
|
89
89
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, CorporateCarbonFootprintConfigurationExecutionPeriod_1.CorporateCarbonFootprintConfigurationExecutionPeriod.fromPrimitives(props.executionPeriod), "f");
|
|
90
90
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_baseYear, CorporateCarbonFootprintConfigurationBaseYear_1.CorporateCarbonFootprintConfigurationBaseYear.fromPrimitives(props.baseYear), "f");
|
|
91
91
|
__classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_segmentConfigurations, CorporateCarbonFootprintConfigurationSegmentConfigurations_1.CorporateCarbonFootprintConfigurationSegmentConfigurations.fromPrimitives(props.segmentConfigurations), "f");
|
|
@@ -106,7 +106,7 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
|
|
|
106
106
|
status: primitives.status,
|
|
107
107
|
ownedByCarbonClient: primitives.ownedByCarbonClient,
|
|
108
108
|
createdByStakeholder: primitives.createdByStakeholder,
|
|
109
|
-
|
|
109
|
+
facilities: primitives.facilities,
|
|
110
110
|
executionPeriod: primitives.executionPeriod,
|
|
111
111
|
baseYear: primitives.baseYear,
|
|
112
112
|
segmentConfigurations: primitives.segmentConfigurations,
|
|
@@ -125,14 +125,14 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
|
|
|
125
125
|
status: this.status.toEnum(),
|
|
126
126
|
ownedByCarbonClient: this.ownedByCarbonClient.toPrimitives(),
|
|
127
127
|
createdByStakeholder: this.createdByStakeholder.toPrimitives(),
|
|
128
|
-
|
|
128
|
+
facilities: this.facilities.toPrimitives(),
|
|
129
129
|
executionPeriod: this.executionPeriod.toPrimitives(),
|
|
130
130
|
baseYear: this.baseYear.toPrimitives(),
|
|
131
131
|
segmentConfigurations: this.segmentConfigurations.toPrimitives(),
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
|
-
get
|
|
135
|
-
return __classPrivateFieldGet(this,
|
|
134
|
+
get facilities() {
|
|
135
|
+
return __classPrivateFieldGet(this, _CorporateCarbonFootprintConfiguration_facilities, "f");
|
|
136
136
|
}
|
|
137
137
|
get executionPeriod() {
|
|
138
138
|
return __classPrivateFieldGet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, "f");
|
|
@@ -145,4 +145,4 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
exports.CorporateCarbonFootprintConfiguration = CorporateCarbonFootprintConfiguration;
|
|
148
|
-
|
|
148
|
+
_CorporateCarbonFootprintConfiguration_facilities = new WeakMap(), _CorporateCarbonFootprintConfiguration_executionPeriod = new WeakMap(), _CorporateCarbonFootprintConfiguration_baseYear = new WeakMap(), _CorporateCarbonFootprintConfiguration_segmentConfigurations = new WeakMap();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CorporateCarbonFootprintConfigurationFacilities = void 0;
|
|
4
|
+
const FacilityReferences_1 = require("../../../../shared/domain/value-objects/FacilityReferences");
|
|
5
|
+
class CorporateCarbonFootprintConfigurationFacilities extends FacilityReferences_1.FacilityReferences {
|
|
6
|
+
constructor(value, skipDomainValidation) {
|
|
7
|
+
super(value, skipDomainValidation, CorporateCarbonFootprintConfigurationFacilities.PROPERTY_NAME, { allowEmpty: false });
|
|
8
|
+
}
|
|
9
|
+
static create(value) {
|
|
10
|
+
return new CorporateCarbonFootprintConfigurationFacilities(value, false);
|
|
11
|
+
}
|
|
12
|
+
static fromPrimitives(primitives) {
|
|
13
|
+
const value = primitives.map((primitive) => ({
|
|
14
|
+
id: primitive.id,
|
|
15
|
+
commercialBranchName: primitive.commercialBranchName,
|
|
16
|
+
}));
|
|
17
|
+
return new CorporateCarbonFootprintConfigurationFacilities(value, true);
|
|
18
|
+
}
|
|
19
|
+
toPrimitives() {
|
|
20
|
+
return this.value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.CorporateCarbonFootprintConfigurationFacilities = CorporateCarbonFootprintConfigurationFacilities;
|
|
24
|
+
CorporateCarbonFootprintConfigurationFacilities.PROPERTY_NAME = 'facilities';
|
|
@@ -14,7 +14,7 @@ const InvalidPropertyTypeError_1 = require("../../../../shared/domain/exceptions
|
|
|
14
14
|
* Value object wrapping the intrinsic dimensional keys denormalized on the
|
|
15
15
|
* EmissionCalculation at calculation time (CALC-001). Required string fields
|
|
16
16
|
* (`emissionScope`, `segmentId`, `periodStart`) are validated non-empty;
|
|
17
|
-
* `subScope` and `
|
|
17
|
+
* `subScope`, `subsegmentId` and `facilityId` are nullable.
|
|
18
18
|
*/
|
|
19
19
|
class EmissionCalculationDimensions extends ValueObject_1.ValueObject {
|
|
20
20
|
constructor(value, skipDomainValidation) {
|
|
@@ -47,6 +47,9 @@ _a = EmissionCalculationDimensions, _EmissionCalculationDimensions_validate = fu
|
|
|
47
47
|
if (value.subsegmentId !== null && typeof value.subsegmentId !== 'string') {
|
|
48
48
|
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${_a.PROPERTY_NAME}.subsegmentId`, 'string or null', typeof value.subsegmentId);
|
|
49
49
|
}
|
|
50
|
+
if (value.facilityId !== null && typeof value.facilityId !== 'string') {
|
|
51
|
+
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${_a.PROPERTY_NAME}.facilityId`, 'string or null', typeof value.facilityId);
|
|
52
|
+
}
|
|
50
53
|
}, _EmissionCalculationDimensions_toPrimitives = function _EmissionCalculationDimensions_toPrimitives(value) {
|
|
51
54
|
return {
|
|
52
55
|
emissionScope: value.emissionScope,
|
|
@@ -54,6 +57,7 @@ _a = EmissionCalculationDimensions, _EmissionCalculationDimensions_validate = fu
|
|
|
54
57
|
segmentId: value.segmentId,
|
|
55
58
|
subsegmentId: value.subsegmentId,
|
|
56
59
|
periodStart: value.periodStart,
|
|
60
|
+
facilityId: value.facilityId,
|
|
57
61
|
};
|
|
58
62
|
};
|
|
59
63
|
EmissionCalculationDimensions.PROPERTY_NAME = 'dimensions';
|
|
@@ -119,6 +119,13 @@ class GHGEmissionResult extends AggregateRoot_1.AggregateRoot {
|
|
|
119
119
|
get unit() {
|
|
120
120
|
return __classPrivateFieldGet(this, _GHGEmissionResult_unit, "f");
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Si este resultado se suma al total del inventario. Falso solo para el CO₂ biogénico
|
|
124
|
+
* (`CO2-BIOGENIC`), que se reporta como partida informativa fuera de los alcances.
|
|
125
|
+
*/
|
|
126
|
+
countsTowardsInventoryTotal() {
|
|
127
|
+
return __classPrivateFieldGet(this, _GHGEmissionResult_greenhouseGas, "f").countsTowardsInventoryTotal();
|
|
128
|
+
}
|
|
122
129
|
}
|
|
123
130
|
exports.GHGEmissionResult = GHGEmissionResult;
|
|
124
131
|
_GHGEmissionResult_emissionCalculation = new WeakMap(), _GHGEmissionResult_greenhouseGas = new WeakMap(), _GHGEmissionResult_activityValue = new WeakMap(), _GHGEmissionResult_emissionFactor = new WeakMap(), _GHGEmissionResult_globalWarmingPotential = new WeakMap(), _GHGEmissionResult_rawEmission = new WeakMap(), _GHGEmissionResult_co2Equivalent = new WeakMap(), _GHGEmissionResult_unit = new WeakMap();
|
|
@@ -45,6 +45,18 @@ class GHGEmissionResultGreenhouseGas extends ValueObject_1.ValueObject {
|
|
|
45
45
|
isFluorinatedGas() {
|
|
46
46
|
return GHGEmissionResultGreenhouseGas.FLUORINATED_CATEGORIES.includes(this.category);
|
|
47
47
|
}
|
|
48
|
+
/** CO₂ de biomasa / biocombustibles (`CO2-BIOGENIC`): partida informativa fuera del total. */
|
|
49
|
+
isBiogenicCarbonDioxide() {
|
|
50
|
+
return GreenhouseGasSpecies_1.GreenhouseGasSpecies.isBiogenicCarbonDioxide(this.species);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Si el resultado de este gas se suma al total del inventario y a sus alcances. Solo el CO₂
|
|
54
|
+
* biogénico queda fuera (GHG Protocol cap. 9 / ISO 14064-1 §9.3.1); el CH₄ y el N₂O de la
|
|
55
|
+
* misma combustión cuentan con su PCG.
|
|
56
|
+
*/
|
|
57
|
+
countsTowardsInventoryTotal() {
|
|
58
|
+
return !this.isBiogenicCarbonDioxide();
|
|
59
|
+
}
|
|
48
60
|
toPrimitives() {
|
|
49
61
|
return {
|
|
50
62
|
greenhouseGasCategory: this.value.greenhouseGasCategory,
|
|
@@ -43,9 +43,10 @@ var DataBindingSource;
|
|
|
43
43
|
DataBindingSource["AGGREGATION_GAS_N2O"] = "aggregation.gas.n2o";
|
|
44
44
|
// Aggregations - By Segment
|
|
45
45
|
DataBindingSource["AGGREGATION_BY_SEGMENT"] = "aggregation.bySegment";
|
|
46
|
-
// Aggregations - Biogenic
|
|
47
|
-
|
|
46
|
+
// Aggregations - Biogenic CO₂ (informational item OUTSIDE the inventory total and the scopes,
|
|
47
|
+
// GHG Protocol cap. 9 / ISO 14064-1 §9.3.1): the `CO2-BIOGENIC` species, total and per source.
|
|
48
48
|
DataBindingSource["AGGREGATION_BIOGENIC_CO2"] = "aggregation.biogenicCO2";
|
|
49
|
+
DataBindingSource["AGGREGATION_BIOGENIC_CO2_BY_SOURCE"] = "aggregation.biogenicCO2.bySource";
|
|
49
50
|
// Aggregations - Uncertainty (GAP 4): inventory-level propagated uncertainty
|
|
50
51
|
DataBindingSource["AGGREGATION_UNCERTAINTY_PERCENTAGE"] = "aggregation.uncertainty.percentage";
|
|
51
52
|
DataBindingSource["AGGREGATION_UNCERTAINTY_LEVEL"] = "aggregation.uncertainty.level";
|
|
@@ -17,7 +17,7 @@ exports.ErrorCode = void 0;
|
|
|
17
17
|
* - RPT: Reporting
|
|
18
18
|
* - SHR: Shared/Common
|
|
19
19
|
*
|
|
20
|
-
* Total Codes:
|
|
20
|
+
* Total Codes: 174
|
|
21
21
|
* Total Exceptions Migrated: 171 (100%)
|
|
22
22
|
*
|
|
23
23
|
* @since 1.0.0
|
|
@@ -118,6 +118,8 @@ var ErrorCode;
|
|
|
118
118
|
ErrorCode["TRIGGER_VALUE_CONVERSION_ERROR"] = "CBX-ADC-020";
|
|
119
119
|
ErrorCode["TRIGGER_VALUE_STRING_OPERATION_ERROR"] = "CBX-ADC-021";
|
|
120
120
|
ErrorCode["UNKNOWN_CONDITIONAL_ACTION_CATEGORY"] = "CBX-ADC-022";
|
|
121
|
+
// Activity Data Submission facility attribution (CBX-ADC-023)
|
|
122
|
+
ErrorCode["INVALID_SUBMISSION_FACILITY"] = "CBX-ADC-023";
|
|
121
123
|
// Emission Calculation Errors (CBX-EMC-XXX)
|
|
122
124
|
ErrorCode["CALCULATION_FAILED"] = "CBX-EMC-001";
|
|
123
125
|
ErrorCode["MISSING_EMISSION_FACTOR"] = "CBX-EMC-002";
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _FacilityReferences_facilityReferences, _FacilityReferences_options;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.FacilityReferences = void 0;
|
|
16
|
+
const InvalidPropertyTypeError_1 = require("../exceptions/InvalidPropertyTypeError");
|
|
17
|
+
const InvalidPropertyValueError_1 = require("../exceptions/InvalidPropertyValueError");
|
|
18
|
+
const ValueObject_1 = require("./ValueObject");
|
|
19
|
+
const String_1 = require("./String");
|
|
20
|
+
const AggregateId_1 = require("./AggregateId");
|
|
21
|
+
class FacilityReferences extends ValueObject_1.ValueObject {
|
|
22
|
+
/**
|
|
23
|
+
* Constructor protegido para que solo clases hijas puedan instanciar.
|
|
24
|
+
* Aplica todas las validaciones de dominio al momento de construcción.
|
|
25
|
+
*/
|
|
26
|
+
constructor(value, skipDomainValidation, propertyName = FacilityReferences.DEFAULT_PROPERTY_NAME, options = FacilityReferences.DEFAULT_OPTIONS) {
|
|
27
|
+
const finalOptions = { ...FacilityReferences.DEFAULT_OPTIONS, ...options };
|
|
28
|
+
if (skipDomainValidation === false) {
|
|
29
|
+
FacilityReferences.validateReferences(value, propertyName, finalOptions);
|
|
30
|
+
}
|
|
31
|
+
super(FacilityReferences.toCleanReferences(value), skipDomainValidation, propertyName, 'The provided value must be an array of FacilityReference from the domain layer', { allowNull: false, allowUndefined: false });
|
|
32
|
+
_FacilityReferences_facilityReferences.set(this, void 0);
|
|
33
|
+
_FacilityReferences_options.set(this, void 0);
|
|
34
|
+
__classPrivateFieldSet(this, _FacilityReferences_facilityReferences, FacilityReferences.toCleanReferences(value), "f");
|
|
35
|
+
__classPrivateFieldSet(this, _FacilityReferences_options, finalOptions, "f");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validación estática para reutilización en factory methods y constructores.
|
|
39
|
+
*/
|
|
40
|
+
static validateReferences(value, propertyName, options) {
|
|
41
|
+
this.guardAgainstInvalidType(value, propertyName);
|
|
42
|
+
this.guardAgainstInvalidEmptyArray(value, options, propertyName);
|
|
43
|
+
value.forEach((reference, index) => {
|
|
44
|
+
this.guardAgainstInvalidReference(reference, index, propertyName);
|
|
45
|
+
});
|
|
46
|
+
this.guardAgainstDuplicatedIds(value, propertyName);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Valida que el valor sea un array válido.
|
|
50
|
+
*/
|
|
51
|
+
static guardAgainstInvalidType(value, propertyName) {
|
|
52
|
+
if (!Array.isArray(value)) {
|
|
53
|
+
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'array of FacilityReference', typeof value);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Valida que el array no esté vacío si no se permite.
|
|
58
|
+
*/
|
|
59
|
+
static guardAgainstInvalidEmptyArray(value, options, propertyName) {
|
|
60
|
+
if (!options.allowEmpty && value.length === 0) {
|
|
61
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-empty array', 'empty array');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Valida que no haya sedes duplicadas en la lista.
|
|
66
|
+
*/
|
|
67
|
+
static guardAgainstDuplicatedIds(value, propertyName) {
|
|
68
|
+
const ids = value.map((item) => item.id.trim());
|
|
69
|
+
const uniqueIds = new Set(ids);
|
|
70
|
+
if (ids.length !== uniqueIds.size) {
|
|
71
|
+
throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${propertyName}.ids`, 'array with unique IDs', 'array with duplicated IDs');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Valida una referencia individual.
|
|
76
|
+
*/
|
|
77
|
+
static guardAgainstInvalidReference(reference, index, basePropertyName) {
|
|
78
|
+
const propertyName = `${basePropertyName}[${index}]`;
|
|
79
|
+
if (!reference || typeof reference !== 'object') {
|
|
80
|
+
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'FacilityReference object', typeof reference);
|
|
81
|
+
}
|
|
82
|
+
if (typeof reference.id !== 'string') {
|
|
83
|
+
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.id`, 'string', typeof reference.id);
|
|
84
|
+
}
|
|
85
|
+
if (typeof reference.commercialBranchName !== 'string') {
|
|
86
|
+
throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.commercialBranchName`, 'string', typeof reference.commercialBranchName);
|
|
87
|
+
}
|
|
88
|
+
String_1.String.guardAgainstEmptyValue(reference.id, `${propertyName}.id`);
|
|
89
|
+
AggregateId_1.AggregateId.guardAgainstInvalidId(reference.id, `${propertyName}.id`);
|
|
90
|
+
String_1.String.guardAgainstEmptyValue(reference.commercialBranchName, `${propertyName}.commercialBranchName`);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Limpia y normaliza las referencias.
|
|
94
|
+
*/
|
|
95
|
+
static toCleanReferences(value) {
|
|
96
|
+
return value.map((item) => ({
|
|
97
|
+
id: item.id.trim(),
|
|
98
|
+
commercialBranchName: item.commercialBranchName.trim(),
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Array de referencias de sedes (inmutable).
|
|
103
|
+
*/
|
|
104
|
+
get facilityReferences() {
|
|
105
|
+
return Object.freeze([...__classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f")]);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Opciones de configuración de la colección.
|
|
109
|
+
*/
|
|
110
|
+
get options() {
|
|
111
|
+
return Object.freeze({ ...__classPrivateFieldGet(this, _FacilityReferences_options, "f") });
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Número de referencias en la lista.
|
|
115
|
+
*/
|
|
116
|
+
get count() {
|
|
117
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Verifica si la lista está vacía.
|
|
121
|
+
*/
|
|
122
|
+
isEmpty() {
|
|
123
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length === 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Verifica si la lista tiene referencias.
|
|
127
|
+
*/
|
|
128
|
+
hasReferences() {
|
|
129
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length > 0;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Verifica si la colección permite estar vacía.
|
|
133
|
+
*/
|
|
134
|
+
allowsEmpty() {
|
|
135
|
+
return __classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty === true;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Verifica si la colección está en un estado válido según sus opciones.
|
|
139
|
+
*/
|
|
140
|
+
isValidState() {
|
|
141
|
+
if (!this.allowsEmpty() && this.isEmpty()) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Obtiene una referencia por su id.
|
|
148
|
+
*/
|
|
149
|
+
getById(id) {
|
|
150
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").find((reference) => reference.id === id.trim());
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Verifica si existe una referencia con el id especificado.
|
|
154
|
+
*/
|
|
155
|
+
hasId(id) {
|
|
156
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").some((reference) => reference.id === id.trim());
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Obtiene todos los ids de las referencias.
|
|
160
|
+
*/
|
|
161
|
+
getIds() {
|
|
162
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => reference.id);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Obtiene todos los nombres comerciales de las referencias.
|
|
166
|
+
*/
|
|
167
|
+
getCommercialBranchNames() {
|
|
168
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => reference.commercialBranchName);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Compara la igualdad semántica con otra lista de referencias.
|
|
172
|
+
* Dos colecciones son iguales si referencian el mismo conjunto de sedes.
|
|
173
|
+
*/
|
|
174
|
+
equals(other) {
|
|
175
|
+
if (!(other instanceof FacilityReferences)) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
if (__classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty !== __classPrivateFieldGet(other, _FacilityReferences_options, "f").allowEmpty) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
if (__classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length !== __classPrivateFieldGet(other, _FacilityReferences_facilityReferences, "f").length) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
const otherIds = new Set(other.getIds());
|
|
185
|
+
return this.getIds().every((id) => otherIds.has(id));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Genera un hash code para usar en colecciones.
|
|
189
|
+
*/
|
|
190
|
+
hashCode() {
|
|
191
|
+
const optionsHash = __classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty ? 'E' : 'NE';
|
|
192
|
+
return `facilityReferences_${optionsHash}_${[...this.getIds()].sort().join('_')}`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Convierte a representación primitiva para persistencia.
|
|
196
|
+
*/
|
|
197
|
+
toPrimitives() {
|
|
198
|
+
return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => ({
|
|
199
|
+
id: reference.id,
|
|
200
|
+
commercialBranchName: reference.commercialBranchName,
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Representación como string (lista de nombres comerciales).
|
|
205
|
+
*/
|
|
206
|
+
toString() {
|
|
207
|
+
if (this.isEmpty()) {
|
|
208
|
+
return 'Sin sedes';
|
|
209
|
+
}
|
|
210
|
+
return this.getCommercialBranchNames().join(', ');
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Representación JSON para serialización.
|
|
214
|
+
*/
|
|
215
|
+
toJSON() {
|
|
216
|
+
return this.toPrimitives();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
exports.FacilityReferences = FacilityReferences;
|
|
220
|
+
_FacilityReferences_facilityReferences = new WeakMap(), _FacilityReferences_options = new WeakMap();
|
|
221
|
+
FacilityReferences.DEFAULT_PROPERTY_NAME = 'facilityReferences';
|
|
222
|
+
FacilityReferences.DEFAULT_OPTIONS = {
|
|
223
|
+
allowEmpty: false, // Por defecto no permite estar vacío
|
|
224
|
+
};
|
|
@@ -10,6 +10,12 @@ const InvalidPropertyValueError_1 = require("../exceptions/InvalidPropertyValueE
|
|
|
10
10
|
* para que un mismo refrigerante escrito con espacios/casing distintos matchee siempre igual.
|
|
11
11
|
* La categoría (GreenhouseGasCategory) viaja al lado; aquí no se valida coherencia química
|
|
12
12
|
* especie↔categoría (decisión de diseño: validación permisiva, match por especie).
|
|
13
|
+
*
|
|
14
|
+
* CO₂ biogénico: el CO₂ liberado al quemar biomasa o biocombustibles se reporta por separado,
|
|
15
|
+
* fuera de los alcances y del total del inventario (GHG Protocol Corporate Standard cap. 9;
|
|
16
|
+
* ISO 14064-1:2018 §9.3.1). Se modela como la especie `CO2-BIOGENIC` de la categoría CO2
|
|
17
|
+
* (paralela a `CH4-BIOGENIC`, que SÍ cuenta en el total con su PCG). Este VO es el único lugar
|
|
18
|
+
* que conoce esa convención: toda suma de inventario pregunta `isBiogenicCarbonDioxide`.
|
|
13
19
|
*/
|
|
14
20
|
class GreenhouseGasSpecies extends String_1.String {
|
|
15
21
|
constructor(value, skipDomainValidation) {
|
|
@@ -33,6 +39,16 @@ class GreenhouseGasSpecies extends String_1.String {
|
|
|
33
39
|
String_1.String.guardAgainstInvalidType(value, GreenhouseGasSpecies.PROPERTY_NAME);
|
|
34
40
|
return value.trim().replace(/\s+/g, ' ').toUpperCase();
|
|
35
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* True para la especie `CO2-BIOGENIC` (en cualquier casing/espaciado): CO₂ que NO cuenta en
|
|
44
|
+
* el total del inventario y se reporta como partida informativa.
|
|
45
|
+
*/
|
|
46
|
+
static isBiogenicCarbonDioxide(value) {
|
|
47
|
+
return GreenhouseGasSpecies.normalize(value) === GreenhouseGasSpecies.BIOGENIC_CARBON_DIOXIDE;
|
|
48
|
+
}
|
|
49
|
+
isBiogenicCarbonDioxide() {
|
|
50
|
+
return GreenhouseGasSpecies.isBiogenicCarbonDioxide(this.value);
|
|
51
|
+
}
|
|
36
52
|
static guardAgainstInvalidSpecies(value) {
|
|
37
53
|
String_1.String.guardAgainstEmptyValue(value, GreenhouseGasSpecies.PROPERTY_NAME);
|
|
38
54
|
if (!GreenhouseGasSpecies.SPECIES_REGEX.test(value)) {
|
|
@@ -45,6 +61,7 @@ class GreenhouseGasSpecies extends String_1.String {
|
|
|
45
61
|
}
|
|
46
62
|
exports.GreenhouseGasSpecies = GreenhouseGasSpecies;
|
|
47
63
|
GreenhouseGasSpecies.PROPERTY_NAME = 'greenhouseGasSpecies';
|
|
64
|
+
GreenhouseGasSpecies.BIOGENIC_CARBON_DIOXIDE = 'CO2-BIOGENIC';
|
|
48
65
|
// Letras, dígitos, espacio, guion y barra: cubre ASHRAE (R-410A) y químicos/mezclas
|
|
49
66
|
// (HFC-134A, MEZCLA HFC 365MFC/HFC 227EA, POLYCOLD 1102HC).
|
|
50
67
|
GreenhouseGasSpecies.SPECIES_REGEX = /^[A-Z0-9][A-Z0-9 /-]*$/;
|