@carbonbox/domain 0.10.7 → 0.11.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.
Files changed (118) hide show
  1. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.js +47 -4
  2. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodEnd.js +20 -0
  3. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodStart.js +20 -0
  4. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSegmentConfiguration.js +29 -0
  5. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSubScope.js +11 -1
  6. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/entity/CorporateCarbonFootprintSegmentConfiguration.js +10 -12
  7. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.js +119 -0
  8. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationSegmentConfigurations.js +1 -1
  9. package/build/carbonbox/carbon-footprint-configurations/event-configurations/domain/value-objects/EventCarbonFootprintConfigurationEventEditionLifecycleStageConfigurations.js +1 -1
  10. package/build/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/entity/EventEditionLifecycleStageConfiguration.js +10 -12
  11. package/build/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSourceConfigurations.js +119 -0
  12. package/build/carbonbox/carbon-footprint-configurations/product-configurations/domain/value-objects/ProductCarbonFootprintConfigurationSegmentConfigurations.js +1 -1
  13. package/build/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/entity/ProductCarbonFootprintSegmentConfiguration.js +10 -12
  14. package/build/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.js +119 -0
  15. package/build/carbonbox/shared/domain/authorization/enums/Permission.js +2 -0
  16. package/build/carbonbox/shared/domain/enums/GHGSubScope.js +1 -0
  17. package/build/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReference.js +2 -0
  18. package/build/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReferencePrimitives.js +2 -0
  19. package/build/carbonbox/shared/domain/types/EmissionSourceConfiguration.js +2 -0
  20. package/build/carbonbox/shared/domain/types/EmissionSourceConfigurationPrimitives.js +2 -0
  21. package/build/carbonbox/shared/domain/value-objects/CarbonFootprintSegmentConfigurationReference.js +193 -0
  22. package/build/carbonbox/shared/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationReferences.js +76 -185
  23. package/build/carbonbox/shared/domain/value-objects/EmissionSourceConfiguration.js +97 -0
  24. package/build/carbonbox/shared/domain/value-objects/EventEditionLifecycleStageConfigurationReferences.js +99 -252
  25. package/build/carbonbox/shared/domain/value-objects/ProductCarbonFootprintSegmentConfigurationReferences.js +106 -280
  26. package/build/main/index.js +32 -18
  27. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts +11 -0
  28. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts.map +1 -1
  29. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts +8 -0
  30. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts.map +1 -1
  31. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts +4 -0
  32. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts.map +1 -1
  33. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts +4 -0
  34. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts.map +1 -1
  35. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodEnd.d.ts +9 -0
  36. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodEnd.d.ts.map +1 -0
  37. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodStart.d.ts +9 -0
  38. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionPeriodStart.d.ts.map +1 -0
  39. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSegmentConfiguration.d.ts +11 -0
  40. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSegmentConfiguration.d.ts.map +1 -0
  41. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSubScope.d.ts +4 -0
  42. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionSubScope.d.ts.map +1 -1
  43. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/entity/CorporateCarbonFootprintSegmentConfiguration.d.ts +2 -2
  44. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/entity/CorporateCarbonFootprintSegmentConfiguration.d.ts.map +1 -1
  45. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/entity/ICorporateCarbonFootprintSegmentConfiguration.d.ts +2 -2
  46. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/entity/ICorporateCarbonFootprintSegmentConfiguration.d.ts.map +1 -1
  47. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/types/CorporateCarbonFootprintSegmentConfigurationPrimitives.d.ts +2 -2
  48. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/types/CorporateCarbonFootprintSegmentConfigurationPrimitives.d.ts.map +1 -1
  49. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/types/CorporateCarbonFootprintSegmentConfigurationProps.d.ts +2 -2
  50. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/types/CorporateCarbonFootprintSegmentConfigurationProps.d.ts.map +1 -1
  51. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.d.ts +23 -0
  52. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.d.ts.map +1 -0
  53. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/entity/EventEditionLifecycleStageConfiguration.d.ts +2 -2
  54. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/entity/EventEditionLifecycleStageConfiguration.d.ts.map +1 -1
  55. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/entity/IEventEditionLifecycleStageConfiguration.d.ts +2 -2
  56. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/entity/IEventEditionLifecycleStageConfiguration.d.ts.map +1 -1
  57. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/types/EventEditionLifecycleStageConfigurationPrimitives.d.ts +2 -2
  58. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/types/EventEditionLifecycleStageConfigurationPrimitives.d.ts.map +1 -1
  59. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/types/EventEditionLifecycleStageConfigurationProps.d.ts +2 -2
  60. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/types/EventEditionLifecycleStageConfigurationProps.d.ts.map +1 -1
  61. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSourceConfigurations.d.ts +23 -0
  62. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSourceConfigurations.d.ts.map +1 -0
  63. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/entity/IProductCarbonFootprintSegmentConfiguration.d.ts +2 -2
  64. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/entity/IProductCarbonFootprintSegmentConfiguration.d.ts.map +1 -1
  65. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/entity/ProductCarbonFootprintSegmentConfiguration.d.ts +2 -2
  66. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/entity/ProductCarbonFootprintSegmentConfiguration.d.ts.map +1 -1
  67. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/types/ProductCarbonFootprintSegmentConfigurationPrimitives.d.ts +2 -2
  68. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/types/ProductCarbonFootprintSegmentConfigurationPrimitives.d.ts.map +1 -1
  69. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/types/ProductCarbonFootprintSegmentConfigurationProps.d.ts +2 -2
  70. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/types/ProductCarbonFootprintSegmentConfigurationProps.d.ts.map +1 -1
  71. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.d.ts +23 -0
  72. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSourceConfigurations.d.ts.map +1 -0
  73. package/build/types/carbonbox/shared/domain/authorization/enums/Permission.d.ts +2 -0
  74. package/build/types/carbonbox/shared/domain/authorization/enums/Permission.d.ts.map +1 -1
  75. package/build/types/carbonbox/shared/domain/enums/GHGSubScope.d.ts +2 -1
  76. package/build/types/carbonbox/shared/domain/enums/GHGSubScope.d.ts.map +1 -1
  77. package/build/types/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReference.d.ts +12 -0
  78. package/build/types/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReference.d.ts.map +1 -0
  79. package/build/types/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReferencePrimitives.d.ts +12 -0
  80. package/build/types/carbonbox/shared/domain/types/CarbonFootprintSegmentConfigurationReferencePrimitives.d.ts.map +1 -0
  81. package/build/types/carbonbox/shared/domain/types/CorporateCarbonFootprintSegmentConfigurationReference.d.ts +2 -2
  82. package/build/types/carbonbox/shared/domain/types/CorporateCarbonFootprintSegmentConfigurationReference.d.ts.map +1 -1
  83. package/build/types/carbonbox/shared/domain/types/CorporateCarbonFootprintSegmentConfigurationReferencePrimitives.d.ts +2 -2
  84. package/build/types/carbonbox/shared/domain/types/CorporateCarbonFootprintSegmentConfigurationReferencePrimitives.d.ts.map +1 -1
  85. package/build/types/carbonbox/shared/domain/types/EmissionSourceConfiguration.d.ts +6 -0
  86. package/build/types/carbonbox/shared/domain/types/EmissionSourceConfiguration.d.ts.map +1 -0
  87. package/build/types/carbonbox/shared/domain/types/EmissionSourceConfigurationPrimitives.d.ts +6 -0
  88. package/build/types/carbonbox/shared/domain/types/EmissionSourceConfigurationPrimitives.d.ts.map +1 -0
  89. package/build/types/carbonbox/shared/domain/types/EventEditionLifecycleStageConfigurationReference.d.ts +2 -2
  90. package/build/types/carbonbox/shared/domain/types/EventEditionLifecycleStageConfigurationReference.d.ts.map +1 -1
  91. package/build/types/carbonbox/shared/domain/types/EventEditionLifecycleStageConfigurationReferencePrimitives.d.ts +2 -2
  92. package/build/types/carbonbox/shared/domain/types/EventEditionLifecycleStageConfigurationReferencePrimitives.d.ts.map +1 -1
  93. package/build/types/carbonbox/shared/domain/types/ProductCarbonFootprintSegmentConfigurationReference.d.ts +2 -2
  94. package/build/types/carbonbox/shared/domain/types/ProductCarbonFootprintSegmentConfigurationReference.d.ts.map +1 -1
  95. package/build/types/carbonbox/shared/domain/types/ProductCarbonFootprintSegmentConfigurationReferencePrimitives.d.ts +2 -2
  96. package/build/types/carbonbox/shared/domain/types/ProductCarbonFootprintSegmentConfigurationReferencePrimitives.d.ts.map +1 -1
  97. package/build/types/carbonbox/shared/domain/value-objects/CarbonFootprintSegmentConfigurationReference.d.ts +37 -0
  98. package/build/types/carbonbox/shared/domain/value-objects/CarbonFootprintSegmentConfigurationReference.d.ts.map +1 -0
  99. package/build/types/carbonbox/shared/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationReferences.d.ts +8 -142
  100. package/build/types/carbonbox/shared/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationReferences.d.ts.map +1 -1
  101. package/build/types/carbonbox/shared/domain/value-objects/EmissionSourceConfiguration.d.ts +24 -0
  102. package/build/types/carbonbox/shared/domain/value-objects/EmissionSourceConfiguration.d.ts.map +1 -0
  103. package/build/types/carbonbox/shared/domain/value-objects/EventEditionLifecycleStageConfigurationReferences.d.ts +17 -164
  104. package/build/types/carbonbox/shared/domain/value-objects/EventEditionLifecycleStageConfigurationReferences.d.ts.map +1 -1
  105. package/build/types/carbonbox/shared/domain/value-objects/ProductCarbonFootprintSegmentConfigurationReferences.d.ts +20 -176
  106. package/build/types/carbonbox/shared/domain/value-objects/ProductCarbonFootprintSegmentConfigurationReferences.d.ts.map +1 -1
  107. package/build/types/main/index.d.ts +12 -1
  108. package/build/types/main/index.d.ts.map +1 -1
  109. package/package.json +1 -1
  110. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSources.js +0 -90
  111. package/build/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSources.js +0 -22
  112. package/build/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSources.js +0 -22
  113. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSources.d.ts +0 -44
  114. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/corporate-segment-configurations/domain/value-objects/CorporateCarbonFootprintSegmentConfigurationEmissionSources.d.ts.map +0 -1
  115. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSources.d.ts +0 -9
  116. package/build/types/carbonbox/carbon-footprint-configurations/event-configurations/event-edition-lifecycle-stage-configurations/domain/value-objects/EventEditionLifecycleStageConfigurationEmissionSources.d.ts.map +0 -1
  117. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSources.d.ts +0 -9
  118. package/build/types/carbonbox/carbon-footprint-configurations/product-configurations/product-segment-configurations/domain/value-objects/ProductCarbonFootprintSegmentConfigurationEmissionSources.d.ts.map +0 -1
@@ -20,10 +20,6 @@ const ValueObject_1 = require("./ValueObject");
20
20
  const String_1 = require("./String");
21
21
  const AggregateId_1 = require("./AggregateId");
22
22
  class ProductCarbonFootprintSegmentConfigurationReferences extends ValueObject_1.ValueObject {
23
- /**
24
- * Constructor protegido para que solo clases hijas puedan instanciar.
25
- * Aplica todas las validaciones de dominio al momento de construcción.
26
- */
27
23
  constructor(value, skipDomainValidation, propertyName = ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_PROPERTY_NAME, options = ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_OPTIONS) {
28
24
  super(value, skipDomainValidation, propertyName, 'The provided value must be of type ProductCarbonFootprintSegmentConfigurationReference[] from the domain layer', { allowNull: false, allowUndefined: false });
29
25
  _ProductCarbonFootprintSegmentConfigurationReferences_configurations.set(this, void 0);
@@ -33,60 +29,42 @@ class ProductCarbonFootprintSegmentConfigurationReferences extends ValueObject_1
33
29
  ProductCarbonFootprintSegmentConfigurationReferences
34
30
  .validateConfigurations(value, propertyName, finalOptions);
35
31
  }
36
- __classPrivateFieldSet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, [...value], "f"); // Create defensive copy
32
+ __classPrivateFieldSet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, [...value], "f");
37
33
  __classPrivateFieldSet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, finalOptions, "f");
38
34
  }
39
- /**
40
- * Validación estática para reutilización en factory methods y constructores.
41
- */
42
35
  static validateConfigurations(value, propertyName, options) {
43
36
  this.guardAgainstInvalidArrayType(value, propertyName);
44
37
  this.guardAgainstInvalidEmptyArray(value, options, propertyName);
45
- this.guardAgainstDuplicateConfigurations(value, propertyName);
38
+ this.guardAgainstDuplicateConfigurationIds(value, propertyName);
46
39
  value.forEach((configuration, index) => {
47
40
  this.guardAgainstInvalidConfiguration(configuration, index, propertyName);
48
41
  });
49
42
  }
50
- /**
51
- * Valida que el valor sea un array.
52
- */
53
43
  static guardAgainstInvalidArrayType(value, propertyName) {
54
44
  if (!Array.isArray(value)) {
55
45
  throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'array', typeof value);
56
46
  }
57
47
  }
58
- /**
59
- * Valida que el array no esté vacío si no se permite.
60
- */
61
48
  static guardAgainstInvalidEmptyArray(value, options, propertyName) {
62
49
  if (!options.allowEmpty && value.length === 0) {
63
50
  throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-empty array', 'empty array');
64
51
  }
65
52
  }
66
- /**
67
- * Valida que no haya combinaciones duplicadas de segmento y subsegmento.
68
- */
69
- static guardAgainstDuplicateConfigurations(value, propertyName) {
70
- const ids = value.map((config) => config.id.trim());
71
- const uniqueIds = new Set(ids);
72
- if (ids.length !== uniqueIds.size) {
73
- throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${propertyName}.ids`, 'unique configuration IDs', 'array with duplicated IDs');
53
+ static guardAgainstDuplicateConfigurationIds(value, propertyName) {
54
+ const configurationIds = value.map((configuration) => configuration.id);
55
+ const uniqueIds = new Set(configurationIds);
56
+ if (configurationIds.length !== uniqueIds.size) {
57
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${propertyName}.id`, 'unique configuration IDs', 'duplicate IDs found');
74
58
  }
75
59
  }
76
- /**
77
- * Valida una configuración individual.
78
- */
79
60
  static guardAgainstInvalidConfiguration(configuration, index, basePropertyName) {
80
61
  const propertyName = `${basePropertyName}[${index}]`;
81
62
  this.guardAgainstInvalidConfigurationStructure(configuration, propertyName);
82
- this.guardAgainstInvalidId(configuration.id, `${propertyName}.id`);
83
- this.guardAgainstInvalidSegment(configuration.segment, `${propertyName}.segment`);
84
- this.guardAgainstInvalidSubsegment(configuration.subsegment, `${propertyName}.subsegment`);
85
- this.guardAgainstInvalidEmissionSources(configuration.emissionSources, `${propertyName}.emissionSources`);
86
- }
87
- /**
88
- * Valida que el objeto de configuración tenga la estructura correcta.
89
- */
63
+ this.guardAgainstInvalidConfigurationId(configuration.id, `${propertyName}.id`);
64
+ this.guardAgainstInvalidProductSegment(configuration.segment, `${propertyName}.segment`);
65
+ this.guardAgainstInvalidProductSubsegment(configuration.subsegment, `${propertyName}.subsegment`);
66
+ this.guardAgainstInvalidEmissionSourceConfigurations(configuration.emissionSourceConfigurations, `${propertyName}.emissionSourceConfigurations`);
67
+ }
90
68
  static guardAgainstInvalidConfigurationStructure(configuration, propertyName) {
91
69
  if (!configuration || typeof configuration !== 'object') {
92
70
  throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'ProductCarbonFootprintSegmentConfigurationReference object', typeof configuration);
@@ -95,40 +73,57 @@ class ProductCarbonFootprintSegmentConfigurationReferences extends ValueObject_1
95
73
  throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.id`, 'string', typeof configuration.id);
96
74
  }
97
75
  if (!configuration.segment || typeof configuration.segment !== 'object') {
98
- throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.segment`, 'ProductConfigurationCarbonFootprintSegmentReference object', typeof configuration.segment);
76
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.segment`, 'ProductSegmentReference object', typeof configuration.segment);
99
77
  }
100
- // subsegment puede ser null
101
- if (configuration.subsegment !== null && (typeof configuration.subsegment !== 'object')) {
102
- throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.subsegment`, 'ProductConfigurationCarbonFootprintSubsegmentReference object or null', typeof configuration.subsegment);
78
+ if (configuration.subsegment !== null && typeof configuration.subsegment !== 'object') {
79
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.subsegment`, 'ProductSubsegmentReference object or null', typeof configuration.subsegment);
103
80
  }
104
- if (!Array.isArray(configuration.emissionSources)) {
105
- throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.emissionSources`, 'array of EmissionSource enum values', typeof configuration.emissionSources);
81
+ if (!Array.isArray(configuration.emissionSourceConfigurations)) {
82
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.emissionSourceConfigurations`, 'EmissionSourceConfiguration array', typeof configuration.emissionSourceConfigurations);
106
83
  }
107
84
  }
108
- /**
109
- * Valida el ID de la configuración.
110
- */
111
- static guardAgainstInvalidId(id, propertyName) {
85
+ static guardAgainstInvalidConfigurationId(id, propertyName) {
112
86
  String_1.String.guardAgainstEmptyValue(id, propertyName);
113
87
  AggregateId_1.AggregateId.guardAgainstInvalidId(id, propertyName);
114
88
  }
115
- /**
116
- * Valida la referencia de segmento.
117
- */
118
- static guardAgainstInvalidSegment(segment, propertyName) {
89
+ static guardAgainstInvalidProductSegment(segment, propertyName) {
119
90
  this.guardAgainstInvalidSegmentReference(segment, propertyName, 'ProductConfigurationCarbonFootprintSegmentReference');
120
91
  }
121
- /**
122
- * Valida la referencia de subsegmento (puede ser null).
123
- */
124
- static guardAgainstInvalidSubsegment(subsegment, propertyName) {
92
+ static guardAgainstInvalidProductSubsegment(subsegment, propertyName) {
125
93
  if (subsegment !== null) {
126
94
  this.guardAgainstInvalidSegmentReference(subsegment, propertyName, 'ProductConfigurationCarbonFootprintSubsegmentReference');
127
95
  }
128
96
  }
129
- /**
130
- * Valida una referencia de segmento genérica.
131
- */
97
+ static guardAgainstInvalidEmissionSourceConfigurations(emissionSourceConfigurations, propertyName) {
98
+ if (!Array.isArray(emissionSourceConfigurations)) {
99
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'EmissionSourceConfiguration array', typeof emissionSourceConfigurations);
100
+ }
101
+ if (emissionSourceConfigurations.length === 0) {
102
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-empty EmissionSourceConfiguration array', 'empty array');
103
+ }
104
+ const validEmissionSources = Object.values(EmissionSource_1.EmissionSource);
105
+ const seenEmissionSources = new Set();
106
+ emissionSourceConfigurations.forEach((configuration, index) => {
107
+ const elementPath = `${propertyName}[${index}]`;
108
+ if (!configuration || typeof configuration !== 'object') {
109
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(elementPath, 'EmissionSourceConfiguration object', typeof configuration);
110
+ }
111
+ if (typeof configuration.emissionSource !== 'string') {
112
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${elementPath}.emissionSource`, 'EmissionSource enum value', typeof configuration.emissionSource);
113
+ }
114
+ if (!validEmissionSources.includes(configuration.emissionSource)) {
115
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${elementPath}.emissionSource`, `valid EmissionSource enum value (${validEmissionSources.join(', ')})`, configuration.emissionSource);
116
+ }
117
+ if (typeof configuration.dynamicFormCode !== 'string') {
118
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${elementPath}.dynamicFormCode`, 'string', typeof configuration.dynamicFormCode);
119
+ }
120
+ String_1.String.guardAgainstEmptyValue(configuration.dynamicFormCode, `${elementPath}.dynamicFormCode`);
121
+ if (seenEmissionSources.has(configuration.emissionSource)) {
122
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${elementPath}.emissionSource`, 'unique emissionSource within emissionSourceConfigurations', `duplicate emissionSource '${configuration.emissionSource}'`);
123
+ }
124
+ seenEmissionSources.add(configuration.emissionSource);
125
+ });
126
+ }
132
127
  static guardAgainstInvalidSegmentReference(reference, propertyName, typeName) {
133
128
  if (!reference || typeof reference !== 'object') {
134
129
  throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, `${typeName} object`, typeof reference);
@@ -139,255 +134,110 @@ class ProductCarbonFootprintSegmentConfigurationReferences extends ValueObject_1
139
134
  String_1.String.guardAgainstEmptyValue(reference.id, `${propertyName}.id`);
140
135
  AggregateId_1.AggregateId.guardAgainstInvalidId(reference.id, `${propertyName}.id`);
141
136
  }
142
- /**
143
- * Valida el array de fuentes de emisión.
144
- */
145
- static guardAgainstInvalidEmissionSources(emissionSources, propertyName) {
146
- if (!Array.isArray(emissionSources)) {
147
- throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'array of EmissionSource enum values', typeof emissionSources);
148
- }
149
- if (emissionSources.length === 0) {
150
- throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-empty array of emission sources', 'empty array');
151
- }
152
- emissionSources.forEach((source, index) => {
153
- if (typeof source !== 'string') {
154
- throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}[${index}]`, 'EmissionSource enum value', typeof source);
155
- }
156
- if (!Object.values(EmissionSource_1.EmissionSource).includes(source)) {
157
- throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${propertyName}[${index}]`, `valid EmissionSource enum value (${Object.values(EmissionSource_1.EmissionSource).join(', ')})`, source);
158
- }
159
- });
160
- // Verificar que no haya duplicados
161
- const uniqueSources = new Set(emissionSources);
162
- if (emissionSources.length !== uniqueSources.size) {
163
- throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'array with unique emission sources', 'array with duplicated sources');
164
- }
165
- }
166
- /**
167
- * Configuraciones de segmento de producto (inmutable).
168
- */
169
137
  get configurations() {
170
138
  return Object.freeze([...__classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f")]);
171
139
  }
172
- /**
173
- * Opciones de configuración de la colección.
174
- */
175
140
  get options() {
176
141
  return Object.freeze({ ...__classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, "f") });
177
142
  }
178
- /**
179
- * Número de configuraciones en la colección.
180
- */
181
143
  get length() {
182
144
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length;
183
145
  }
184
- /**
185
- * Verifica si la colección está vacía.
186
- */
187
146
  isEmpty() {
188
147
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length === 0;
189
148
  }
190
- /**
191
- * Verifica si la colección tiene configuraciones.
192
- */
193
149
  hasConfigurations() {
194
150
  return !this.isEmpty();
195
151
  }
196
- /**
197
- * Verifica si la colección permite estar vacía.
198
- */
199
152
  allowsEmpty() {
200
153
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, "f").allowEmpty === true;
201
154
  }
202
- /**
203
- * Verifica si la colección requiere tener elementos.
204
- */
205
155
  requiresElements() {
206
156
  return !this.allowsEmpty();
207
157
  }
208
- /**
209
- * Verifica si la colección está en un estado válido según sus opciones.
210
- */
211
158
  isValidState() {
212
159
  if (this.requiresElements() && this.isEmpty()) {
213
160
  return false;
214
161
  }
215
162
  return true;
216
163
  }
217
- /**
218
- * Obtiene una configuración por su ID.
219
- */
220
164
  getConfigurationById(configurationId) {
221
165
  const configuration = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").find((config) => config.id === configurationId.trim());
222
166
  return configuration || null;
223
167
  }
224
- /**
225
- * Verifica si existe una configuración con el ID especificado.
226
- */
227
168
  hasConfigurationId(configurationId) {
228
169
  return this.getConfigurationById(configurationId) !== null;
229
170
  }
230
- /**
231
- * Obtiene una configuración por su índice.
232
- */
233
171
  getConfigurationAt(index) {
234
172
  if (index < 0 || index >= __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length) {
235
173
  return null;
236
174
  }
237
175
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f")[index];
238
176
  }
239
- /**
240
- * Obtiene todas las configuraciones por ID de segmento.
241
- */
177
+ getAllConfigurationIds() {
178
+ return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").map((config) => config.id);
179
+ }
242
180
  getConfigurationsBySegmentId(segmentId) {
243
181
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.segment.id === segmentId.trim());
244
182
  }
245
- /**
246
- * Obtiene todas las configuraciones por ID de subsegmento.
247
- */
248
- getConfigurationsBySubsegmentId(subsegmentId) {
249
- return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.subsegment?.id === subsegmentId.trim());
250
- }
251
- /**
252
- * Obtiene todas las configuraciones que no tienen subsegmento (null).
253
- */
254
- getConfigurationsWithoutSubsegment() {
255
- return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.subsegment === null);
183
+ getConfigurationsByEmissionSource(emissionSource) {
184
+ return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.emissionSourceConfigurations.some((esc) => esc.emissionSource === emissionSource));
256
185
  }
257
- /**
258
- * Obtiene todas las configuraciones que tienen subsegmento.
259
- */
260
186
  getConfigurationsWithSubsegment() {
261
187
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.subsegment !== null);
262
188
  }
263
- /**
264
- * Obtiene todas las configuraciones por fuente de emisión.
265
- */
266
- getConfigurationsByEmissionSource(emissionSource) {
267
- return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.emissionSources.includes(emissionSource));
189
+ getConfigurationsWithoutSubsegment() {
190
+ return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.subsegment === null);
268
191
  }
269
- /**
270
- * Obtiene todas las combinaciones únicas de segmento-subsegmento.
271
- */
272
- getAllSegmentSubsegmentCombinations() {
273
- return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").map((config) => ({
274
- segmentId: config.segment.id,
275
- subsegmentId: config.subsegment?.id || null,
276
- }));
192
+ hasAnyConfigurationWithSubsegment() {
193
+ return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").some((config) => config.subsegment !== null);
277
194
  }
278
- /**
279
- * Obtiene todos los IDs únicos de segmentos.
280
- */
281
195
  getUniqueSegmentIds() {
282
196
  const ids = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").map((config) => config.segment.id);
283
197
  return [...new Set(ids)];
284
198
  }
285
- /**
286
- * Obtiene todos los IDs únicos de subsegmentos (excluyendo null).
287
- */
288
- getUniqueSubsegmentIds() {
289
- const ids = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f")
290
- .map((config) => config.subsegment?.id)
291
- .filter((id) => id !== undefined && id !== null);
292
- return [...new Set(ids)];
293
- }
294
- /**
295
- * Obtiene todas las fuentes de emisión únicas.
296
- */
297
199
  getUniqueEmissionSources() {
298
- const sources = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").flatMap((config) => config.emissionSources);
200
+ const sources = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").flatMap((config) => config.emissionSourceConfigurations.map((esc) => esc.emissionSource));
299
201
  return [...new Set(sources)];
300
202
  }
301
- /**
302
- * Busca configuraciones que coincidan con un patrón de búsqueda por ID.
303
- */
203
+ getDynamicFormCodeFor(configurationId, emissionSource) {
204
+ const configuration = this.getConfigurationById(configurationId);
205
+ if (!configuration)
206
+ return null;
207
+ const match = configuration.emissionSourceConfigurations.find((esc) => esc.emissionSource === emissionSource);
208
+ return match ? match.dynamicFormCode : null;
209
+ }
304
210
  findConfigurationsMatching(searchText) {
305
211
  const lowerSearchText = searchText.toLowerCase().trim();
306
212
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").filter((config) => config.id.toLowerCase().includes(lowerSearchText)
307
213
  || config.segment.id.toLowerCase().includes(lowerSearchText)
308
- || (config.subsegment?.id?.toLowerCase().includes(lowerSearchText) || false)
309
- || config.emissionSources.some((source) => source.toLowerCase().includes(lowerSearchText)));
310
- }
311
- /**
312
- * Agrupa configuraciones por segmento.
313
- */
314
- groupConfigurationsBySegment() {
315
- const groupMap = new Map();
316
- __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").forEach((config) => {
317
- const segmentKey = config.segment.id;
318
- const existing = groupMap.get(segmentKey) || [];
319
- existing.push(config);
320
- groupMap.set(segmentKey, existing);
321
- });
322
- return groupMap;
323
- }
324
- /**
325
- * Agrupa configuraciones por fuente de emisión.
326
- */
327
- groupConfigurationsByEmissionSource() {
328
- const groupMap = new Map();
329
- __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").forEach((config) => {
330
- config.emissionSources.forEach((source) => {
331
- const existing = groupMap.get(source) || [];
332
- existing.push(config);
333
- groupMap.set(source, existing);
334
- });
335
- });
336
- return groupMap;
214
+ || config.emissionSourceConfigurations.some((esc) => esc.emissionSource.toLowerCase().includes(lowerSearchText)
215
+ || esc.dynamicFormCode.toLowerCase().includes(lowerSearchText))
216
+ || (config.subsegment && config.subsegment.id.toLowerCase().includes(lowerSearchText)));
337
217
  }
338
- /**
339
- * Agrupa configuraciones por presencia de subsegmento.
340
- */
341
- groupConfigurationsBySubsegmentPresence() {
342
- return {
343
- withSubsegment: this.getConfigurationsWithSubsegment(),
344
- withoutSubsegment: this.getConfigurationsWithoutSubsegment(),
345
- };
346
- }
347
- /**
348
- * Obtiene los primeros N configuraciones.
349
- */
350
218
  getFirstN(count) {
351
219
  if (count <= 0) {
352
220
  return [];
353
221
  }
354
222
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").slice(0, count);
355
223
  }
356
- /**
357
- * Obtiene los últimos N configuraciones.
358
- */
359
224
  getLastN(count) {
360
225
  if (count <= 0) {
361
226
  return [];
362
227
  }
363
228
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").slice(-count);
364
229
  }
365
- /**
366
- * Obtiene estadísticas de la colección.
367
- */
368
230
  getStatistics() {
369
- const totalConfigurations = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length;
370
- const uniqueSegments = this.getUniqueSegmentIds().length;
371
- const uniqueSubsegments = this.getUniqueSubsegmentIds().length;
372
- const configurationsWithSubsegment = this.getConfigurationsWithSubsegment().length;
373
- const configurationsWithoutSubsegment = this.getConfigurationsWithoutSubsegment().length;
374
- const uniqueEmissionSources = this.getUniqueEmissionSources().length;
375
- const averageConfigurationsPerSegment = uniqueSegments > 0 ? totalConfigurations / uniqueSegments : 0;
376
231
  return {
377
- totalConfigurations,
378
- uniqueSegments,
379
- uniqueSubsegments,
380
- configurationsWithSubsegment,
381
- configurationsWithoutSubsegment,
382
- uniqueEmissionSources,
383
- averageConfigurationsPerSegment: Math.round(averageConfigurationsPerSegment * 100) / 100,
232
+ totalConfigurations: __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length,
233
+ configurationsWithSubsegment: this.getConfigurationsWithSubsegment().length,
234
+ configurationsWithoutSubsegment: this.getConfigurationsWithoutSubsegment().length,
235
+ uniqueSegments: this.getUniqueSegmentIds().length,
236
+ uniqueEmissionSources: this.getUniqueEmissionSources().length,
384
237
  allowsEmpty: __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, "f").allowEmpty === true,
385
238
  isValidState: this.isValidState(),
386
239
  };
387
240
  }
388
- /**
389
- * Compara la igualdad semántica con otra colección de configuraciones.
390
- */
391
241
  equals(other) {
392
242
  if (!(other instanceof ProductCarbonFootprintSegmentConfigurationReferences)) {
393
243
  return false;
@@ -403,88 +253,64 @@ class ProductCarbonFootprintSegmentConfigurationReferences extends ValueObject_1
403
253
  return this.configurationsAreEqual(config, otherConfig);
404
254
  });
405
255
  }
406
- /**
407
- * Compara si dos configuraciones son iguales.
408
- */
409
- configurationsAreEqual(config1, config2) {
410
- return (this.segmentReferencesAreEqual(config1.segment, config2.segment)
411
- && this.subsegmentReferencesAreEqual(config1.subsegment, config2.subsegment)
412
- && this.emissionSourcesAreEqual(config1.emissionSources, config2.emissionSources));
413
- }
414
- /**
415
- * Compara referencias de segmento.
416
- */
417
- segmentReferencesAreEqual(segment1, segment2) {
418
- return segment1.id === segment2.id;
419
- }
420
- /**
421
- * Compara referencias de subsegmento (pueden ser null).
422
- */
423
- subsegmentReferencesAreEqual(subseg1, subseg2) {
424
- if (subseg1 === null && subseg2 === null) {
256
+ configurationsAreEqual(leftConfiguration, rightConfiguration) {
257
+ return (leftConfiguration.id === rightConfiguration.id
258
+ && this.segmentReferencesAreEqual(leftConfiguration.segment, rightConfiguration.segment)
259
+ && this.subsegmentReferencesAreEqual(leftConfiguration.subsegment, rightConfiguration.subsegment)
260
+ && this.emissionSourceConfigurationsAreEqual(leftConfiguration.emissionSourceConfigurations, rightConfiguration.emissionSourceConfigurations));
261
+ }
262
+ segmentReferencesAreEqual(leftSegment, rightSegment) {
263
+ return leftSegment.id === rightSegment.id;
264
+ }
265
+ subsegmentReferencesAreEqual(leftSubsegment, rightSubsegment) {
266
+ if (leftSubsegment === null && rightSubsegment === null) {
425
267
  return true;
426
268
  }
427
- if (subseg1 === null || subseg2 === null) {
269
+ if (leftSubsegment === null || rightSubsegment === null) {
428
270
  return false;
429
271
  }
430
- return subseg1.id === subseg2.id;
272
+ return leftSubsegment.id === rightSubsegment.id;
431
273
  }
432
- /**
433
- * Compara arrays de fuentes de emisión.
434
- */
435
- emissionSourcesAreEqual(sources1, sources2) {
436
- if (sources1.length !== sources2.length) {
274
+ emissionSourceConfigurationsAreEqual(leftConfigurations, rightConfigurations) {
275
+ if (leftConfigurations.length !== rightConfigurations.length) {
437
276
  return false;
438
277
  }
439
- const sorted1 = [...sources1].sort();
440
- const sorted2 = [...sources2].sort();
441
- return sorted1.every((source, index) => source === sorted2[index]);
278
+ const leftSorted = [...leftConfigurations].sort((left, right) => left.emissionSource.localeCompare(right.emissionSource));
279
+ const rightSorted = [...rightConfigurations].sort((left, right) => left.emissionSource.localeCompare(right.emissionSource));
280
+ return leftSorted.every((configuration, index) => (configuration.emissionSource === rightSorted[index].emissionSource
281
+ && configuration.dynamicFormCode === rightSorted[index].dynamicFormCode));
442
282
  }
443
- /**
444
- * Genera un hash code para usar en colecciones.
445
- */
446
283
  hashCode() {
447
284
  const configHashes = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f")
448
285
  .map((config) => {
449
- const subsegmentId = config.subsegment?.id || 'null';
450
- const sourcesHash = config.emissionSources.sort().join(',');
451
- return `${config.id}_${config.segment.id}_${subsegmentId}_${sourcesHash}`;
286
+ const sortedConfigurations = [...config.emissionSourceConfigurations]
287
+ .sort((left, right) => left.emissionSource.localeCompare(right.emissionSource))
288
+ .map((esc) => `${esc.emissionSource}:${esc.dynamicFormCode}`)
289
+ .join(',');
290
+ return `${config.id}_${config.segment.id}_${sortedConfigurations}`;
452
291
  })
453
292
  .join('|');
454
293
  const optionsHash = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, "f").allowEmpty ? 'allowEmpty' : 'requireElements';
455
294
  return `productSegmentConfigurations_${optionsHash}_${configHashes}`;
456
295
  }
457
- /**
458
- * Convierte a representación primitiva para persistencia.
459
- */
460
296
  toPrimitives() {
461
297
  return __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").map((config) => ({
462
298
  id: config.id,
463
- segment: {
464
- id: config.segment.id,
465
- },
466
- subsegment: config.subsegment ? {
467
- id: config.subsegment.id,
468
- } : null,
469
- emissionSources: config.emissionSources,
299
+ segment: { id: config.segment.id },
300
+ subsegment: config.subsegment ? { id: config.subsegment.id } : null,
301
+ emissionSourceConfigurations: config.emissionSourceConfigurations.map((esc) => ({
302
+ emissionSource: esc.emissionSource,
303
+ dynamicFormCode: esc.dynamicFormCode,
304
+ })),
470
305
  }));
471
306
  }
472
- /**
473
- * Representación como string (resumen de la colección).
474
- */
475
307
  toString() {
476
308
  const emptyStatus = __classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_options, "f").allowEmpty ? 'puede estar vacía' : 'requiere elementos';
477
309
  return `Configuraciones de Segmento de Producto (${__classPrivateFieldGet(this, _ProductCarbonFootprintSegmentConfigurationReferences_configurations, "f").length}) - ${emptyStatus}`;
478
310
  }
479
- /**
480
- * Representación JSON para serialización.
481
- */
482
311
  toJSON() {
483
312
  return this.toPrimitives();
484
313
  }
485
- /**
486
- * Método estático para validar si un array es válido.
487
- */
488
314
  static isValidConfigurations(value, options = ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_OPTIONS) {
489
315
  try {
490
316
  const finalOptions = { ...ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_OPTIONS, ...options };
@@ -500,5 +326,5 @@ exports.ProductCarbonFootprintSegmentConfigurationReferences = ProductCarbonFoot
500
326
  _ProductCarbonFootprintSegmentConfigurationReferences_configurations = new WeakMap(), _ProductCarbonFootprintSegmentConfigurationReferences_options = new WeakMap();
501
327
  ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_PROPERTY_NAME = 'productSegmentConfigurationReferences';
502
328
  ProductCarbonFootprintSegmentConfigurationReferences.DEFAULT_OPTIONS = {
503
- allowEmpty: false, // Por defecto no permite estar vacío
329
+ allowEmpty: false,
504
330
  };