@multitenantkit/domain 0.1.1 → 0.1.3

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.
@@ -11,9 +11,10 @@ import { BaseUseCase } from '../../../shared/use-case';
11
11
  * Generic support for custom fields:
12
12
  * @template TOrganizationCustomFields - Custom fields for OrganizationRepository (for consistency)
13
13
  */
14
- export declare class AddOrganizationMember<TOrganizationCustomFields = {}, TUserCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<AddOrganizationMemberInput, AddOrganizationMemberOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements IAddOrganizationMember {
14
+ export declare class AddOrganizationMember<TOrganizationCustomFields = {}, TUserCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<AddOrganizationMemberInput & TOrganizationMembershipCustomFields, AddOrganizationMemberOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements IAddOrganizationMember {
15
+ private readonly membershipCustomSchema?;
15
16
  constructor(adapters: Adapters<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>, toolkitOptions?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>);
16
17
  protected authorize(input: AddOrganizationMemberInput, _context: OperationContext): Promise<Result<void, DomainError>>;
17
- protected executeBusinessLogic(input: AddOrganizationMemberInput, context: OperationContext): Promise<Result<AddOrganizationMemberOutput, DomainError>>;
18
+ protected executeBusinessLogic(input: AddOrganizationMemberInput & TOrganizationMembershipCustomFields, context: OperationContext): Promise<Result<AddOrganizationMemberOutput, DomainError>>;
18
19
  }
19
20
  //# sourceMappingURL=AddOrganizationMember.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddOrganizationMember.d.ts","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EACR,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACzB,MAAM,2DAA2D,CAAC;AAMnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAEH,KAAK,WAAW,EAInB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,qBAAqB,CAE1B,yBAAyB,GAAG,EAAE,EAE9B,iBAAiB,GAAG,EAAE,EAEtB,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,0BAA0B,EAC1B,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,sBAAsB;gBAG7B,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cAYW,SAAS,CACrB,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;cAqDrB,oBAAoB,CAChC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;CAsG/D"}
1
+ {"version":3,"file":"AddOrganizationMember.d.ts","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EACR,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACzB,MAAM,2DAA2D,CAAC;AAOnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAEH,KAAK,WAAW,EAInB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,qBAAqB,CAE1B,yBAAyB,GAAG,EAAE,EAE9B,iBAAiB,GAAG,EAAE,EAEtB,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,0BAA0B,GAAG,mCAAmC,EAChE,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAmB;gBAGvD,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cAyBW,SAAS,CACrB,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;cAqDrB,oBAAoB,CAChC,KAAK,EAAE,0BAA0B,GAAG,mCAAmC,EACvE,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;CAwI/D"}
@@ -1,4 +1,4 @@
1
- import { AddOrganizationMemberInputSchema, AddOrganizationMemberOutputSchema } from '@multitenantkit/domain-contracts/organization-memberships';
1
+ import { AddOrganizationMemberInputSchema, AddOrganizationMemberOutputSchema, OrganizationMembershipSchema } from '@multitenantkit/domain-contracts/organization-memberships';
2
2
  import { ConflictError, NotFoundError, UnauthorizedError, ValidationError } from '@multitenantkit/domain-contracts/shared/errors/index';
3
3
  import { Result } from '../../../shared/result/Result';
4
4
  import { BaseUseCase } from '../../../shared/use-case';
@@ -10,8 +10,17 @@ import { BaseUseCase } from '../../../shared/use-case';
10
10
  * @template TOrganizationCustomFields - Custom fields for OrganizationRepository (for consistency)
11
11
  */
12
12
  export class AddOrganizationMember extends BaseUseCase {
13
+ membershipCustomSchema;
13
14
  constructor(adapters, toolkitOptions) {
14
- super('organizationMembership-addOrganizationMember', adapters, toolkitOptions, AddOrganizationMemberInputSchema, AddOrganizationMemberOutputSchema, 'Failed to add organization member');
15
+ // Extract organization membership custom schema from toolkit options
16
+ const membershipCustomSchema = toolkitOptions?.organizationMemberships?.customFields
17
+ ?.customSchema;
18
+ // Build input schema with membership custom fields if provided
19
+ const inputSchema = (membershipCustomSchema
20
+ ? AddOrganizationMemberInputSchema.and(membershipCustomSchema.partial())
21
+ : AddOrganizationMemberInputSchema);
22
+ super('organizationMembership-addOrganizationMember', adapters, toolkitOptions, inputSchema, AddOrganizationMemberOutputSchema, 'Failed to add organization member');
23
+ this.membershipCustomSchema = membershipCustomSchema;
15
24
  }
16
25
  async authorize(input, _context) {
17
26
  // Ensure organization exists for permission checks
@@ -44,17 +53,20 @@ export class AddOrganizationMember extends BaseUseCase {
44
53
  return Result.ok(undefined);
45
54
  }
46
55
  async executeBusinessLogic(input, context) {
47
- // 1. Validate target user exists
48
- const targetUser = await this.adapters.persistence.userRepository.findByUsername(input.username);
56
+ // 1. Extract custom fields from input
57
+ const { principalExternalId, organizationId, username, roleCode, ...customFields } = input;
58
+ const baseInput = { principalExternalId, organizationId, username, roleCode };
59
+ // 2. Validate target user exists
60
+ const targetUser = await this.adapters.persistence.userRepository.findByUsername(baseInput.username);
49
61
  const now = this.adapters.system.clock.now();
50
62
  let existingMembership = null;
51
63
  // If user doesn't exist, just create the membership without user id
52
64
  if (targetUser) {
53
- // 2. Check if user already has a membership
54
- const existingMembershipDB = await this.adapters.persistence.organizationMembershipRepository.findByUserIdAndOrganizationId(targetUser.id, input.organizationId);
65
+ // 3. Check if user already has a membership
66
+ const existingMembershipDB = await this.adapters.persistence.organizationMembershipRepository.findByUserIdAndOrganizationId(targetUser.id, baseInput.organizationId);
55
67
  existingMembership = existingMembershipDB;
56
68
  if (existingMembership && !existingMembership.leftAt && !existingMembership.deletedAt) {
57
- return Result.fail(new ConflictError('OrganizationMembership', `${targetUser.id}:${input.organizationId}`, {
69
+ return Result.fail(new ConflictError('OrganizationMembership', `${targetUser.id}:${baseInput.organizationId}`, {
58
70
  reason: 'User is already a member of this organization'
59
71
  }));
60
72
  }
@@ -62,7 +74,7 @@ export class AddOrganizationMember extends BaseUseCase {
62
74
  let membership;
63
75
  if (existingMembership && !!existingMembership.leftAt && !existingMembership.deletedAt) {
64
76
  // 4a. Reactivate existing membership that was left
65
- const reactivatedMembership = {
77
+ const reactivatedMembershipBase = {
66
78
  ...existingMembership,
67
79
  invitedAt: now,
68
80
  joinedAt: undefined,
@@ -70,21 +82,26 @@ export class AddOrganizationMember extends BaseUseCase {
70
82
  deletedAt: undefined,
71
83
  updatedAt: now
72
84
  };
85
+ // Merge base with custom fields
86
+ const reactivatedMembership = {
87
+ ...reactivatedMembershipBase,
88
+ ...customFields
89
+ };
73
90
  // Then update the role if it's different from current role
74
91
  membership =
75
- reactivatedMembership.roleCode !== input.roleCode
76
- ? { ...reactivatedMembership, roleCode: input.roleCode, updatedAt: now }
92
+ reactivatedMembership.roleCode !== baseInput.roleCode
93
+ ? { ...reactivatedMembership, roleCode: baseInput.roleCode, updatedAt: now }
77
94
  : reactivatedMembership;
78
95
  }
79
96
  else {
80
- // 4b. Create new membership
97
+ // 4b. Create new membership with custom fields
81
98
  const membershipId = this.adapters.system.uuid.generate();
82
- membership = {
99
+ const membershipBase = {
83
100
  id: membershipId,
84
101
  userId: targetUser?.id,
85
- username: input.username,
86
- organizationId: input.organizationId,
87
- roleCode: input.roleCode,
102
+ username: baseInput.username,
103
+ organizationId: baseInput.organizationId,
104
+ roleCode: baseInput.roleCode,
88
105
  invitedAt: now,
89
106
  joinedAt: undefined,
90
107
  leftAt: undefined,
@@ -92,11 +109,25 @@ export class AddOrganizationMember extends BaseUseCase {
92
109
  createdAt: now,
93
110
  updatedAt: now
94
111
  };
112
+ // Merge base membership with custom fields
113
+ membership = {
114
+ ...membershipBase,
115
+ ...customFields
116
+ };
117
+ }
118
+ // 5. Validate the membership data (base + custom) if custom schema exists
119
+ if (this.membershipCustomSchema) {
120
+ const membershipSchema = OrganizationMembershipSchema.and(this.membershipCustomSchema);
121
+ const membershipValidation = membershipSchema.safeParse(membership);
122
+ if (!membershipValidation.success) {
123
+ const firstError = membershipValidation.error.errors[0];
124
+ return Result.fail(new ValidationError(`Membership validation failed: ${firstError.message}`, firstError.path.join('.')));
125
+ }
95
126
  }
96
- // 5. Persist the entity (save or update) using Unit of Work (transaction) with audit context
127
+ // 6. Persist the entity (save or update) using Unit of Work (transaction) with audit context
97
128
  const auditContext = {
98
129
  ...context,
99
- organizationId: input.organizationId,
130
+ organizationId: baseInput.organizationId,
100
131
  auditAction: 'ADD_ORGANIZATION_MEMBER'
101
132
  };
102
133
  try {
@@ -116,7 +147,7 @@ export class AddOrganizationMember extends BaseUseCase {
116
147
  originalError: error
117
148
  }));
118
149
  }
119
- // 6. KEY PATTERN: Spread + Parse to guarantee contract
150
+ // 7. KEY PATTERN: Spread + Parse to guarantee contract
120
151
  const output = AddOrganizationMemberOutputSchema.parse({
121
152
  ...membership
122
153
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AddOrganizationMember.js","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,gCAAgC,EAChC,iCAAiC,EAEpC,MAAM,2DAA2D,CAAC;AAEnE,OAAO,EACH,aAAa,EAEb,aAAa,EACb,iBAAiB,EACjB,eAAe,EAClB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,qBAQT,SAAQ,WAOP;IAGD,YACI,QAIC,EACD,cAIC;QAED,KAAK,CACD,8CAA8C,EAC9C,QAAQ,EACR,cAAc,EACd,gCAAgC,EAChC,iCAAkG,EAClG,mCAAmC,CACtC,CAAC;IACN,CAAC;IAES,KAAK,CAAC,SAAS,CACrB,KAAiC,EACjC,QAA0B;QAE1B,mDAAmD;QACnD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAChF,KAAK,CAAC,cAAc,CACvB,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,kFAAkF;QAClF,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,eAAe,CACf,gDAAgD,EAChD,gBAAgB,CACnB,CACJ,CAAC;QACN,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAElF,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE9C,+BAA+B;QAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,KAAK,YAAY,CAAC,EAAE,CAAC;QAE7D,sDAAsD;QACtD,MAAM,eAAe,GACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gCAAgC,CAAC,6BAA6B,CAC1F,YAAY,CAAC,EAAE,EACf,KAAK,CAAC,cAAc,CACvB,CAAC;QACN,MAAM,OAAO,GACT,CAAC,CAAC,eAAe;YACjB,eAAe,CAAC,QAAQ,KAAK,OAAO;YACpC,CAAC,CAAC,eAAe,CAAC,QAAQ;YAC1B,CAAC,eAAe,CAAC,MAAM;YACvB,CAAC,eAAe,CAAC,SAAS,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC;QAE1D,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,iBAAiB,CAAC,qDAAqD,CAAC,CAC/E,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAES,KAAK,CAAC,oBAAoB,CAChC,KAAiC,EACjC,OAAyB;QAEzB,iCAAiC;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAC5E,KAAK,CAAC,QAAQ,CACjB,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAE7C,IAAI,kBAAkB,GAAkC,IAAI,CAAC;QAC7D,oEAAoE;QACpE,IAAI,UAAU,EAAE,CAAC;YACb,4CAA4C;YAC5C,MAAM,oBAAoB,GACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gCAAgC,CAAC,6BAA6B,CAC1F,UAAU,CAAC,EAAE,EACb,KAAK,CAAC,cAAc,CACvB,CAAC;YACN,kBAAkB,GAAG,oBAAoB,CAAC;YAE1C,IAAI,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;gBACpF,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,aAAa,CACb,wBAAwB,EACxB,GAAG,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,EAC1C;oBACI,MAAM,EAAE,+CAA+C;iBAC1D,CACJ,CACJ,CAAC;YACN,CAAC;QACL,CAAC;QAED,IAAI,UAAkC,CAAC;QAEvC,IAAI,kBAAkB,IAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;YACrF,mDAAmD;YACnD,MAAM,qBAAqB,GAA2B;gBAClD,GAAG,kBAAkB;gBACrB,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,GAAG;aACS,CAAC;YAE5B,2DAA2D;YAC3D,UAAU;gBACN,qBAAqB,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;oBAC7C,CAAC,CAAC,EAAE,GAAG,qBAAqB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;oBACxE,CAAC,CAAC,qBAAqB,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,UAAU,GAAG;gBACT,EAAE,EAAE,YAAY;gBAChB,MAAM,EAAE,UAAU,EAAE,EAAE;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACS,CAAC;QAChC,CAAC;QAED,6FAA6F;QAC7F,MAAM,YAAY,GAAqB;YACnC,GAAG,OAAO;YACV,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,WAAW,EAAE,yBAAyB;SACzC,CAAC;QAEF,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC5D,IACI,kBAAkB;oBAClB,CAAC,CAAC,kBAAkB,CAAC,MAAM;oBAC3B,CAAC,kBAAkB,CAAC,SAAS,EAC/B,CAAC;oBACC,MAAM,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAC;gBAChF,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,eAAe,CAAC,wCAAwC,EAAE,SAAS,EAAE;gBACrE,aAAa,EAAE,KAAK;aACvB,CAAC,CACL,CAAC;QACN,CAAC;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAG,iCAAiC,CAAC,KAAK,CAAC;YACnD,GAAG,UAAU;SAChB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACJ"}
1
+ {"version":3,"file":"AddOrganizationMember.js","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,14 @@ import { BaseUseCase } from '../../../shared/use-case';
11
11
  * Generic support for custom fields:
12
12
  * @template TOrganizationCustomFields - Custom fields added to Organization
13
13
  */
14
- export declare class CreateOrganization<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<CreateOrganizationInput & TOrganizationCustomFields, CreateOrganizationOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements ICreateOrganization {
14
+ export declare class CreateOrganization<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<CreateOrganizationInput & TOrganizationCustomFields & {
15
+ ownerMembershipCustomFields?: TOrganizationMembershipCustomFields;
16
+ }, CreateOrganizationOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements ICreateOrganization {
15
17
  private readonly customSchema?;
18
+ private readonly membershipCustomSchema?;
16
19
  constructor(adapters: Adapters<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>, toolkitOptions?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>);
17
- protected executeBusinessLogic(input: CreateOrganizationInput & TOrganizationCustomFields, context: OperationContext): Promise<Result<CreateOrganizationOutput, DomainError>>;
20
+ protected executeBusinessLogic(input: CreateOrganizationInput & TOrganizationCustomFields & {
21
+ ownerMembershipCustomFields?: TOrganizationMembershipCustomFields;
22
+ }, context: OperationContext): Promise<Result<CreateOrganizationOutput, DomainError>>;
18
23
  }
19
24
  //# sourceMappingURL=CreateOrganization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOrganization.d.ts","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,KAAK,EACR,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EAEtB,MAAM,gDAAgD,CAAC;AAKxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EACH,KAAK,WAAW,EAEnB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAEvB,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,uBAAuB,GAAG,yBAAyB,EACnD,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,mBAAmB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAmB;gBAG7C,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cA+BW,oBAAoB,CAChC,KAAK,EAAE,uBAAuB,GAAG,yBAAyB,EAC1D,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;CAkF5D"}
1
+ {"version":3,"file":"CreateOrganization.d.ts","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,KAAK,EACR,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EAEtB,MAAM,gDAAgD,CAAC;AAKxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EACH,KAAK,WAAW,EAEnB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAEvB,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,uBAAuB,GACnB,yBAAyB,GAAG;IACxB,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;CACrE,EACL,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,mBAAmB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAmB;gBAGvD,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cAmDW,oBAAoB,CAChC,KAAK,EAAE,uBAAuB,GAC1B,yBAAyB,GAAG;QACxB,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;KACrE,EACL,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;CA4H5D"}
@@ -1,5 +1,6 @@
1
1
  import { CreateOrganizationInputSchema, CreateOrganizationOutputSchema } from '@multitenantkit/domain-contracts/organizations';
2
2
  import { ValidationError } from '@multitenantkit/domain-contracts/shared/errors/index';
3
+ import { z } from 'zod';
3
4
  import { Result } from '../../../shared/result/Result';
4
5
  import { BaseUseCase } from '../../../shared/use-case';
5
6
  /**
@@ -11,19 +12,31 @@ import { BaseUseCase } from '../../../shared/use-case';
11
12
  */
12
13
  export class CreateOrganization extends BaseUseCase {
13
14
  customSchema;
15
+ membershipCustomSchema;
14
16
  constructor(adapters, toolkitOptions) {
15
17
  // Extract organization custom schema from toolkit options
16
18
  const customSchema = toolkitOptions?.organizations?.customFields?.customSchema;
17
- // Build input schema with custom fields if provided
18
- const inputSchema = (customSchema
19
- ? CreateOrganizationInputSchema.and(customSchema.partial())
20
- : CreateOrganizationInputSchema);
19
+ // Extract organization membership custom schema from toolkit options
20
+ const membershipCustomSchema = toolkitOptions?.organizationMemberships?.customFields
21
+ ?.customSchema;
22
+ // Build input schema with organization custom fields and optional membership custom fields
23
+ let inputSchema = CreateOrganizationInputSchema;
24
+ if (customSchema) {
25
+ inputSchema = inputSchema.and(customSchema.partial());
26
+ }
27
+ if (membershipCustomSchema) {
28
+ inputSchema = inputSchema.and(z.object({
29
+ ownerMembershipCustomFields: membershipCustomSchema.partial().optional()
30
+ }));
31
+ }
32
+ const finalInputSchema = inputSchema;
21
33
  // Build output schema with custom fields if provided
22
34
  const outputSchema = (customSchema
23
35
  ? CreateOrganizationOutputSchema.merge(customSchema)
24
36
  : CreateOrganizationOutputSchema);
25
- super('organization-createOrganization', adapters, toolkitOptions, inputSchema, outputSchema, 'Failed to create organization');
37
+ super('organization-createOrganization', adapters, toolkitOptions, finalInputSchema, outputSchema, 'Failed to create organization');
26
38
  this.customSchema = customSchema;
39
+ this.membershipCustomSchema = membershipCustomSchema;
27
40
  }
28
41
  async executeBusinessLogic(input, context) {
29
42
  // 1. Business validation - e.g., ensure no conflicting organization constraints
@@ -36,15 +49,17 @@ export class CreateOrganization extends BaseUseCase {
36
49
  // 2. Generate ID and timestamp
37
50
  const organizationId = this.adapters.system.uuid.generate();
38
51
  const now = this.adapters.system.clock.now();
39
- // 3. Create Organization entity
52
+ // 3. Extract membership custom fields from input (if provided)
53
+ const { ownerMembershipCustomFields, ...organizationInput } = input;
54
+ // 4. Create Organization entity
40
55
  const organization = {
41
56
  id: organizationId,
42
- ...input,
57
+ ...organizationInput,
43
58
  ownerUserId: existingUser.id,
44
59
  createdAt: now,
45
60
  updatedAt: now
46
61
  };
47
- // 4. Validate the organization data (base + custom)
62
+ // 5. Validate the organization data (base + custom)
48
63
  const organizationSchema = this.customSchema
49
64
  ? CreateOrganizationOutputSchema.strip().and(this.customSchema.strip())
50
65
  : CreateOrganizationOutputSchema.strip();
@@ -54,7 +69,51 @@ export class CreateOrganization extends BaseUseCase {
54
69
  return Result.fail(new ValidationError(firstError.message, firstError.path.join('.')));
55
70
  }
56
71
  const validatedOrganization = validation.data;
57
- // 5. Persist organization and owner membership using Unit of Work
72
+ // 6. Create owner membership with custom fields
73
+ const ownerMembershipBase = {
74
+ id: this.adapters.system.uuid.generate(),
75
+ organizationId: validatedOrganization.id,
76
+ userId: validatedOrganization.ownerUserId,
77
+ username: existingUser.username,
78
+ roleCode: 'owner',
79
+ invitedAt: undefined,
80
+ joinedAt: now,
81
+ leftAt: undefined,
82
+ deletedAt: undefined,
83
+ createdAt: now,
84
+ updatedAt: now
85
+ };
86
+ // Merge membership base fields with custom fields
87
+ const ownerMembership = {
88
+ ...ownerMembershipBase,
89
+ ...ownerMembershipCustomFields
90
+ };
91
+ // 7. Validate the membership data (base + custom) if custom schema exists
92
+ if (this.membershipCustomSchema) {
93
+ const membershipSchema = this.membershipCustomSchema
94
+ ? z
95
+ .object({
96
+ id: z.string(),
97
+ organizationId: z.string(),
98
+ userId: z.string(),
99
+ username: z.string(),
100
+ roleCode: z.enum(['owner', 'admin', 'member']),
101
+ invitedAt: z.date().optional(),
102
+ joinedAt: z.date().optional(),
103
+ leftAt: z.date().optional(),
104
+ deletedAt: z.date().optional(),
105
+ createdAt: z.date(),
106
+ updatedAt: z.date()
107
+ })
108
+ .and(this.membershipCustomSchema)
109
+ : z.any();
110
+ const membershipValidation = membershipSchema.safeParse(ownerMembership);
111
+ if (!membershipValidation.success) {
112
+ const firstError = membershipValidation.error.errors[0];
113
+ return Result.fail(new ValidationError(`Owner membership validation failed: ${firstError.message}`, `ownerMembershipCustomFields.${firstError.path.join('.')}`));
114
+ }
115
+ }
116
+ // 8. Persist organization and owner membership using Unit of Work
58
117
  const auditContext = {
59
118
  ...context,
60
119
  organizationId: validatedOrganization.id,
@@ -68,19 +127,6 @@ export class CreateOrganization extends BaseUseCase {
68
127
  try {
69
128
  await this.adapters.persistence.uow.transaction(async (repos) => {
70
129
  await repos.organizations.insert(validatedOrganization, auditContext);
71
- const ownerMembership = {
72
- id: this.adapters.system.uuid.generate(),
73
- organizationId: validatedOrganization.id,
74
- userId: validatedOrganization.ownerUserId,
75
- username: existingUser.username,
76
- roleCode: 'owner',
77
- invitedAt: undefined,
78
- joinedAt: now,
79
- leftAt: undefined,
80
- deletedAt: undefined,
81
- createdAt: now,
82
- updatedAt: now
83
- };
84
130
  await repos.organizationMemberships.insert(ownerMembership, membershipAuditContext);
85
131
  });
86
132
  }
@@ -89,7 +135,7 @@ export class CreateOrganization extends BaseUseCase {
89
135
  originalError: error
90
136
  }));
91
137
  }
92
- // 6. Return success; BaseUseCase will parse with output schema
138
+ // 9. Return success; BaseUseCase will parse with output schema
93
139
  return Result.ok({ ...validatedOrganization });
94
140
  }
95
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOrganization.js","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateOrganization.js","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"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"}
@@ -129,10 +129,10 @@ export declare abstract class BaseUseCase<TInput, TOutput, TError extends Domain
129
129
  * 3. Validate input with schema
130
130
  * 4. afterValidation hook
131
131
  * 5. Authorize (optional)
132
- * 6. beforeExecution hook (renamed from afterAuthorization)
132
+ * 6. beforeExecution hook
133
133
  * 7. Execute business logic
134
- * 8. afterExecution hook
135
- * 9. Parse output with schema
134
+ * 8. Parse output with schema
135
+ * 9. onSuccess hook (errors don't fail the operation)
136
136
  * 10. onError hook (if error occurs)
137
137
  * 11. onAbort hook (if abort requested)
138
138
  * 12. onFinally hook (always executes)
@@ -1 +1 @@
1
- {"version":3,"file":"BaseUseCase.d.ts","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EAEX,gBAAgB,EAChB,cAAc,EAEd,IAAI,EACP,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,WAAW,CAC7B,MAAM,EACN,OAAO,EACP,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,aAAa,GAAG,GAAG,EACnB,yBAAyB,GAAG,GAAG,EAC/B,mCAAmC,GAAG,GAAG;IAwCrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC;IACD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS;IACf,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IApDjC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA2B;IAE9C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAIZ;IAEP;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGnC,WAAW,EAAE,MAAM,EACA,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,EACkB,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS,EACE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM;IAKzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;OAOG;YACW,WAAW;IA+BzB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA6BlB;;;;;;;;;;;;;;;OAeG;cACa,qBAAqB,CACjC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,EAAE,WAAW,CAAC,CAAC;IAoBrD;;;;;;;;;;;;;;;;OAgBG;IACU,OAAO,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAkInC;;OAEG;YACW,aAAa;IAS3B;;;OAGG;cACa,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAIrC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;YACW,iBAAiB;CAalC"}
1
+ {"version":3,"file":"BaseUseCase.d.ts","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EAEX,gBAAgB,EAChB,cAAc,EAEd,IAAI,EACP,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,WAAW,CAC7B,MAAM,EACN,OAAO,EACP,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,aAAa,GAAG,GAAG,EACnB,yBAAyB,GAAG,GAAG,EAC/B,mCAAmC,GAAG,GAAG;IAwCrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC;IACD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS;IACf,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IApDjC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA2B;IAE9C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAIZ;IAEP;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGnC,WAAW,EAAE,MAAM,EACA,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,EACkB,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS,EACE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM;IAKzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;OAOG;YACW,WAAW;IA+BzB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA6BlB;;;;;;;;;;;;;;;OAeG;cACa,qBAAqB,CACjC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,EAAE,WAAW,CAAC,CAAC;IAoBrD;;;;;;;;;;;;;;;;OAgBG;IACU,OAAO,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAoKnC;;OAEG;YACW,aAAa;IAS3B;;;OAGG;cACa,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAIrC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;YACW,iBAAiB;CAalC"}
@@ -203,10 +203,10 @@ export class BaseUseCase {
203
203
  * 3. Validate input with schema
204
204
  * 4. afterValidation hook
205
205
  * 5. Authorize (optional)
206
- * 6. beforeExecution hook (renamed from afterAuthorization)
206
+ * 6. beforeExecution hook
207
207
  * 7. Execute business logic
208
- * 8. afterExecution hook
209
- * 9. Parse output with schema
208
+ * 8. Parse output with schema
209
+ * 9. onSuccess hook (errors don't fail the operation)
210
210
  * 10. onError hook (if error occurs)
211
211
  * 11. onAbort hook (if abort requested)
212
212
  * 12. onFinally hook (always executes)
@@ -252,15 +252,48 @@ export class BaseUseCase {
252
252
  if (businessResult.isFailure) {
253
253
  return businessResult;
254
254
  }
255
- // Store business output in step results
256
- this.stepResults.output = businessResult.getValue();
257
- // HOOK 4: afterExecution - after successful business logic
258
- await this.executeHook(hooks?.afterExecution, hookCtx, 'afterExecution');
255
+ // 4. Parse output FIRST - validate before declaring success
256
+ // This ensures onSuccess hook only runs if output is valid
257
+ const parsedResult = this.parseOutput(businessResult.getValue());
258
+ if (parsedResult.isFailure) {
259
+ // Output validation failed - this is a bug in the use case
260
+ // Don't execute onSuccess, go straight to onError path
261
+ return parsedResult;
262
+ }
263
+ // Store parsed output in step results
264
+ this.stepResults.output = parsedResult.getValue();
265
+ // HOOK 4: onSuccess - after validating output is correct
266
+ // Errors in this hook are logged but don't fail the operation
267
+ // The business logic succeeded, so we return success regardless
268
+ try {
269
+ await this.executeHook(hooks?.onSuccess, hookCtx, 'onSuccess');
270
+ }
271
+ catch (onSuccessError) {
272
+ // Log error but don't fail the result - business operation succeeded
273
+ console.error(`Error in onSuccess hook for ${this.useCaseName}:`, onSuccessError);
274
+ // Optional: notify via onError that side effect failed
275
+ // This allows error tracking without failing the operation
276
+ try {
277
+ if (hooks?.onError) {
278
+ this.logMetrics('onError', hookCtx);
279
+ await hooks.onError({
280
+ ...hookCtx,
281
+ error: new InfrastructureError('Side effect failed in onSuccess hook', {
282
+ originalError: onSuccessError
283
+ })
284
+ });
285
+ }
286
+ }
287
+ catch {
288
+ // Silent fail - onError failed, but don't cascade
289
+ }
290
+ }
291
+ // Check if hook requested abort
259
292
  if (this.checkAborted()) {
260
293
  return Result.fail(new AbortedError(this.abortReason));
261
294
  }
262
- // 4. Parse and return output
263
- return this.parseOutput(businessResult.getValue());
295
+ // Return successful result with parsed output
296
+ return parsedResult;
264
297
  });
265
298
  // If result is AbortedError, execute onAbort hook
266
299
  if (result.isFailure && result.getError() instanceof AbortedError) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseUseCase.js","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EACH,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,eAAe,EAClB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAgB,WAAW;IA8CN;IAKA;IAOF;IACA;IACA;IApDrB;;;OAGG;IACK,cAAc,GAAY,KAAK,CAAC;IAChC,WAAW,GAAW,EAAE,CAAC;IAEjC;;;OAGG;IACK,WAAW,GAAwB,EAAE,CAAC;IAE9C;;;OAGG;IACK,WAAW,GAIf,EAAE,CAAC;IAEP;;;OAGG;IACK,WAAW,GAAW,EAAE,CAAC;IAEjC;;;;OAIG;IACgB,WAAW,CAAS;IAEvC,YACI,WAAmB,EACA,QAIlB,EACkB,cAMJ,EACE,WAA8B,EAC9B,YAAgC,EAChC,YAAoB;QAdlB,aAAQ,GAAR,QAAQ,CAI1B;QACkB,mBAAc,GAAd,cAAc,CAMlB;QACE,gBAAW,GAAX,WAAW,CAAmB;QAC9B,iBAAY,GAAZ,YAAY,CAAoB;QAChC,iBAAY,GAAZ,YAAY,CAAQ;QAErC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;;OAGG;IACK,wBAAwB;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACK,mBAAmB;QACvB,OAAO,CAAC,MAAc,EAAE,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC9B,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACK,YAAY;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACpB,KAAa,EACb,OAAyB;QAQzB,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,KAAK,EAAE,oBAAoB;YAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB;YACnD,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;SACpC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,cAAc;QAUlB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAqD,CAAC;QAC3F,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CASpC,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,WAAW,CACrB,MAUe,EACf,GAMC,EACD,QAAgB;QAEhB,yDAAyD;QACzD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,MAAM,CAAC,GAAU,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACK,UAAU,CACd,QAAgB,EAChB,GAMC;QAED,IAAI,CAAC;YACD,6BAA6B;YAC7B,IAAI,CAAC,QAAQ,CAAC,aAAa;gBACvB,EAAE,gBAAgB,CAAC;gBACf,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS;gBAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ;gBACR,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE,GAAU;aACrB,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACR,qDAAqD;YACzD,CAAC,CAAC,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACL,gEAAgE;QACpE,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACO,KAAK,CAAC,qBAAqB,CACjC,UAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,mBAAmB,CAAC,sDAAsD,CAAC,CAClF,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE;gBAClC,OAAO,EACH,sHAAsH;aAC7H,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,CAAC,OAAO,CAChB,KAAa,EACb,OAAyB;QAEzB,6BAA6B;QAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEpC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACjD,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEtD,sCAAsC;YACtC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAGpD,CAAC;YACN,CAAC;YAED,oBAAoB;YACpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,cAAoD,CAAC;YAChE,CAAC;YAED,wCAAwC;YACxC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;YAE5D,wDAAwD;YACxD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAGpD,CAAC;YACN,CAAC;YAED,0BAA0B;YAC1B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5E,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,UAAqC,CAAC;YACjD,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;YAEnC,kFAAkF;YAClF,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAGpD,CAAC;YACN,CAAC;YAED,4BAA4B;YAC5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAClD,cAAc,CAAC,QAAQ,EAAE,EACzB,OAAO,CACV,CAAC;YACF,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,cAAc,CAAC;YAC1B,CAAC;YAED,wCAAwC;YACxC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;YAEpD,2DAA2D;YAC3D,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAGpD,CAAC;YACN,CAAC;YAED,6BAA6B;YAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,YAAY,EAAE,CAAC;YAChE,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtD,MAAM,WAAW,GAAG,KAAK,EAAE,OAAO,CAAC;gBACnC,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACpC,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAS,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBAClB,8DAA8D;gBAC9D,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,WAAW,GAAG,EAAE,UAAU,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;QACD,6DAA6D;aACxD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtD,MAAM,WAAW,GAAG,KAAK,EAAE,OAAO,CAAC;gBACnC,IAAI,WAAW,EAAE,CAAC;oBACd,kCAAkC;oBAClC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACpC,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAS,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,kDAAkD;gBAClD,MAAM,GAAG,MAAM,CAAC,IAAI,CAChB,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE;oBAC9C,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAY;oBAC1C,KAAK;iBACR,CAAC,CACiC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,KAAK,EAAE,SAAS,CAAC;YACvC,IAAI,aAAa,EAAE,CAAC;gBAChB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtC,MAAM,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAS,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACpB,0DAA0D;YAC1D,OAAO,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,WAAW,GAAG,EAAE,YAAY,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,KAAa;QACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,SAAS,CACrB,MAAc,EACd,QAA0B;QAE1B,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAWD;;OAEG;IACK,WAAW,CAAC,IAAa;QAC7B,IAAI,CAAC;YACD,iDAAiD;YACjD,MAAM,YAAY,GACd,IAAI,KAAK,SAAS;gBACd,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnB,CAAC,CAAE,IAAgB;oBACnB,CAAC,CAAE,EAAE,GAAI,IAAY,EAAc,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAY,CAAC;YAChE,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,eAAe,CAAC,wBAAwB,EAAE,SAAS,EAAE;gBACrD,aAAa,EAAE,KAAK;aACvB,CAAC,CACiC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAC3B,SAAiD;QAEjD,IAAI,CAAC;YACD,OAAO,MAAM,SAAS,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,IAAI,CACd,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE;gBAC9C,aAAa,EAAE,KAAK;aACvB,CAAC,CACiC,CAAC;QAC5C,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"BaseUseCase.js","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multitenantkit/domain",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "description": "Core domain logic and use cases for MultiTenantKit - Pure business logic layer",
6
6
  "keywords": [
@@ -71,7 +71,7 @@
71
71
  "test:coverage": "vitest run --coverage"
72
72
  },
73
73
  "dependencies": {
74
- "@multitenantkit/domain-contracts": "^0.1.1",
74
+ "@multitenantkit/domain-contracts": "^0.1.2",
75
75
  "zod": "^3.22.4"
76
76
  },
77
77
  "devDependencies": {