@carbonbox/domain 0.49.1 → 0.51.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 (133) hide show
  1. package/build/carbonbox/company-resources/events/domain/entity/Event.js +11 -2
  2. package/build/carbonbox/company-resources/events/editions/domain/entity/EventEdition.js +11 -2
  3. package/build/carbonbox/company-resources/products/domain/entity/Product.js +11 -2
  4. package/build/carbonbox/shared/domain/enums/ErrorCode.js +9 -1
  5. package/build/carbonbox/shared/domain/enums/SemanticUuidPrefix.js +2 -0
  6. package/build/carbonbox/shared/domain/exceptions/InvalidCrossTenantReferenceError.js +36 -0
  7. package/build/carbonbox/shared/domain/policies/CarbonClientOwnershipPolicy.js +55 -0
  8. package/build/carbonbox/stakeholders/carbon-clients/domain/value-objects/CarbonClientPermissions.js +18 -0
  9. package/build/carbonbox/stakeholders/carbon-coordinators/domain/value-objects/CarbonCoordinatorPermissions.js +18 -0
  10. package/build/carbonbox/stakeholders/carbon-managers/domain/value-objects/CarbonManagerPermissions.js +18 -0
  11. package/build/carbonbox/stakeholders/shared/domain/constants/CARBON_CLIENT_PERMISSION_CEILING.js +87 -0
  12. package/build/carbonbox/stakeholders/shared/domain/constants/CARBON_COORDINATOR_PERMISSION_CEILING.js +88 -0
  13. package/build/carbonbox/stakeholders/shared/domain/constants/CARBON_MANAGER_PERMISSION_CEILING.js +29 -0
  14. package/build/carbonbox/stakeholders/shared/domain/exceptions/PermissionAboveRoleCeilingError.js +33 -0
  15. package/build/carbonbox/stakeholders/shared/domain/policies/RolePermissionCeilingPolicy.js +55 -0
  16. package/build/carbonbox/stakeholders/user-invitations/domain/constants/USER_INVITATION_VALIDITY_IN_DAYS.js +11 -0
  17. package/build/carbonbox/stakeholders/user-invitations/domain/entity/IUserInvitation.js +2 -0
  18. package/build/carbonbox/stakeholders/user-invitations/domain/entity/UserInvitation.js +229 -0
  19. package/build/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationAlreadyConsumedError.js +31 -0
  20. package/build/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationExpiredError.js +31 -0
  21. package/build/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationRevokedError.js +31 -0
  22. package/build/carbonbox/stakeholders/user-invitations/domain/repository/IUserInvitationRepository.js +2 -0
  23. package/build/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationIssueProps.js +2 -0
  24. package/build/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationPrimitives.js +2 -0
  25. package/build/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationProps.js +2 -0
  26. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationConsumedAt.js +21 -0
  27. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEmail.js +24 -0
  28. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEvaluatedAt.js +29 -0
  29. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationExpiresAt.js +37 -0
  30. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationId.js +44 -0
  31. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationInvitedByStakeholder.js +50 -0
  32. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationIssuedAt.js +24 -0
  33. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationRevokedAt.js +21 -0
  34. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationTokenHash.js +37 -0
  35. package/build/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationUserId.js +47 -0
  36. package/build/main/index.js +54 -6
  37. package/build/types/carbonbox/company-resources/events/domain/entity/Event.d.ts +2 -0
  38. package/build/types/carbonbox/company-resources/events/domain/entity/Event.d.ts.map +1 -1
  39. package/build/types/carbonbox/company-resources/events/domain/entity/IEvent.d.ts +2 -0
  40. package/build/types/carbonbox/company-resources/events/domain/entity/IEvent.d.ts.map +1 -1
  41. package/build/types/carbonbox/company-resources/events/domain/repository/IEventRepository.d.ts +2 -2
  42. package/build/types/carbonbox/company-resources/events/domain/repository/IEventRepository.d.ts.map +1 -1
  43. package/build/types/carbonbox/company-resources/events/domain/types/EventPrimitives.d.ts +1 -0
  44. package/build/types/carbonbox/company-resources/events/domain/types/EventPrimitives.d.ts.map +1 -1
  45. package/build/types/carbonbox/company-resources/events/domain/types/EventProps.d.ts +1 -0
  46. package/build/types/carbonbox/company-resources/events/domain/types/EventProps.d.ts.map +1 -1
  47. package/build/types/carbonbox/company-resources/events/editions/domain/entity/EventEdition.d.ts +2 -0
  48. package/build/types/carbonbox/company-resources/events/editions/domain/entity/EventEdition.d.ts.map +1 -1
  49. package/build/types/carbonbox/company-resources/events/editions/domain/entity/IEventEdition.d.ts +2 -0
  50. package/build/types/carbonbox/company-resources/events/editions/domain/entity/IEventEdition.d.ts.map +1 -1
  51. package/build/types/carbonbox/company-resources/events/editions/domain/repository/IEventEditionRepository.d.ts +2 -2
  52. package/build/types/carbonbox/company-resources/events/editions/domain/repository/IEventEditionRepository.d.ts.map +1 -1
  53. package/build/types/carbonbox/company-resources/events/editions/domain/types/EventEditionPrimitives.d.ts +1 -0
  54. package/build/types/carbonbox/company-resources/events/editions/domain/types/EventEditionPrimitives.d.ts.map +1 -1
  55. package/build/types/carbonbox/company-resources/events/editions/domain/types/EventEditionProps.d.ts +1 -0
  56. package/build/types/carbonbox/company-resources/events/editions/domain/types/EventEditionProps.d.ts.map +1 -1
  57. package/build/types/carbonbox/company-resources/products/domain/entity/IProduct.d.ts +2 -0
  58. package/build/types/carbonbox/company-resources/products/domain/entity/IProduct.d.ts.map +1 -1
  59. package/build/types/carbonbox/company-resources/products/domain/entity/Product.d.ts +2 -0
  60. package/build/types/carbonbox/company-resources/products/domain/entity/Product.d.ts.map +1 -1
  61. package/build/types/carbonbox/company-resources/products/domain/repository/IProductRepository.d.ts +2 -2
  62. package/build/types/carbonbox/company-resources/products/domain/repository/IProductRepository.d.ts.map +1 -1
  63. package/build/types/carbonbox/company-resources/products/domain/types/ProductPrimitives.d.ts +1 -0
  64. package/build/types/carbonbox/company-resources/products/domain/types/ProductPrimitives.d.ts.map +1 -1
  65. package/build/types/carbonbox/company-resources/products/domain/types/ProductProps.d.ts +1 -0
  66. package/build/types/carbonbox/company-resources/products/domain/types/ProductProps.d.ts.map +1 -1
  67. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts +7 -2
  68. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts.map +1 -1
  69. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts +1 -0
  70. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts.map +1 -1
  71. package/build/types/carbonbox/shared/domain/exceptions/InvalidCrossTenantReferenceError.d.ts +16 -0
  72. package/build/types/carbonbox/shared/domain/exceptions/InvalidCrossTenantReferenceError.d.ts.map +1 -0
  73. package/build/types/carbonbox/shared/domain/policies/CarbonClientOwnershipPolicy.d.ts +36 -0
  74. package/build/types/carbonbox/shared/domain/policies/CarbonClientOwnershipPolicy.d.ts.map +1 -0
  75. package/build/types/carbonbox/stakeholders/carbon-clients/domain/value-objects/CarbonClientPermissions.d.ts +7 -0
  76. package/build/types/carbonbox/stakeholders/carbon-clients/domain/value-objects/CarbonClientPermissions.d.ts.map +1 -1
  77. package/build/types/carbonbox/stakeholders/carbon-coordinators/domain/value-objects/CarbonCoordinatorPermissions.d.ts +7 -0
  78. package/build/types/carbonbox/stakeholders/carbon-coordinators/domain/value-objects/CarbonCoordinatorPermissions.d.ts.map +1 -1
  79. package/build/types/carbonbox/stakeholders/carbon-managers/domain/value-objects/CarbonManagerPermissions.d.ts +7 -0
  80. package/build/types/carbonbox/stakeholders/carbon-managers/domain/value-objects/CarbonManagerPermissions.d.ts.map +1 -1
  81. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_CLIENT_PERMISSION_CEILING.d.ts +14 -0
  82. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_CLIENT_PERMISSION_CEILING.d.ts.map +1 -0
  83. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_COORDINATOR_PERMISSION_CEILING.d.ts +14 -0
  84. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_COORDINATOR_PERMISSION_CEILING.d.ts.map +1 -0
  85. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_MANAGER_PERMISSION_CEILING.d.ts +14 -0
  86. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_MANAGER_PERMISSION_CEILING.d.ts.map +1 -0
  87. package/build/types/carbonbox/stakeholders/shared/domain/exceptions/PermissionAboveRoleCeilingError.d.ts +12 -0
  88. package/build/types/carbonbox/stakeholders/shared/domain/exceptions/PermissionAboveRoleCeilingError.d.ts.map +1 -0
  89. package/build/types/carbonbox/stakeholders/shared/domain/policies/RolePermissionCeilingPolicy.d.ts +26 -0
  90. package/build/types/carbonbox/stakeholders/shared/domain/policies/RolePermissionCeilingPolicy.d.ts.map +1 -0
  91. package/build/types/carbonbox/stakeholders/user-invitations/domain/constants/USER_INVITATION_VALIDITY_IN_DAYS.d.ts +9 -0
  92. package/build/types/carbonbox/stakeholders/user-invitations/domain/constants/USER_INVITATION_VALIDITY_IN_DAYS.d.ts.map +1 -0
  93. package/build/types/carbonbox/stakeholders/user-invitations/domain/entity/IUserInvitation.d.ts +20 -0
  94. package/build/types/carbonbox/stakeholders/user-invitations/domain/entity/IUserInvitation.d.ts.map +1 -0
  95. package/build/types/carbonbox/stakeholders/user-invitations/domain/entity/UserInvitation.d.ts +67 -0
  96. package/build/types/carbonbox/stakeholders/user-invitations/domain/entity/UserInvitation.d.ts.map +1 -0
  97. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationAlreadyConsumedError.d.ts +12 -0
  98. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationAlreadyConsumedError.d.ts.map +1 -0
  99. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationExpiredError.d.ts +12 -0
  100. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationExpiredError.d.ts.map +1 -0
  101. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationRevokedError.d.ts +12 -0
  102. package/build/types/carbonbox/stakeholders/user-invitations/domain/exceptions/UserInvitationRevokedError.d.ts.map +1 -0
  103. package/build/types/carbonbox/stakeholders/user-invitations/domain/repository/IUserInvitationRepository.d.ts +35 -0
  104. package/build/types/carbonbox/stakeholders/user-invitations/domain/repository/IUserInvitationRepository.d.ts.map +1 -0
  105. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationIssueProps.d.ts +36 -0
  106. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationIssueProps.d.ts.map +1 -0
  107. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationPrimitives.d.ts +48 -0
  108. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationPrimitives.d.ts.map +1 -0
  109. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationProps.d.ts +43 -0
  110. package/build/types/carbonbox/stakeholders/user-invitations/domain/types/UserInvitationProps.d.ts.map +1 -0
  111. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationConsumedAt.d.ts +9 -0
  112. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationConsumedAt.d.ts.map +1 -0
  113. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEmail.d.ts +9 -0
  114. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEmail.d.ts.map +1 -0
  115. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEvaluatedAt.d.ts +14 -0
  116. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationEvaluatedAt.d.ts.map +1 -0
  117. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationExpiresAt.d.ts +18 -0
  118. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationExpiresAt.d.ts.map +1 -0
  119. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationId.d.ts +18 -0
  120. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationId.d.ts.map +1 -0
  121. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationInvitedByStakeholder.d.ts +16 -0
  122. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationInvitedByStakeholder.d.ts.map +1 -0
  123. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationIssuedAt.d.ts +9 -0
  124. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationIssuedAt.d.ts.map +1 -0
  125. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationRevokedAt.d.ts +9 -0
  126. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationRevokedAt.d.ts.map +1 -0
  127. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationTokenHash.d.ts +17 -0
  128. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationTokenHash.d.ts.map +1 -0
  129. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationUserId.d.ts +19 -0
  130. package/build/types/carbonbox/stakeholders/user-invitations/domain/value-objects/UserInvitationUserId.d.ts.map +1 -0
  131. package/build/types/main/index.d.ts +27 -0
  132. package/build/types/main/index.d.ts.map +1 -1
  133. package/package.json +1 -1
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _Event_code, _Event_name, _Event_description, _Event_editions;
13
+ var _Event_carbonClientId, _Event_code, _Event_name, _Event_description, _Event_editions;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Event = void 0;
16
16
  const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
@@ -19,18 +19,21 @@ const EventCode_1 = require("../value-objects/EventCode");
19
19
  const EventName_1 = require("../value-objects/EventName");
20
20
  const EventEditions_1 = require("../value-objects/EventEditions");
21
21
  const EventId_1 = require("../value-objects/EventId");
22
+ const CarbonClientId_1 = require("../../../../stakeholders/carbon-clients/domain/value-objects/CarbonClientId");
22
23
  class Event extends AggregateRoot_1.AggregateRoot {
23
24
  constructor(props, skipDomainValidation) {
24
25
  const id = skipDomainValidation
25
26
  ? EventId_1.EventId.fromPrimitives(props.id).toPrimitives()
26
27
  : EventId_1.EventId.create(props.id).toPrimitives();
27
28
  super({ id }, skipDomainValidation);
29
+ _Event_carbonClientId.set(this, void 0);
28
30
  _Event_code.set(this, void 0);
29
31
  _Event_name.set(this, void 0);
30
32
  _Event_description.set(this, void 0);
31
33
  _Event_editions.set(this, void 0);
32
34
  if (skipDomainValidation === false) {
33
35
  // Initialize with domain validation
36
+ __classPrivateFieldSet(this, _Event_carbonClientId, CarbonClientId_1.CarbonClientId.create(props.carbonClientId), "f");
34
37
  __classPrivateFieldSet(this, _Event_code, EventCode_1.EventCode.create(props.code), "f");
35
38
  __classPrivateFieldSet(this, _Event_name, EventName_1.EventName.create(props.name), "f");
36
39
  __classPrivateFieldSet(this, _Event_description, EventDescription_1.EventDescription.create(props.description), "f");
@@ -38,6 +41,7 @@ class Event extends AggregateRoot_1.AggregateRoot {
38
41
  }
39
42
  else {
40
43
  // Initialize from primitives (no domain validation)
44
+ __classPrivateFieldSet(this, _Event_carbonClientId, CarbonClientId_1.CarbonClientId.fromPrimitives(props.carbonClientId), "f");
41
45
  __classPrivateFieldSet(this, _Event_code, EventCode_1.EventCode.fromPrimitives(props.code), "f");
42
46
  __classPrivateFieldSet(this, _Event_name, EventName_1.EventName.fromPrimitives(props.name), "f");
43
47
  __classPrivateFieldSet(this, _Event_description, EventDescription_1.EventDescription.fromPrimitives(props.description), "f");
@@ -50,6 +54,7 @@ class Event extends AggregateRoot_1.AggregateRoot {
50
54
  static fromPrimitives(primitives) {
51
55
  const props = {
52
56
  id: primitives.id,
57
+ carbonClientId: primitives.carbonClientId,
53
58
  code: primitives.code,
54
59
  name: primitives.name,
55
60
  description: primitives.description,
@@ -60,12 +65,16 @@ class Event extends AggregateRoot_1.AggregateRoot {
60
65
  get toPrimitives() {
61
66
  return {
62
67
  id: this.id.toPrimitives(),
68
+ carbonClientId: __classPrivateFieldGet(this, _Event_carbonClientId, "f").toPrimitives(),
63
69
  code: __classPrivateFieldGet(this, _Event_code, "f").toPrimitives(),
64
70
  name: __classPrivateFieldGet(this, _Event_name, "f").toPrimitives(),
65
71
  description: __classPrivateFieldGet(this, _Event_description, "f").toPrimitives(),
66
72
  editions: __classPrivateFieldGet(this, _Event_editions, "f").toPrimitives(),
67
73
  };
68
74
  }
75
+ get carbonClientId() {
76
+ return __classPrivateFieldGet(this, _Event_carbonClientId, "f");
77
+ }
69
78
  get code() {
70
79
  return __classPrivateFieldGet(this, _Event_code, "f");
71
80
  }
@@ -80,4 +89,4 @@ class Event extends AggregateRoot_1.AggregateRoot {
80
89
  }
81
90
  }
82
91
  exports.Event = Event;
83
- _Event_code = new WeakMap(), _Event_name = new WeakMap(), _Event_description = new WeakMap(), _Event_editions = new WeakMap();
92
+ _Event_carbonClientId = new WeakMap(), _Event_code = new WeakMap(), _Event_name = new WeakMap(), _Event_description = new WeakMap(), _Event_editions = new WeakMap();
@@ -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 _EventEdition_code, _EventEdition_name, _EventEdition_referenceVenue, _EventEdition_expectedAttendees, _EventEdition_staffCount, _EventEdition_executionPeriod, _EventEdition_parentEvent;
13
+ var _EventEdition_carbonClientId, _EventEdition_code, _EventEdition_name, _EventEdition_referenceVenue, _EventEdition_expectedAttendees, _EventEdition_staffCount, _EventEdition_executionPeriod, _EventEdition_parentEvent;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EventEdition = void 0;
16
16
  const AggregateRoot_1 = require("../../../../../shared/domain/entities/AggregateRoot");
@@ -22,12 +22,14 @@ const EventEditionParentEvent_1 = require("../value-objects/EventEditionParentEv
22
22
  const EventEditionReferenceVenue_1 = require("../value-objects/EventEditionReferenceVenue");
23
23
  const EventEditionStaffCount_1 = require("../value-objects/EventEditionStaffCount");
24
24
  const EventEditionId_1 = require("../value-objects/EventEditionId");
25
+ const CarbonClientId_1 = require("../../../../../stakeholders/carbon-clients/domain/value-objects/CarbonClientId");
25
26
  class EventEdition extends AggregateRoot_1.AggregateRoot {
26
27
  constructor(props, skipDomainValidation) {
27
28
  const id = skipDomainValidation
28
29
  ? EventEditionId_1.EventEditionId.fromPrimitives(props.id).toPrimitives()
29
30
  : EventEditionId_1.EventEditionId.create(props.id).toPrimitives();
30
31
  super({ id }, skipDomainValidation);
32
+ _EventEdition_carbonClientId.set(this, void 0);
31
33
  _EventEdition_code.set(this, void 0);
32
34
  _EventEdition_name.set(this, void 0);
33
35
  _EventEdition_referenceVenue.set(this, void 0);
@@ -37,6 +39,7 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
37
39
  _EventEdition_parentEvent.set(this, void 0);
38
40
  if (skipDomainValidation === false) {
39
41
  // Initialize with domain validation
42
+ __classPrivateFieldSet(this, _EventEdition_carbonClientId, CarbonClientId_1.CarbonClientId.create(props.carbonClientId), "f");
40
43
  __classPrivateFieldSet(this, _EventEdition_code, EventEditionCode_1.EventEditionCode.create(props.code), "f");
41
44
  __classPrivateFieldSet(this, _EventEdition_name, EventEditionName_1.EventEditionName.create(props.name), "f");
42
45
  __classPrivateFieldSet(this, _EventEdition_referenceVenue, EventEditionReferenceVenue_1.EventEditionReferenceVenue.create(props.referenceVenue), "f");
@@ -47,6 +50,7 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
47
50
  }
48
51
  else {
49
52
  // Initialize from primitives (no domain validation)
53
+ __classPrivateFieldSet(this, _EventEdition_carbonClientId, CarbonClientId_1.CarbonClientId.fromPrimitives(props.carbonClientId), "f");
50
54
  __classPrivateFieldSet(this, _EventEdition_code, EventEditionCode_1.EventEditionCode.fromPrimitives(props.code), "f");
51
55
  __classPrivateFieldSet(this, _EventEdition_name, EventEditionName_1.EventEditionName.fromPrimitives(props.name), "f");
52
56
  __classPrivateFieldSet(this, _EventEdition_referenceVenue, EventEditionReferenceVenue_1.EventEditionReferenceVenue.fromPrimitives(props.referenceVenue), "f");
@@ -62,6 +66,7 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
62
66
  static fromPrimitives(primitives) {
63
67
  const props = {
64
68
  id: primitives.id,
69
+ carbonClientId: primitives.carbonClientId,
65
70
  code: primitives.code,
66
71
  name: primitives.name,
67
72
  referenceVenue: primitives.referenceVenue,
@@ -75,6 +80,7 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
75
80
  get toPrimitives() {
76
81
  return {
77
82
  id: this.id.toPrimitives(),
83
+ carbonClientId: __classPrivateFieldGet(this, _EventEdition_carbonClientId, "f").toPrimitives(),
78
84
  code: __classPrivateFieldGet(this, _EventEdition_code, "f").toPrimitives(),
79
85
  name: __classPrivateFieldGet(this, _EventEdition_name, "f").toPrimitives(),
80
86
  expectedAttendees: __classPrivateFieldGet(this, _EventEdition_expectedAttendees, "f").toPrimitives(),
@@ -84,6 +90,9 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
84
90
  parentEvent: __classPrivateFieldGet(this, _EventEdition_parentEvent, "f").toPrimitives(),
85
91
  };
86
92
  }
93
+ get carbonClientId() {
94
+ return __classPrivateFieldGet(this, _EventEdition_carbonClientId, "f");
95
+ }
87
96
  get code() {
88
97
  return __classPrivateFieldGet(this, _EventEdition_code, "f");
89
98
  }
@@ -107,4 +116,4 @@ class EventEdition extends AggregateRoot_1.AggregateRoot {
107
116
  }
108
117
  }
109
118
  exports.EventEdition = EventEdition;
110
- _EventEdition_code = new WeakMap(), _EventEdition_name = new WeakMap(), _EventEdition_referenceVenue = new WeakMap(), _EventEdition_expectedAttendees = new WeakMap(), _EventEdition_staffCount = new WeakMap(), _EventEdition_executionPeriod = new WeakMap(), _EventEdition_parentEvent = new WeakMap();
119
+ _EventEdition_carbonClientId = new WeakMap(), _EventEdition_code = new WeakMap(), _EventEdition_name = new WeakMap(), _EventEdition_referenceVenue = new WeakMap(), _EventEdition_expectedAttendees = new WeakMap(), _EventEdition_staffCount = new WeakMap(), _EventEdition_executionPeriod = new WeakMap(), _EventEdition_parentEvent = new WeakMap();
@@ -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 _Product_code, _Product_name, _Product_description, _Product_productionLocation;
13
+ var _Product_carbonClientId, _Product_code, _Product_name, _Product_description, _Product_productionLocation;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Product = void 0;
16
16
  const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
@@ -19,18 +19,21 @@ const ProductCode_1 = require("../value-objects/ProductCode");
19
19
  const ProductProductionLocation_1 = require("../value-objects/ProductProductionLocation");
20
20
  const ProductName_1 = require("../value-objects/ProductName");
21
21
  const ProductId_1 = require("../value-objects/ProductId");
22
+ const CarbonClientId_1 = require("../../../../stakeholders/carbon-clients/domain/value-objects/CarbonClientId");
22
23
  class Product extends AggregateRoot_1.AggregateRoot {
23
24
  constructor(props, skipDomainValidation) {
24
25
  const id = skipDomainValidation
25
26
  ? ProductId_1.ProductId.fromPrimitives(props.id).toPrimitives()
26
27
  : ProductId_1.ProductId.create(props.id).toPrimitives();
27
28
  super({ id }, skipDomainValidation);
29
+ _Product_carbonClientId.set(this, void 0);
28
30
  _Product_code.set(this, void 0);
29
31
  _Product_name.set(this, void 0);
30
32
  _Product_description.set(this, void 0);
31
33
  _Product_productionLocation.set(this, void 0);
32
34
  if (skipDomainValidation === false) {
33
35
  // Initialize with domain validation
36
+ __classPrivateFieldSet(this, _Product_carbonClientId, CarbonClientId_1.CarbonClientId.create(props.carbonClientId), "f");
34
37
  __classPrivateFieldSet(this, _Product_code, ProductCode_1.ProductCode.create(props.code), "f");
35
38
  __classPrivateFieldSet(this, _Product_name, ProductName_1.ProductName.create(props.name), "f");
36
39
  __classPrivateFieldSet(this, _Product_description, ProductDescription_1.ProductDescription.create(props.description), "f");
@@ -38,6 +41,7 @@ class Product extends AggregateRoot_1.AggregateRoot {
38
41
  }
39
42
  else {
40
43
  // Initialize from primitives (no domain validation)
44
+ __classPrivateFieldSet(this, _Product_carbonClientId, CarbonClientId_1.CarbonClientId.fromPrimitives(props.carbonClientId), "f");
41
45
  __classPrivateFieldSet(this, _Product_code, ProductCode_1.ProductCode.fromPrimitives(props.code), "f");
42
46
  __classPrivateFieldSet(this, _Product_name, ProductName_1.ProductName.fromPrimitives(props.name), "f");
43
47
  __classPrivateFieldSet(this, _Product_description, ProductDescription_1.ProductDescription.fromPrimitives(props.description), "f");
@@ -50,6 +54,7 @@ class Product extends AggregateRoot_1.AggregateRoot {
50
54
  static fromPrimitives(primitives) {
51
55
  const props = {
52
56
  id: primitives.id,
57
+ carbonClientId: primitives.carbonClientId,
53
58
  code: primitives.code,
54
59
  name: primitives.name,
55
60
  description: primitives.description,
@@ -60,12 +65,16 @@ class Product extends AggregateRoot_1.AggregateRoot {
60
65
  get toPrimitives() {
61
66
  return {
62
67
  id: this.id.toPrimitives(),
68
+ carbonClientId: __classPrivateFieldGet(this, _Product_carbonClientId, "f").toPrimitives(),
63
69
  code: __classPrivateFieldGet(this, _Product_code, "f").toPrimitives(),
64
70
  name: __classPrivateFieldGet(this, _Product_name, "f").toPrimitives(),
65
71
  description: __classPrivateFieldGet(this, _Product_description, "f").toPrimitives(),
66
72
  productionLocation: __classPrivateFieldGet(this, _Product_productionLocation, "f").toPrimitives(),
67
73
  };
68
74
  }
75
+ get carbonClientId() {
76
+ return __classPrivateFieldGet(this, _Product_carbonClientId, "f");
77
+ }
69
78
  get code() {
70
79
  return __classPrivateFieldGet(this, _Product_code, "f");
71
80
  }
@@ -80,4 +89,4 @@ class Product extends AggregateRoot_1.AggregateRoot {
80
89
  }
81
90
  }
82
91
  exports.Product = Product;
83
- _Product_code = new WeakMap(), _Product_name = new WeakMap(), _Product_description = new WeakMap(), _Product_productionLocation = new WeakMap();
92
+ _Product_carbonClientId = new WeakMap(), _Product_code = new WeakMap(), _Product_name = new WeakMap(), _Product_description = new WeakMap(), _Product_productionLocation = new WeakMap();
@@ -17,7 +17,7 @@ exports.ErrorCode = void 0;
17
17
  * - RPT: Reporting
18
18
  * - SHR: Shared/Common
19
19
  *
20
- * Total Codes: 177
20
+ * Total Codes: 182
21
21
  * Total Exceptions Migrated: 171 (100%)
22
22
  *
23
23
  * @since 1.0.0
@@ -87,6 +87,12 @@ var ErrorCode;
87
87
  ErrorCode["INVALID_USER_PREFERENCE_CODE"] = "CBX-STK-009";
88
88
  ErrorCode["DUPLICATE_USER_PREFERENCE_CODE"] = "CBX-STK-010";
89
89
  ErrorCode["USER_PREFERENCE_CODE_LIMIT_EXCEEDED"] = "CBX-STK-011";
90
+ // Permission Ceiling Errors (CBX-STK-012) — AIS-D01
91
+ ErrorCode["PERMISSION_ABOVE_ROLE_CEILING"] = "CBX-STK-012";
92
+ // User Invitation Errors (CBX-STK-013 to CBX-STK-015) — AIS-D04
93
+ ErrorCode["USER_INVITATION_EXPIRED"] = "CBX-STK-013";
94
+ ErrorCode["USER_INVITATION_ALREADY_CONSUMED"] = "CBX-STK-014";
95
+ ErrorCode["USER_INVITATION_REVOKED"] = "CBX-STK-015";
90
96
  // Carbon Footprint Configuration Errors (CBX-CFC-XXX)
91
97
  ErrorCode["CONFIGURATION_NOT_FOUND"] = "CBX-CFC-001";
92
98
  ErrorCode["INVALID_REPORTING_STANDARD"] = "CBX-CFC-002";
@@ -254,4 +260,6 @@ var ErrorCode;
254
260
  ErrorCode["INVALID_NATIONAL_NUMBER"] = "CBX-SHR-073";
255
261
  ErrorCode["INVALID_MINUTES_DURATION"] = "CBX-SHR-074";
256
262
  ErrorCode["INVALID_FULL_INTERNATIONAL_NUMBER"] = "CBX-SHR-075";
263
+ // Tenant Isolation Errors (CBX-SHR-076) — AIS-D02/AIS-D03
264
+ ErrorCode["INVALID_CROSS_TENANT_REFERENCE"] = "CBX-SHR-076";
257
265
  })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
@@ -68,6 +68,8 @@ var SemanticUuidPrefix;
68
68
  SemanticUuidPrefix["USR_STH_COORDINATOR"] = "USR-STH-CRD";
69
69
  SemanticUuidPrefix["USR_STH_HOST"] = "USR-STH-CHO";
70
70
  SemanticUuidPrefix["USR_STH_MANAGER"] = "USR-STH-MGR";
71
+ // Users - Invitations (AIS-D04)
72
+ SemanticUuidPrefix["USR_INVITATION"] = "USR-INV";
71
73
  // Purchase Management System
72
74
  SemanticUuidPrefix["PMS_SERVICE_CATALOG"] = "PMS-SC";
73
75
  SemanticUuidPrefix["PMS_SERVICE_PRICING"] = "PMS-SP";
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidCrossTenantReferenceError = void 0;
4
+ const CodedRootError_1 = require("./CodedRootError");
5
+ const ErrorCode_1 = require("../enums/ErrorCode");
6
+ /**
7
+ * AIS-D03 (tenant isolation): a resource references another one that belongs to a different
8
+ * Carbon Client (a product footprint over another client's product, an event edition under
9
+ * another client's event, ...).
10
+ *
11
+ * The message is generic on purpose: it never includes the foreign resource's data or ids, so it
12
+ * cannot be used to probe other tenants. The backend answers it exactly like "the referenced
13
+ * resource does not exist".
14
+ */
15
+ class InvalidCrossTenantReferenceError extends CodedRootError_1.CodedRootError {
16
+ constructor(referenceName) {
17
+ const technicalMessage = `The referenced '${referenceName}' is not valid for this resource.`;
18
+ const context = {
19
+ referenceName,
20
+ timestamp: new Date().toISOString(),
21
+ };
22
+ const suggestions = [
23
+ `Verify that the '${referenceName}' exists and belongs to the same Carbon Client`,
24
+ 'Select the reference again from the list of available resources',
25
+ ];
26
+ super(ErrorCode_1.ErrorCode.INVALID_CROSS_TENANT_REFERENCE, technicalMessage, context, suggestions);
27
+ this.name = 'InvalidCrossTenantReferenceError';
28
+ }
29
+ static create(referenceName) {
30
+ return new InvalidCrossTenantReferenceError(referenceName);
31
+ }
32
+ logError() {
33
+ return `${this.name}: ${this.technicalMessage}`;
34
+ }
35
+ }
36
+ exports.InvalidCrossTenantReferenceError = InvalidCrossTenantReferenceError;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarbonClientOwnershipPolicy = void 0;
4
+ const InvalidCrossTenantReferenceError_1 = require("../exceptions/InvalidCrossTenantReferenceError");
5
+ /**
6
+ * AIS-D03 (tenant isolation): references between resources stay inside one Carbon Client.
7
+ *
8
+ * Reference snapshots (`ProductReference`, `EventEditionReference`, `EventReference`) carry only
9
+ * `{ id, code, name }`, so the rule cannot live inside a single aggregate: the caller loads both
10
+ * aggregates and asks this policy. Static-only, like the footprint activation and completion
11
+ * policies; unlike them it throws, because every caller must stop on the first violation.
12
+ *
13
+ * A mismatch of the referenced id and a mismatch of the owner raise the same
14
+ * `InvalidCrossTenantReferenceError`, so "wrong reference" and "someone else's resource" are
15
+ * indistinguishable (anti-enumeration, AIS principle "not found ≡ out of scope").
16
+ *
17
+ * It lives in `shared` because it spans two bounded contexts (company resources and carbon
18
+ * footprint configurations).
19
+ */
20
+ class CarbonClientOwnershipPolicy {
21
+ constructor() {
22
+ // Static-only — not instantiable.
23
+ }
24
+ /**
25
+ * The edition is one of `event`'s editions and has the same owner.
26
+ */
27
+ static assertEventEditionBelongsToParentEvent(eventEdition, event) {
28
+ const isChildOfEvent = eventEdition.parentEvent.toPrimitives().id === event.id.toPrimitives();
29
+ const hasSameOwner = eventEdition.carbonClientId.toPrimitives() === event.carbonClientId.toPrimitives();
30
+ if (isChildOfEvent === false || hasSameOwner === false) {
31
+ throw InvalidCrossTenantReferenceError_1.InvalidCrossTenantReferenceError.create('parentEvent');
32
+ }
33
+ }
34
+ /**
35
+ * The footprint references `product` and both belong to the same Carbon Client.
36
+ */
37
+ static assertProductCarbonFootprintConfigurationReferencesOwnProduct(configuration, product) {
38
+ const referencesProduct = configuration.product.toPrimitives().id === product.id.toPrimitives();
39
+ const hasSameOwner = configuration.ownedByCarbonClient.toPrimitives().id === product.carbonClientId.toPrimitives();
40
+ if (referencesProduct === false || hasSameOwner === false) {
41
+ throw InvalidCrossTenantReferenceError_1.InvalidCrossTenantReferenceError.create('product');
42
+ }
43
+ }
44
+ /**
45
+ * The footprint references `eventEdition` and both belong to the same Carbon Client.
46
+ */
47
+ static assertEventCarbonFootprintConfigurationReferencesOwnEventEdition(configuration, eventEdition) {
48
+ const referencesEventEdition = configuration.eventEdition.toPrimitives().id === eventEdition.id.toPrimitives();
49
+ const hasSameOwner = configuration.ownedByCarbonClient.toPrimitives().id === eventEdition.carbonClientId.toPrimitives();
50
+ if (referencesEventEdition === false || hasSameOwner === false) {
51
+ throw InvalidCrossTenantReferenceError_1.InvalidCrossTenantReferenceError.create('eventEdition');
52
+ }
53
+ }
54
+ }
55
+ exports.CarbonClientOwnershipPolicy = CarbonClientOwnershipPolicy;
@@ -1,7 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CarbonClientPermissions = void 0;
4
+ const StakeholderRole_1 = require("../../../../shared/domain/enums/StakeholderRole");
4
5
  const StakeholderPermissions_1 = require("../../../shared/domain/value-objects/StakeholderPermissions");
6
+ const RolePermissionCeilingPolicy_1 = require("../../../shared/domain/policies/RolePermissionCeilingPolicy");
7
+ /**
8
+ * Permissions of a Carbon Client. `create` rejects permissions outside the Carbon Client
9
+ * ceiling (AIS-D01, `PermissionAboveRoleCeilingError`); `fromPrimitives` loads stored records as is.
10
+ */
5
11
  class CarbonClientPermissions extends StakeholderPermissions_1.StakeholderPermissions {
12
+ constructor(value, skipDomainValidation) {
13
+ super(value, skipDomainValidation);
14
+ }
15
+ static create(value) {
16
+ const permissions = new CarbonClientPermissions(value, false);
17
+ RolePermissionCeilingPolicy_1.RolePermissionCeilingPolicy.assertWithinCeiling(StakeholderRole_1.StakeholderRole.CARBON_CLIENT, permissions.toEnums());
18
+ return permissions;
19
+ }
20
+ static fromPrimitives(primitives) {
21
+ const value = primitives.map((primitive) => primitive);
22
+ return new CarbonClientPermissions(value, true);
23
+ }
6
24
  }
7
25
  exports.CarbonClientPermissions = CarbonClientPermissions;
@@ -1,7 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CarbonCoordinatorPermissions = void 0;
4
+ const StakeholderRole_1 = require("../../../../shared/domain/enums/StakeholderRole");
4
5
  const StakeholderPermissions_1 = require("../../../shared/domain/value-objects/StakeholderPermissions");
6
+ const RolePermissionCeilingPolicy_1 = require("../../../shared/domain/policies/RolePermissionCeilingPolicy");
7
+ /**
8
+ * Permissions of a Carbon Coordinator. `create` rejects permissions outside the Carbon Coordinator
9
+ * ceiling (AIS-D01, `PermissionAboveRoleCeilingError`); `fromPrimitives` loads stored records as is.
10
+ */
5
11
  class CarbonCoordinatorPermissions extends StakeholderPermissions_1.StakeholderPermissions {
12
+ constructor(value, skipDomainValidation) {
13
+ super(value, skipDomainValidation);
14
+ }
15
+ static create(value) {
16
+ const permissions = new CarbonCoordinatorPermissions(value, false);
17
+ RolePermissionCeilingPolicy_1.RolePermissionCeilingPolicy.assertWithinCeiling(StakeholderRole_1.StakeholderRole.CARBON_COORDINATOR, permissions.toEnums());
18
+ return permissions;
19
+ }
20
+ static fromPrimitives(primitives) {
21
+ const value = primitives.map((primitive) => primitive);
22
+ return new CarbonCoordinatorPermissions(value, true);
23
+ }
6
24
  }
7
25
  exports.CarbonCoordinatorPermissions = CarbonCoordinatorPermissions;
@@ -1,7 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CarbonManagerPermissions = void 0;
4
+ const StakeholderRole_1 = require("../../../../shared/domain/enums/StakeholderRole");
4
5
  const StakeholderPermissions_1 = require("../../../shared/domain/value-objects/StakeholderPermissions");
6
+ const RolePermissionCeilingPolicy_1 = require("../../../shared/domain/policies/RolePermissionCeilingPolicy");
7
+ /**
8
+ * Permissions of a Carbon Manager. `create` rejects permissions outside the Carbon Manager
9
+ * ceiling (AIS-D01, `PermissionAboveRoleCeilingError`); `fromPrimitives` loads stored records as is.
10
+ */
5
11
  class CarbonManagerPermissions extends StakeholderPermissions_1.StakeholderPermissions {
12
+ constructor(value, skipDomainValidation) {
13
+ super(value, skipDomainValidation);
14
+ }
15
+ static create(value) {
16
+ const permissions = new CarbonManagerPermissions(value, false);
17
+ RolePermissionCeilingPolicy_1.RolePermissionCeilingPolicy.assertWithinCeiling(StakeholderRole_1.StakeholderRole.CARBON_MANAGER, permissions.toEnums());
18
+ return permissions;
19
+ }
20
+ static fromPrimitives(primitives) {
21
+ const value = primitives.map((primitive) => primitive);
22
+ return new CarbonManagerPermissions(value, true);
23
+ }
6
24
  }
7
25
  exports.CarbonManagerPermissions = CarbonManagerPermissions;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CARBON_CLIENT_PERMISSION_CEILING = void 0;
4
+ const Permission_1 = require("../../../../shared/domain/authorization/enums/Permission");
5
+ /**
6
+ * Carbon Client permission ceiling (AIS-D01, decision D9).
7
+ *
8
+ * The most a Carbon Client can ever hold: a validated `CarbonClientPermissions` rejects anything
9
+ * outside this list, whoever grants it (the host included). Initially it equals the backend
10
+ * `CARBON_CLIENT_PERMISSION_PRESET` (2026-10-22). The host may grant LESS (remove permissions
11
+ * within the ceiling), never more.
12
+ *
13
+ * Raising a ceiling is a deliberate decision that requires publishing the domain package. The
14
+ * backend presets must stay ⊆ ceiling, or creating a user with the default preset fails.
15
+ */
16
+ exports.CARBON_CLIENT_PERMISSION_CEILING = [
17
+ // === User Profile (self-management) ===
18
+ Permission_1.Permission.USER_PROFILE_VIEW_OWN_PROFILE,
19
+ Permission_1.Permission.USER_PROFILE_UPDATE_OWN_PROFILE,
20
+ Permission_1.Permission.USER_PROFILE_CHANGE_OWN_PASSWORD,
21
+ // === Activity Data Collection (self-service) ===
22
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_CREATE_NEW_ACTIVITY_DATA_SUBMISSION,
23
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_UPDATE_ACTIVITY_DATA_SUBMISSION,
24
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_SUBMIT_ACTIVITY_DATA_SUBMISSION,
25
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_DELETE_ACTIVITY_DATA_SUBMISSION,
26
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_ACTIVITY_DATA_SUBMISSION,
27
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_ACTIVITY_DATA_SUBMISSION_LIST,
28
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_BULK_LOAD_ACTIVITY_DATA_SUBMISSION,
29
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_DOWNLOAD_ACTIVITY_DATA_TEMPLATE,
30
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_BULK_IMPORT_JOB,
31
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_COLLECTION_FIELD,
32
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_COLLECTION_FIELD_LIST,
33
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_DYNAMIC_FORM,
34
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_DYNAMIC_FORM_LIST,
35
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_CONDITIONAL_RULE,
36
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_CONDITIONAL_RULE_LIST,
37
+ // === Carbon Footprint Configurations (self-service lifecycle) ===
38
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_CREATE_CORPORATE_CONFIGURATION,
39
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_CONFIGURATION,
40
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_CONFIGURATION_LIST,
41
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_UPDATE_CORPORATE_CONFIGURATION,
42
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_ACTIVATE_CORPORATE_CONFIGURATION,
43
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_COMPLETE_CORPORATE_CONFIGURATION,
44
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_DELETE_CORPORATE_CONFIGURATION,
45
+ // Segment configurations: read-only, they are a host catalog (D1).
46
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CONFIGURATION,
47
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CONFIGURATION_LIST,
48
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CATALOG,
49
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CATALOG_LIST,
50
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SUBSEGMENT_CATALOG,
51
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SUBSEGMENT_CATALOG_LIST,
52
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_PRODUCT_CONFIGURATION,
53
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_PRODUCT_CONFIGURATION_LIST,
54
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_CONFIGURATION,
55
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_CONFIGURATION_LIST,
56
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_LIFECYCLE_STAGE_LIST,
57
+ // === Company Resources (own facilities) ===
58
+ Permission_1.Permission.COMPANY_RESOURCES_CREATE_FACILITY,
59
+ Permission_1.Permission.COMPANY_RESOURCES_VIEW_FACILITY,
60
+ Permission_1.Permission.COMPANY_RESOURCES_VIEW_FACILITY_LIST,
61
+ Permission_1.Permission.COMPANY_RESOURCES_UPDATE_FACILITY,
62
+ Permission_1.Permission.COMPANY_RESOURCES_DELETE_FACILITY,
63
+ // === Purchase Management System (own contracts) ===
64
+ Permission_1.Permission.PURCHASE_MANAGEMENT_SYSTEM_SIGN_CONTRACT_CLIENT,
65
+ Permission_1.Permission.PURCHASE_MANAGEMENT_SYSTEM_VIEW_PURCHASE_CONTRACT,
66
+ Permission_1.Permission.PURCHASE_MANAGEMENT_SYSTEM_VIEW_CONTRACTS_BY_CLIENT,
67
+ // === Emission Calculation Process (view + execute own workflows) ===
68
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_PROCESS,
69
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_PROCESS_LIST,
70
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_EXECUTE_CALCULATION_WORKFLOW,
71
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_WORKFLOW,
72
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_WORKFLOW_LIST,
73
+ // === Reporting (own report preparation questionnaire and report instances) ===
74
+ Permission_1.Permission.REPORTING_CREATE_REPORT_PREPARATION_QUESTIONNAIRE,
75
+ Permission_1.Permission.REPORTING_ANSWER_REPORT_PREPARATION_QUESTIONNAIRE,
76
+ Permission_1.Permission.REPORTING_COMPLETE_REPORT_PREPARATION_QUESTIONNAIRE,
77
+ Permission_1.Permission.REPORTING_MANAGE_REPORT_PREPARATION_QUESTIONNAIRE_CUSTOM_QUESTIONS,
78
+ Permission_1.Permission.REPORTING_VIEW_REPORT_PREPARATION_QUESTIONNAIRE,
79
+ Permission_1.Permission.REPORTING_VIEW_REPORT_PREPARATION_QUESTIONNAIRE_LIST,
80
+ Permission_1.Permission.REPORTING_VIEW_REPORT_TEMPLATE,
81
+ Permission_1.Permission.REPORTING_VIEW_REPORT_TEMPLATE_LIST,
82
+ Permission_1.Permission.REPORTING_CREATE_REPORT_INSTANCE,
83
+ Permission_1.Permission.REPORTING_VIEW_REPORT_INSTANCE,
84
+ Permission_1.Permission.REPORTING_VIEW_REPORT_INSTANCE_LIST,
85
+ Permission_1.Permission.REPORTING_APPROVE_REPORT_BY_CLIENT,
86
+ Permission_1.Permission.REPORTING_REJECT_REPORT,
87
+ ];
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CARBON_COORDINATOR_PERMISSION_CEILING = void 0;
4
+ const Permission_1 = require("../../../../shared/domain/authorization/enums/Permission");
5
+ /**
6
+ * Carbon Coordinator permission ceiling (AIS-D01, decision D9).
7
+ *
8
+ * The most a Carbon Coordinator can ever hold: a validated `CarbonCoordinatorPermissions` rejects
9
+ * anything outside this list, whoever grants it (the host included). Initially it equals the
10
+ * backend `CARBON_COORDINATOR_PERMISSION_PRESET` (2026-10-22). The host may grant LESS, never more.
11
+ *
12
+ * Raising a ceiling is a deliberate decision that requires publishing the domain package. The
13
+ * backend presets must stay ⊆ ceiling, or creating a user with the default preset fails. The
14
+ * manager ceiling is derived from this one (`CARBON_MANAGER_PERMISSION_CEILING`).
15
+ */
16
+ exports.CARBON_COORDINATOR_PERMISSION_CEILING = [
17
+ // === User Profile ===
18
+ Permission_1.Permission.USER_PROFILE_VIEW_OWN_PROFILE,
19
+ Permission_1.Permission.USER_PROFILE_UPDATE_OWN_PROFILE,
20
+ Permission_1.Permission.USER_PROFILE_CHANGE_OWN_PASSWORD,
21
+ Permission_1.Permission.USER_PROFILE_VIEW_OTHER_USER_PROFILES,
22
+ // === Stakeholders (view + manage their clients) ===
23
+ Permission_1.Permission.STAKEHOLDERS_VIEW_CARBON_CLIENT_PROFILE,
24
+ Permission_1.Permission.STAKEHOLDERS_VIEW_CARBON_CLIENT_LIST,
25
+ Permission_1.Permission.STAKEHOLDERS_CREATE_NEW_CARBON_CLIENT,
26
+ Permission_1.Permission.STAKEHOLDERS_UPDATE_CARBON_CLIENT_PROFILE,
27
+ // === Activity Data Collection (reviewer + fills in for assigned clients) ===
28
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_ACTIVITY_DATA_SUBMISSION,
29
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_ACTIVITY_DATA_SUBMISSION_LIST,
30
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_APPROVE_ACTIVITY_DATA_SUBMISSION,
31
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_REJECT_ACTIVITY_DATA_SUBMISSION,
32
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_CREATE_NEW_ACTIVITY_DATA_SUBMISSION,
33
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_UPDATE_ACTIVITY_DATA_SUBMISSION,
34
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_SUBMIT_ACTIVITY_DATA_SUBMISSION,
35
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_BULK_LOAD_ACTIVITY_DATA_SUBMISSION,
36
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_DOWNLOAD_ACTIVITY_DATA_TEMPLATE,
37
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_BULK_IMPORT_JOB,
38
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_COLLECTION_FIELD,
39
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_COLLECTION_FIELD_LIST,
40
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_DYNAMIC_FORM,
41
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_DYNAMIC_FORM_LIST,
42
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_CONDITIONAL_RULE,
43
+ Permission_1.Permission.ACTIVITY_DATA_COLLECTION_VIEW_CONDITIONAL_RULE_LIST,
44
+ // === Carbon Footprint Configurations (view + edit their clients' configurations) ===
45
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_CONFIGURATION,
46
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_CONFIGURATION_LIST,
47
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_CREATE_CORPORATE_CONFIGURATION,
48
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_UPDATE_CORPORATE_CONFIGURATION,
49
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_ACTIVATE_CORPORATE_CONFIGURATION,
50
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_COMPLETE_CORPORATE_CONFIGURATION,
51
+ // Segment configurations: read-only, they are a host catalog (D1).
52
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CONFIGURATION,
53
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CONFIGURATION_LIST,
54
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CATALOG,
55
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SEGMENT_CATALOG_LIST,
56
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SUBSEGMENT_CATALOG,
57
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_CORPORATE_SUBSEGMENT_CATALOG_LIST,
58
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_PRODUCT_CONFIGURATION,
59
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_PRODUCT_CONFIGURATION_LIST,
60
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_CONFIGURATION,
61
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_CONFIGURATION_LIST,
62
+ Permission_1.Permission.CARBON_FOOTPRINT_CONFIGURATIONS_VIEW_EVENT_LIFECYCLE_STAGE_LIST,
63
+ // === Company Resources (manage their clients' facilities) ===
64
+ Permission_1.Permission.COMPANY_RESOURCES_VIEW_FACILITY,
65
+ Permission_1.Permission.COMPANY_RESOURCES_VIEW_FACILITY_LIST,
66
+ Permission_1.Permission.COMPANY_RESOURCES_CREATE_FACILITY,
67
+ Permission_1.Permission.COMPANY_RESOURCES_UPDATE_FACILITY,
68
+ // === Emission Calculation Process (view results + execute their clients' workflows) ===
69
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_PROCESS,
70
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_PROCESS_LIST,
71
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_WORKFLOW,
72
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_VIEW_CALCULATION_WORKFLOW_LIST,
73
+ Permission_1.Permission.EMISSION_CALCULATION_PROCESS_EXECUTE_CALCULATION_WORKFLOW,
74
+ // === Reporting (questionnaires and report instances of their clients) ===
75
+ Permission_1.Permission.REPORTING_CREATE_REPORT_PREPARATION_QUESTIONNAIRE,
76
+ Permission_1.Permission.REPORTING_ANSWER_REPORT_PREPARATION_QUESTIONNAIRE,
77
+ Permission_1.Permission.REPORTING_COMPLETE_REPORT_PREPARATION_QUESTIONNAIRE,
78
+ Permission_1.Permission.REPORTING_MANAGE_REPORT_PREPARATION_QUESTIONNAIRE_CUSTOM_QUESTIONS,
79
+ Permission_1.Permission.REPORTING_VIEW_REPORT_PREPARATION_QUESTIONNAIRE,
80
+ Permission_1.Permission.REPORTING_VIEW_REPORT_PREPARATION_QUESTIONNAIRE_LIST,
81
+ Permission_1.Permission.REPORTING_VIEW_REPORT_TEMPLATE,
82
+ Permission_1.Permission.REPORTING_VIEW_REPORT_TEMPLATE_LIST,
83
+ Permission_1.Permission.REPORTING_CREATE_REPORT_INSTANCE,
84
+ Permission_1.Permission.REPORTING_VIEW_REPORT_INSTANCE,
85
+ Permission_1.Permission.REPORTING_VIEW_REPORT_INSTANCE_LIST,
86
+ Permission_1.Permission.REPORTING_APPROVE_REPORT_BY_CLIENT,
87
+ Permission_1.Permission.REPORTING_REJECT_REPORT,
88
+ ];
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CARBON_MANAGER_PERMISSION_CEILING = void 0;
4
+ const Permission_1 = require("../../../../shared/domain/authorization/enums/Permission");
5
+ const CARBON_COORDINATOR_PERMISSION_CEILING_1 = require("./CARBON_COORDINATOR_PERMISSION_CEILING");
6
+ /**
7
+ * Carbon Manager permission ceiling (AIS-D01, decision D9).
8
+ *
9
+ * = CARBON_COORDINATOR_PERMISSION_CEILING + team management, mirroring how the backend
10
+ * `CARBON_MANAGER_PERMISSION_PRESET` derives from the coordinator preset (2026-10-22).
11
+ * Granting and removing permissions (STAKEHOLDERS_ASSIGN/REMOVE_PERMISSIONS*) stays host-only.
12
+ *
13
+ * Raising a ceiling is a deliberate decision that requires publishing the domain package. The
14
+ * backend presets must stay ⊆ ceiling, or creating a user with the default preset fails. Do not
15
+ * repeat coordinator entries here: `UserPermissions` rejects duplicates.
16
+ */
17
+ exports.CARBON_MANAGER_PERMISSION_CEILING = [
18
+ ...CARBON_COORDINATOR_PERMISSION_CEILING_1.CARBON_COORDINATOR_PERMISSION_CEILING,
19
+ // === Stakeholders (team management) ===
20
+ Permission_1.Permission.STAKEHOLDERS_CREATE_NEW_CARBON_COORDINATOR,
21
+ Permission_1.Permission.STAKEHOLDERS_VIEW_CARBON_COORDINATOR_PROFILE,
22
+ Permission_1.Permission.STAKEHOLDERS_VIEW_CARBON_COORDINATOR_LIST,
23
+ Permission_1.Permission.STAKEHOLDERS_UPDATE_CARBON_COORDINATOR_PROFILE,
24
+ Permission_1.Permission.STAKEHOLDERS_ACTIVATE_CARBON_COORDINATOR_ACCOUNT,
25
+ Permission_1.Permission.STAKEHOLDERS_DEACTIVATE_CARBON_COORDINATOR_ACCOUNT,
26
+ Permission_1.Permission.STAKEHOLDERS_ASSIGN_CARBON_CLIENTS_TO_CARBON_COORDINATOR,
27
+ Permission_1.Permission.STAKEHOLDERS_CHANGE_CARBON_COORDINATOR_REPORTS_TO,
28
+ Permission_1.Permission.STAKEHOLDERS_VIEW_CARBON_MANAGER_LIST,
29
+ ];