@dismissible/nestjs-core 1.0.3-alpha.064e57a.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 (179) hide show
  1. package/README.md +504 -0
  2. package/package.json +69 -0
  3. package/src/api/dismissible-item-response.dto.d.ts +9 -0
  4. package/src/api/dismissible-item-response.dto.js +40 -0
  5. package/src/api/dismissible-item-response.dto.js.map +1 -0
  6. package/src/api/dismissible-item.mapper.d.ts +12 -0
  7. package/src/api/dismissible-item.mapper.js +30 -0
  8. package/src/api/dismissible-item.mapper.js.map +1 -0
  9. package/src/api/dismissible-item.mapper.spec.d.ts +1 -0
  10. package/src/api/dismissible-item.mapper.spec.js +43 -0
  11. package/src/api/dismissible-item.mapper.spec.js.map +1 -0
  12. package/src/api/index.d.ts +4 -0
  13. package/src/api/index.js +8 -0
  14. package/src/api/index.js.map +1 -0
  15. package/src/api/use-cases/api-tags.constants.d.ts +4 -0
  16. package/src/api/use-cases/api-tags.constants.js +8 -0
  17. package/src/api/use-cases/api-tags.constants.js.map +1 -0
  18. package/src/api/use-cases/dismiss/dismiss.controller.d.ts +15 -0
  19. package/src/api/use-cases/dismiss/dismiss.controller.js +74 -0
  20. package/src/api/use-cases/dismiss/dismiss.controller.js.map +1 -0
  21. package/src/api/use-cases/dismiss/dismiss.controller.spec.d.ts +1 -0
  22. package/src/api/use-cases/dismiss/dismiss.controller.spec.js +37 -0
  23. package/src/api/use-cases/dismiss/dismiss.controller.spec.js.map +1 -0
  24. package/src/api/use-cases/dismiss/dismiss.response.dto.d.ts +12 -0
  25. package/src/api/use-cases/dismiss/dismiss.response.dto.js +12 -0
  26. package/src/api/use-cases/dismiss/dismiss.response.dto.js.map +1 -0
  27. package/src/api/use-cases/dismiss/index.d.ts +2 -0
  28. package/src/api/use-cases/dismiss/index.js +6 -0
  29. package/src/api/use-cases/dismiss/index.js.map +1 -0
  30. package/src/api/use-cases/get-or-create/get-or-create.controller.d.ts +15 -0
  31. package/src/api/use-cases/get-or-create/get-or-create.controller.js +70 -0
  32. package/src/api/use-cases/get-or-create/get-or-create.controller.js.map +1 -0
  33. package/src/api/use-cases/get-or-create/get-or-create.controller.spec.d.ts +1 -0
  34. package/src/api/use-cases/get-or-create/get-or-create.controller.spec.js +32 -0
  35. package/src/api/use-cases/get-or-create/get-or-create.controller.spec.js.map +1 -0
  36. package/src/api/use-cases/get-or-create/get-or-create.response.dto.d.ts +12 -0
  37. package/src/api/use-cases/get-or-create/get-or-create.response.dto.js +12 -0
  38. package/src/api/use-cases/get-or-create/get-or-create.response.dto.js.map +1 -0
  39. package/src/api/use-cases/get-or-create/index.d.ts +2 -0
  40. package/src/api/use-cases/get-or-create/index.js +6 -0
  41. package/src/api/use-cases/get-or-create/index.js.map +1 -0
  42. package/src/api/use-cases/index.d.ts +3 -0
  43. package/src/api/use-cases/index.js +7 -0
  44. package/src/api/use-cases/index.js.map +1 -0
  45. package/src/api/use-cases/restore/index.d.ts +2 -0
  46. package/src/api/use-cases/restore/index.js +6 -0
  47. package/src/api/use-cases/restore/index.js.map +1 -0
  48. package/src/api/use-cases/restore/restore.controller.d.ts +15 -0
  49. package/src/api/use-cases/restore/restore.controller.js +74 -0
  50. package/src/api/use-cases/restore/restore.controller.js.map +1 -0
  51. package/src/api/use-cases/restore/restore.controller.spec.d.ts +1 -0
  52. package/src/api/use-cases/restore/restore.controller.spec.js +37 -0
  53. package/src/api/use-cases/restore/restore.controller.spec.js.map +1 -0
  54. package/src/api/use-cases/restore/restore.response.dto.d.ts +12 -0
  55. package/src/api/use-cases/restore/restore.response.dto.js +12 -0
  56. package/src/api/use-cases/restore/restore.response.dto.js.map +1 -0
  57. package/src/api/validation/index.d.ts +2 -0
  58. package/src/api/validation/index.js +6 -0
  59. package/src/api/validation/index.js.map +1 -0
  60. package/src/api/validation/param-validation.pipe.d.ts +11 -0
  61. package/src/api/validation/param-validation.pipe.js +36 -0
  62. package/src/api/validation/param-validation.pipe.js.map +1 -0
  63. package/src/api/validation/param-validation.pipe.spec.d.ts +1 -0
  64. package/src/api/validation/param-validation.pipe.spec.js +269 -0
  65. package/src/api/validation/param-validation.pipe.spec.js.map +1 -0
  66. package/src/api/validation/param.decorators.d.ts +28 -0
  67. package/src/api/validation/param.decorators.js +36 -0
  68. package/src/api/validation/param.decorators.js.map +1 -0
  69. package/src/core/dismissible-core.service.d.ts +56 -0
  70. package/src/core/dismissible-core.service.js +147 -0
  71. package/src/core/dismissible-core.service.js.map +1 -0
  72. package/src/core/dismissible-core.service.spec.d.ts +1 -0
  73. package/src/core/dismissible-core.service.spec.js +309 -0
  74. package/src/core/dismissible-core.service.spec.js.map +1 -0
  75. package/src/core/dismissible.service.d.ts +45 -0
  76. package/src/core/dismissible.service.js +127 -0
  77. package/src/core/dismissible.service.js.map +1 -0
  78. package/src/core/dismissible.service.spec.d.ts +1 -0
  79. package/src/core/dismissible.service.spec.js +159 -0
  80. package/src/core/dismissible.service.spec.js.map +1 -0
  81. package/src/core/hook-runner.service.d.ts +88 -0
  82. package/src/core/hook-runner.service.js +226 -0
  83. package/src/core/hook-runner.service.js.map +1 -0
  84. package/src/core/hook-runner.service.spec.d.ts +1 -0
  85. package/src/core/hook-runner.service.spec.js +538 -0
  86. package/src/core/hook-runner.service.spec.js.map +1 -0
  87. package/src/core/index.d.ts +5 -0
  88. package/src/core/index.js +9 -0
  89. package/src/core/index.js.map +1 -0
  90. package/src/core/lifecycle-hook.interface.d.ts +1 -0
  91. package/src/core/lifecycle-hook.interface.js +7 -0
  92. package/src/core/lifecycle-hook.interface.js.map +1 -0
  93. package/src/core/service-responses.interface.d.ts +28 -0
  94. package/src/core/service-responses.interface.js +3 -0
  95. package/src/core/service-responses.interface.js.map +1 -0
  96. package/src/dismissible.module.d.ts +13 -0
  97. package/src/dismissible.module.integration.spec.d.ts +1 -0
  98. package/src/dismissible.module.integration.spec.js +529 -0
  99. package/src/dismissible.module.integration.spec.js.map +1 -0
  100. package/src/dismissible.module.js +77 -0
  101. package/src/dismissible.module.js.map +1 -0
  102. package/src/events/dismissible.events.d.ts +45 -0
  103. package/src/events/dismissible.events.js +53 -0
  104. package/src/events/dismissible.events.js.map +1 -0
  105. package/src/events/events.constants.d.ts +17 -0
  106. package/src/events/events.constants.js +17 -0
  107. package/src/events/events.constants.js.map +1 -0
  108. package/src/events/index.d.ts +2 -0
  109. package/src/events/index.js +6 -0
  110. package/src/events/index.js.map +1 -0
  111. package/src/exceptions/dismissible.exceptions.d.ts +26 -0
  112. package/src/exceptions/dismissible.exceptions.js +49 -0
  113. package/src/exceptions/dismissible.exceptions.js.map +1 -0
  114. package/src/exceptions/dismissible.exceptions.spec.d.ts +1 -0
  115. package/src/exceptions/dismissible.exceptions.spec.js +40 -0
  116. package/src/exceptions/dismissible.exceptions.spec.js.map +1 -0
  117. package/src/exceptions/index.d.ts +1 -0
  118. package/src/exceptions/index.js +5 -0
  119. package/src/exceptions/index.js.map +1 -0
  120. package/src/index.d.ts +8 -0
  121. package/src/index.js +12 -0
  122. package/src/index.js.map +1 -0
  123. package/src/response/dtos/base-response.dto.d.ts +6 -0
  124. package/src/response/dtos/base-response.dto.js +18 -0
  125. package/src/response/dtos/base-response.dto.js.map +1 -0
  126. package/src/response/dtos/error-response.dto.d.ts +19 -0
  127. package/src/response/dtos/error-response.dto.js +39 -0
  128. package/src/response/dtos/error-response.dto.js.map +1 -0
  129. package/src/response/dtos/index.d.ts +3 -0
  130. package/src/response/dtos/index.js +7 -0
  131. package/src/response/dtos/index.js.map +1 -0
  132. package/src/response/dtos/success-response.dto.d.ts +28 -0
  133. package/src/response/dtos/success-response.dto.js +34 -0
  134. package/src/response/dtos/success-response.dto.js.map +1 -0
  135. package/src/response/http-exception-filter.d.ts +4 -0
  136. package/src/response/http-exception-filter.js +24 -0
  137. package/src/response/http-exception-filter.js.map +1 -0
  138. package/src/response/http-exception-filter.spec.d.ts +1 -0
  139. package/src/response/http-exception-filter.spec.js +137 -0
  140. package/src/response/http-exception-filter.spec.js.map +1 -0
  141. package/src/response/index.d.ts +4 -0
  142. package/src/response/index.js +8 -0
  143. package/src/response/index.js.map +1 -0
  144. package/src/response/response.module.d.ts +2 -0
  145. package/src/response/response.module.js +17 -0
  146. package/src/response/response.module.js.map +1 -0
  147. package/src/response/response.service.d.ts +6 -0
  148. package/src/response/response.service.js +25 -0
  149. package/src/response/response.service.js.map +1 -0
  150. package/src/response/response.service.spec.d.ts +1 -0
  151. package/src/response/response.service.spec.js +58 -0
  152. package/src/response/response.service.spec.js.map +1 -0
  153. package/src/testing/factories.d.ts +14 -0
  154. package/src/testing/factories.js +58 -0
  155. package/src/testing/factories.js.map +1 -0
  156. package/src/testing/index.d.ts +1 -0
  157. package/src/testing/index.js +5 -0
  158. package/src/testing/index.js.map +1 -0
  159. package/src/utils/date/date.service.d.ts +8 -0
  160. package/src/utils/date/date.service.js +24 -0
  161. package/src/utils/date/date.service.js.map +1 -0
  162. package/src/utils/date/date.service.spec.d.ts +1 -0
  163. package/src/utils/date/date.service.spec.js +83 -0
  164. package/src/utils/date/date.service.spec.js.map +1 -0
  165. package/src/utils/date/index.d.ts +1 -0
  166. package/src/utils/date/index.js +5 -0
  167. package/src/utils/date/index.js.map +1 -0
  168. package/src/utils/dismissible.helper.d.ts +4 -0
  169. package/src/utils/dismissible.helper.js +15 -0
  170. package/src/utils/dismissible.helper.js.map +1 -0
  171. package/src/utils/index.d.ts +3 -0
  172. package/src/utils/index.js +7 -0
  173. package/src/utils/index.js.map +1 -0
  174. package/src/validation/dismissible-input.dto.d.ts +21 -0
  175. package/src/validation/dismissible-input.dto.js +54 -0
  176. package/src/validation/dismissible-input.dto.js.map +1 -0
  177. package/src/validation/index.d.ts +1 -0
  178. package/src/validation/index.js +5 -0
  179. package/src/validation/index.js.map +1 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DismissibleService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const event_emitter_1 = require("@nestjs/event-emitter");
7
+ const dismissible_core_service_1 = require("./dismissible-core.service");
8
+ const hook_runner_service_1 = require("./hook-runner.service");
9
+ const nestjs_logger_1 = require("@dismissible/nestjs-logger");
10
+ const events_1 = require("../events");
11
+ const events_2 = require("../events");
12
+ const nestjs_validation_1 = require("@dismissible/nestjs-validation");
13
+ const validation_1 = require("../validation");
14
+ /**
15
+ * Main orchestration service for dismissible operations.
16
+ * Coordinates core logic, hooks, and events.
17
+ */
18
+ let DismissibleService = class DismissibleService {
19
+ constructor(coreService, hookRunner, eventEmitter, logger, validationService) {
20
+ this.coreService = coreService;
21
+ this.hookRunner = hookRunner;
22
+ this.eventEmitter = eventEmitter;
23
+ this.logger = logger;
24
+ this.validationService = validationService;
25
+ }
26
+ /**
27
+ * Validates input parameters for all service methods.
28
+ * Provides defense in depth when the service is used directly without controllers.
29
+ */
30
+ async validateInput(itemId, userId) {
31
+ await this.validationService.validateDto(validation_1.DismissibleInputDto, { itemId, userId });
32
+ }
33
+ /**
34
+ * Get an existing item or create a new one.
35
+ * @param itemId The item identifier
36
+ * @param userId The user identifier (required)
37
+ * @param context Optional request context for tracing
38
+ */
39
+ async getOrCreate(itemId, userId, context) {
40
+ this.logger.debug(`getOrCreate called`, { itemId, userId });
41
+ await this.validateInput(itemId, userId);
42
+ const preResult = await this.hookRunner.runPreRequest(itemId, userId, context);
43
+ hook_runner_service_1.HookRunner.throwIfBlocked(preResult);
44
+ const resolvedId = preResult.id;
45
+ const resolvedUserId = preResult.userId;
46
+ const resolvedContext = preResult.context;
47
+ const existingItem = await this.coreService.get(resolvedId, resolvedUserId);
48
+ if (existingItem) {
49
+ const preGetResult = await this.hookRunner.runPreGet(resolvedId, existingItem, resolvedUserId, resolvedContext);
50
+ hook_runner_service_1.HookRunner.throwIfBlocked(preGetResult);
51
+ this.eventEmitter.emit(events_1.DismissibleEvents.ITEM_RETRIEVED, new events_2.ItemRetrievedEvent(resolvedId, existingItem, resolvedUserId, resolvedContext));
52
+ await this.hookRunner.runPostGet(resolvedId, existingItem, resolvedUserId, resolvedContext);
53
+ await this.hookRunner.runPostRequest(resolvedId, existingItem, resolvedUserId, resolvedContext);
54
+ this.logger.debug(`getOrCreate completed`, { itemId, created: false });
55
+ return {
56
+ item: existingItem,
57
+ created: false,
58
+ };
59
+ }
60
+ const preCreateResult = await this.hookRunner.runPreCreate(resolvedId, resolvedUserId, resolvedContext);
61
+ hook_runner_service_1.HookRunner.throwIfBlocked(preCreateResult);
62
+ const createdItem = await this.coreService.create(resolvedId, resolvedUserId);
63
+ await this.hookRunner.runPostCreate(resolvedId, createdItem, resolvedUserId, resolvedContext);
64
+ this.eventEmitter.emit(events_1.DismissibleEvents.ITEM_CREATED, new events_2.ItemCreatedEvent(resolvedId, createdItem, resolvedUserId, resolvedContext));
65
+ await this.hookRunner.runPostRequest(resolvedId, createdItem, resolvedUserId, resolvedContext);
66
+ this.logger.debug(`getOrCreate completed`, { itemId, created: true });
67
+ return {
68
+ item: createdItem,
69
+ created: true,
70
+ };
71
+ }
72
+ /**
73
+ * Dismiss an item.
74
+ * @param itemId The item identifier
75
+ * @param userId The user identifier (required)
76
+ * @param context Optional request context for tracing
77
+ */
78
+ async dismiss(itemId, userId, context) {
79
+ this.logger.debug(`dismiss called`, { itemId, userId });
80
+ await this.validateInput(itemId, userId);
81
+ const preRequestResult = await this.hookRunner.runPreRequest(itemId, userId, context);
82
+ hook_runner_service_1.HookRunner.throwIfBlocked(preRequestResult);
83
+ const resolvedId = preRequestResult.id;
84
+ const resolvedUserId = preRequestResult.userId;
85
+ const resolvedContext = preRequestResult.context;
86
+ const preDismissResult = await this.hookRunner.runPreDismiss(resolvedId, resolvedUserId, resolvedContext);
87
+ hook_runner_service_1.HookRunner.throwIfBlocked(preDismissResult);
88
+ const result = await this.coreService.dismiss(resolvedId, resolvedUserId);
89
+ await this.hookRunner.runPostDismiss(resolvedId, result.item, resolvedUserId, resolvedContext);
90
+ this.eventEmitter.emit(events_1.DismissibleEvents.ITEM_DISMISSED, new events_2.ItemDismissedEvent(resolvedId, result.item, result.previousItem, resolvedUserId, resolvedContext));
91
+ await this.hookRunner.runPostRequest(resolvedId, result.item, resolvedUserId, resolvedContext);
92
+ this.logger.debug(`dismiss completed`, { itemId });
93
+ return result;
94
+ }
95
+ /**
96
+ * Restore a dismissed item.
97
+ * @param itemId The item identifier
98
+ * @param userId The user identifier (required)
99
+ * @param context Optional request context for tracing
100
+ */
101
+ async restore(itemId, userId, context) {
102
+ this.logger.debug(`restore called`, { itemId, userId });
103
+ await this.validateInput(itemId, userId);
104
+ const preRequestResult = await this.hookRunner.runPreRequest(itemId, userId, context);
105
+ hook_runner_service_1.HookRunner.throwIfBlocked(preRequestResult);
106
+ const resolvedId = preRequestResult.id;
107
+ const resolvedUserId = preRequestResult.userId;
108
+ const resolvedContext = preRequestResult.context;
109
+ const preRestoreResult = await this.hookRunner.runPreRestore(resolvedId, resolvedUserId, resolvedContext);
110
+ hook_runner_service_1.HookRunner.throwIfBlocked(preRestoreResult);
111
+ const result = await this.coreService.restore(resolvedId, resolvedUserId);
112
+ await this.hookRunner.runPostRestore(resolvedId, result.item, resolvedUserId, resolvedContext);
113
+ this.eventEmitter.emit(events_1.DismissibleEvents.ITEM_RESTORED, new events_2.ItemRestoredEvent(resolvedId, result.item, result.previousItem, resolvedUserId, resolvedContext));
114
+ await this.hookRunner.runPostRequest(resolvedId, result.item, resolvedUserId, resolvedContext);
115
+ this.logger.debug(`restore completed`, { itemId });
116
+ return result;
117
+ }
118
+ };
119
+ exports.DismissibleService = DismissibleService;
120
+ exports.DismissibleService = DismissibleService = tslib_1.__decorate([
121
+ (0, common_1.Injectable)(),
122
+ tslib_1.__param(3, (0, common_1.Inject)(nestjs_logger_1.DISMISSIBLE_LOGGER)),
123
+ tslib_1.__metadata("design:paramtypes", [dismissible_core_service_1.DismissibleCoreService,
124
+ hook_runner_service_1.HookRunner,
125
+ event_emitter_1.EventEmitter2, Object, nestjs_validation_1.ValidationService])
126
+ ], DismissibleService);
127
+ //# sourceMappingURL=dismissible.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismissible.service.js","sourceRoot":"","sources":["../../../../../libs/core/src/core/dismissible.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ts_jest_mocker_1 = require("ts-jest-mocker");
4
+ const event_emitter_1 = require("@nestjs/event-emitter");
5
+ const dismissible_service_1 = require("./dismissible.service");
6
+ const dismissible_core_service_1 = require("./dismissible-core.service");
7
+ const hook_runner_service_1 = require("./hook-runner.service");
8
+ const nestjs_validation_1 = require("@dismissible/nestjs-validation");
9
+ const events_1 = require("../events");
10
+ const factories_1 = require("../testing/factories");
11
+ describe('DismissibleService', () => {
12
+ let service;
13
+ let mockCoreService;
14
+ let mockHookRunner;
15
+ let mockEventEmitter;
16
+ let mockLogger;
17
+ let mockValidationService;
18
+ const testUserId = 'test-user-id';
19
+ const createHookResult = (id, userId = testUserId) => ({
20
+ proceed: true,
21
+ id,
22
+ userId,
23
+ context: (0, factories_1.createTestContext)(),
24
+ });
25
+ beforeEach(() => {
26
+ mockCoreService = (0, ts_jest_mocker_1.mock)(dismissible_core_service_1.DismissibleCoreService, { failIfMockNotProvided: false });
27
+ mockHookRunner = (0, ts_jest_mocker_1.mock)(hook_runner_service_1.HookRunner, { failIfMockNotProvided: false });
28
+ mockEventEmitter = (0, ts_jest_mocker_1.mock)(event_emitter_1.EventEmitter2, { failIfMockNotProvided: false });
29
+ mockLogger = (0, ts_jest_mocker_1.mock)({ failIfMockNotProvided: false });
30
+ mockValidationService = (0, ts_jest_mocker_1.mock)(nestjs_validation_1.ValidationService, { failIfMockNotProvided: false });
31
+ mockValidationService.validateDto.mockResolvedValue({});
32
+ service = new dismissible_service_1.DismissibleService(mockCoreService, mockHookRunner, mockEventEmitter, mockLogger, mockValidationService);
33
+ });
34
+ describe('getOrCreate', () => {
35
+ it('should run request and get hooks for existing item', async () => {
36
+ const item = (0, factories_1.createTestItem)({ id: 'existing-item' });
37
+ const context = (0, factories_1.createTestContext)();
38
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('existing-item'));
39
+ mockHookRunner.runPreGet.mockResolvedValue(createHookResult('existing-item'));
40
+ mockCoreService.get.mockResolvedValue(item);
41
+ const result = await service.getOrCreate('existing-item', testUserId, context);
42
+ expect(mockHookRunner.runPreRequest).toHaveBeenCalled();
43
+ expect(mockCoreService.get).toHaveBeenCalledWith('existing-item', testUserId);
44
+ expect(mockHookRunner.runPreGet).toHaveBeenCalledWith('existing-item', item, testUserId, expect.anything());
45
+ expect(mockHookRunner.runPostGet).toHaveBeenCalled();
46
+ expect(mockHookRunner.runPostRequest).toHaveBeenCalled();
47
+ expect(mockCoreService.create).not.toHaveBeenCalled();
48
+ expect(mockHookRunner.runPreCreate).not.toHaveBeenCalled();
49
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_RETRIEVED, expect.anything());
50
+ expect(result.created).toBe(false);
51
+ });
52
+ it('should run pre-create hooks BEFORE creating for new item', async () => {
53
+ const item = (0, factories_1.createTestItem)({ id: 'new-item' });
54
+ const context = (0, factories_1.createTestContext)();
55
+ const callOrder = [];
56
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('new-item'));
57
+ mockCoreService.get.mockResolvedValue(null);
58
+ mockHookRunner.runPreCreate.mockImplementation(async () => {
59
+ callOrder.push('runPreCreate');
60
+ return createHookResult('new-item');
61
+ });
62
+ mockCoreService.create.mockImplementation(async () => {
63
+ callOrder.push('create');
64
+ return item;
65
+ });
66
+ const result = await service.getOrCreate('new-item', testUserId, context);
67
+ expect(callOrder).toEqual(['runPreCreate', 'create']);
68
+ expect(mockHookRunner.runPreRequest).toHaveBeenCalled();
69
+ expect(mockHookRunner.runPreCreate).toHaveBeenCalled();
70
+ expect(mockCoreService.create).toHaveBeenCalledWith('new-item', testUserId);
71
+ expect(mockHookRunner.runPostCreate).toHaveBeenCalled();
72
+ expect(mockHookRunner.runPostRequest).toHaveBeenCalled();
73
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_CREATED, expect.anything());
74
+ expect(result.created).toBe(true);
75
+ });
76
+ it('should NOT create item when pre-create hook blocks the operation', async () => {
77
+ const context = (0, factories_1.createTestContext)();
78
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('new-item'));
79
+ mockCoreService.get.mockResolvedValue(null);
80
+ mockHookRunner.runPreCreate.mockResolvedValue({
81
+ proceed: false,
82
+ reason: 'Plan limit reached',
83
+ id: 'new-item',
84
+ userId: testUserId,
85
+ context: (0, factories_1.createTestContext)(),
86
+ });
87
+ await expect(service.getOrCreate('new-item', testUserId, context)).rejects.toThrow();
88
+ expect(mockCoreService.create).not.toHaveBeenCalled();
89
+ expect(mockHookRunner.runPostCreate).not.toHaveBeenCalled();
90
+ expect(mockEventEmitter.emit).not.toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_CREATED, expect.anything());
91
+ });
92
+ it('should NOT return existing item when pre-get hook blocks the operation', async () => {
93
+ const item = (0, factories_1.createTestItem)({ id: 'existing-item' });
94
+ const context = (0, factories_1.createTestContext)();
95
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('existing-item'));
96
+ mockCoreService.get.mockResolvedValue(item);
97
+ mockHookRunner.runPreGet.mockResolvedValue({
98
+ proceed: false,
99
+ reason: 'Item access denied',
100
+ id: 'existing-item',
101
+ userId: testUserId,
102
+ context: (0, factories_1.createTestContext)(),
103
+ });
104
+ await expect(service.getOrCreate('existing-item', testUserId, context)).rejects.toThrow();
105
+ expect(mockHookRunner.runPostGet).not.toHaveBeenCalled();
106
+ expect(mockHookRunner.runPostRequest).not.toHaveBeenCalled();
107
+ expect(mockEventEmitter.emit).not.toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_RETRIEVED, expect.anything());
108
+ });
109
+ });
110
+ describe('dismiss', () => {
111
+ it('should run hooks, call core service, and emit ITEM_DISMISSED event', async () => {
112
+ const item = (0, factories_1.createTestItem)({ id: 'test-item' });
113
+ const previousItem = (0, factories_1.createTestItem)({ id: 'test-item' });
114
+ const context = (0, factories_1.createTestContext)();
115
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('test-item'));
116
+ mockHookRunner.runPreDismiss.mockResolvedValue(createHookResult('test-item'));
117
+ mockCoreService.dismiss.mockResolvedValue({ item, previousItem });
118
+ const result = await service.dismiss('test-item', testUserId, context);
119
+ expect(mockHookRunner.runPreRequest).toHaveBeenCalled();
120
+ expect(mockHookRunner.runPreDismiss).toHaveBeenCalled();
121
+ expect(mockCoreService.dismiss).toHaveBeenCalledWith('test-item', testUserId);
122
+ expect(mockHookRunner.runPostDismiss).toHaveBeenCalled();
123
+ expect(mockHookRunner.runPostRequest).toHaveBeenCalled();
124
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_DISMISSED, expect.anything());
125
+ expect(result.item).toEqual(item);
126
+ });
127
+ });
128
+ describe('restore', () => {
129
+ it('should run hooks, call core service, and emit ITEM_RESTORED event', async () => {
130
+ const item = (0, factories_1.createTestItem)({ id: 'test-item' });
131
+ const previousItem = (0, factories_1.createTestItem)({ id: 'test-item' });
132
+ const context = (0, factories_1.createTestContext)();
133
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('test-item'));
134
+ mockHookRunner.runPreRestore.mockResolvedValue(createHookResult('test-item'));
135
+ mockCoreService.restore.mockResolvedValue({ item, previousItem });
136
+ const result = await service.restore('test-item', testUserId, context);
137
+ expect(mockHookRunner.runPreRequest).toHaveBeenCalled();
138
+ expect(mockHookRunner.runPreRestore).toHaveBeenCalled();
139
+ expect(mockCoreService.restore).toHaveBeenCalledWith('test-item', testUserId);
140
+ expect(mockHookRunner.runPostRestore).toHaveBeenCalled();
141
+ expect(mockHookRunner.runPostRequest).toHaveBeenCalled();
142
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(events_1.DismissibleEvents.ITEM_RESTORED, expect.anything());
143
+ expect(result.item).toEqual(item);
144
+ });
145
+ });
146
+ describe('logging', () => {
147
+ it('should log debug messages for operations', async () => {
148
+ const item = (0, factories_1.createTestItem)({ id: 'test-item' });
149
+ const context = (0, factories_1.createTestContext)();
150
+ mockHookRunner.runPreRequest.mockResolvedValue(createHookResult('test-item'));
151
+ mockHookRunner.runPreGet.mockResolvedValue(createHookResult('test-item'));
152
+ mockCoreService.get.mockResolvedValue(item);
153
+ await service.getOrCreate('test-item', testUserId, context);
154
+ expect(mockLogger.debug).toHaveBeenCalledWith(expect.stringContaining('getOrCreate called'), expect.any(Object));
155
+ expect(mockLogger.debug).toHaveBeenCalledWith(expect.stringContaining('getOrCreate completed'), expect.any(Object));
156
+ });
157
+ });
158
+ });
159
+ //# sourceMappingURL=dismissible.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismissible.service.spec.js","sourceRoot":"","sources":["../../../../../libs/core/src/core/dismissible.service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { IDismissibleLifecycleHook } from '@dismissible/nestjs-hooks';
2
+ import { IDismissibleLogger } from '@dismissible/nestjs-logger';
3
+ import { DismissibleItemDto } from '@dismissible/nestjs-item';
4
+ import { IRequestContext } from '@dismissible/nestjs-request';
5
+ /**
6
+ * Result from running pre-hooks.
7
+ */
8
+ export interface IHookRunResult {
9
+ /** Whether the operation should proceed */
10
+ proceed: boolean;
11
+ /** The (potentially mutated) item ID */
12
+ id: string;
13
+ /** The (potentially mutated) user ID */
14
+ userId: string;
15
+ /** The (potentially mutated) request context */
16
+ context?: IRequestContext;
17
+ /** Reason for blocking (if proceed is false) */
18
+ reason?: string;
19
+ }
20
+ /**
21
+ * Service responsible for running lifecycle hooks.
22
+ */
23
+ export declare class HookRunner {
24
+ private readonly logger;
25
+ private readonly sortedHooks;
26
+ constructor(hooks: IDismissibleLifecycleHook[], logger: IDismissibleLogger);
27
+ /**
28
+ * Run pre-request hooks (global - runs at start of any operation).
29
+ * Use for authentication, rate limiting, request validation.
30
+ */
31
+ runPreRequest(itemId: string, userId: string, context?: IRequestContext): Promise<IHookRunResult>;
32
+ /**
33
+ * Run post-request hooks (global - runs at end of any operation).
34
+ * Use for audit logging, metrics, cleanup.
35
+ */
36
+ runPostRequest(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<void>;
37
+ /**
38
+ * Run pre-get hooks (when item exists and is about to be returned).
39
+ * Receives the item for access control based on item state.
40
+ */
41
+ runPreGet(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<IHookRunResult>;
42
+ /**
43
+ * Run post-get hooks (after item is returned).
44
+ */
45
+ runPostGet(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<void>;
46
+ /**
47
+ * Run pre-create hooks.
48
+ */
49
+ runPreCreate(itemId: string, userId: string, context?: IRequestContext): Promise<IHookRunResult>;
50
+ /**
51
+ * Run post-create hooks.
52
+ */
53
+ runPostCreate(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<void>;
54
+ /**
55
+ * Run pre-dismiss hooks.
56
+ */
57
+ runPreDismiss(itemId: string, userId: string, context?: IRequestContext): Promise<IHookRunResult>;
58
+ /**
59
+ * Run post-dismiss hooks.
60
+ */
61
+ runPostDismiss(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<void>;
62
+ /**
63
+ * Run pre-restore hooks.
64
+ */
65
+ runPreRestore(itemId: string, userId: string, context?: IRequestContext): Promise<IHookRunResult>;
66
+ /**
67
+ * Run post-restore hooks.
68
+ */
69
+ runPostRestore(itemId: string, item: DismissibleItemDto, userId: string, context?: IRequestContext): Promise<void>;
70
+ /**
71
+ * Internal method to run pre-hooks.
72
+ */
73
+ private runPreHooks;
74
+ /**
75
+ * Internal method to run pre-hooks that receive the item (e.g., onBeforeGet).
76
+ * Unlike standard pre-hooks, these receive the item for inspection/access control.
77
+ */
78
+ private runPreHooksWithItem;
79
+ /**
80
+ * Internal method to run post-hooks.
81
+ * Post-hooks run in reverse priority order.
82
+ */
83
+ private runPostHooks;
84
+ /**
85
+ * Throw ForbiddenException if the hook result indicates the operation was blocked.
86
+ */
87
+ static throwIfBlocked(result: IHookRunResult): void;
88
+ }
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HookRunner = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const nestjs_hooks_1 = require("@dismissible/nestjs-hooks");
7
+ const nestjs_logger_1 = require("@dismissible/nestjs-logger");
8
+ /**
9
+ * Service responsible for running lifecycle hooks.
10
+ */
11
+ let HookRunner = class HookRunner {
12
+ constructor(hooks = [], logger) {
13
+ this.logger = logger;
14
+ this.sortedHooks = [...hooks].sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
15
+ }
16
+ /**
17
+ * Run pre-request hooks (global - runs at start of any operation).
18
+ * Use for authentication, rate limiting, request validation.
19
+ */
20
+ async runPreRequest(itemId, userId, context) {
21
+ return this.runPreHooks('onBeforeRequest', itemId, userId, context);
22
+ }
23
+ /**
24
+ * Run post-request hooks (global - runs at end of any operation).
25
+ * Use for audit logging, metrics, cleanup.
26
+ */
27
+ async runPostRequest(itemId, item, userId, context) {
28
+ await this.runPostHooks('onAfterRequest', itemId, item, userId, context);
29
+ }
30
+ /**
31
+ * Run pre-get hooks (when item exists and is about to be returned).
32
+ * Receives the item for access control based on item state.
33
+ */
34
+ async runPreGet(itemId, item, userId, context) {
35
+ return this.runPreHooksWithItem('onBeforeGet', itemId, item, userId, context);
36
+ }
37
+ /**
38
+ * Run post-get hooks (after item is returned).
39
+ */
40
+ async runPostGet(itemId, item, userId, context) {
41
+ await this.runPostHooks('onAfterGet', itemId, item, userId, context);
42
+ }
43
+ /**
44
+ * Run pre-create hooks.
45
+ */
46
+ async runPreCreate(itemId, userId, context) {
47
+ return this.runPreHooks('onBeforeCreate', itemId, userId, context);
48
+ }
49
+ /**
50
+ * Run post-create hooks.
51
+ */
52
+ async runPostCreate(itemId, item, userId, context) {
53
+ await this.runPostHooks('onAfterCreate', itemId, item, userId, context);
54
+ }
55
+ /**
56
+ * Run pre-dismiss hooks.
57
+ */
58
+ async runPreDismiss(itemId, userId, context) {
59
+ return this.runPreHooks('onBeforeDismiss', itemId, userId, context);
60
+ }
61
+ /**
62
+ * Run post-dismiss hooks.
63
+ */
64
+ async runPostDismiss(itemId, item, userId, context) {
65
+ await this.runPostHooks('onAfterDismiss', itemId, item, userId, context);
66
+ }
67
+ /**
68
+ * Run pre-restore hooks.
69
+ */
70
+ async runPreRestore(itemId, userId, context) {
71
+ return this.runPreHooks('onBeforeRestore', itemId, userId, context);
72
+ }
73
+ /**
74
+ * Run post-restore hooks.
75
+ */
76
+ async runPostRestore(itemId, item, userId, context) {
77
+ await this.runPostHooks('onAfterRestore', itemId, item, userId, context);
78
+ }
79
+ /**
80
+ * Internal method to run pre-hooks.
81
+ */
82
+ async runPreHooks(hookName, itemId, userId, context) {
83
+ let currentId = itemId;
84
+ let currentUserId = userId;
85
+ let currentContext = context ? { ...context } : undefined;
86
+ for (const hook of this.sortedHooks) {
87
+ const hookFn = hook[hookName];
88
+ if (hookFn) {
89
+ try {
90
+ const result = await hookFn.call(hook, currentId, currentUserId, currentContext);
91
+ if (!result.proceed) {
92
+ this.logger.debug(`Hook ${hook.constructor.name}.${hookName} blocked operation`, {
93
+ itemId: currentId,
94
+ userId: currentUserId,
95
+ reason: result.reason,
96
+ });
97
+ return {
98
+ proceed: false,
99
+ id: currentId,
100
+ userId: currentUserId,
101
+ context: currentContext,
102
+ reason: result.reason,
103
+ };
104
+ }
105
+ if (result.mutations) {
106
+ if (result.mutations.id !== undefined) {
107
+ currentId = result.mutations.id;
108
+ }
109
+ if (result.mutations.userId !== undefined) {
110
+ currentUserId = result.mutations.userId;
111
+ }
112
+ if (result.mutations.context && currentContext) {
113
+ currentContext = { ...currentContext, ...result.mutations.context };
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ this.logger.error(`Error in hook ${hook.constructor.name}.${hookName}`, error instanceof Error ? error : new Error(String(error)), {
119
+ itemId: currentId,
120
+ userId: currentUserId,
121
+ });
122
+ throw error;
123
+ }
124
+ }
125
+ }
126
+ return {
127
+ proceed: true,
128
+ id: currentId,
129
+ userId: currentUserId,
130
+ context: currentContext,
131
+ };
132
+ }
133
+ /**
134
+ * Internal method to run pre-hooks that receive the item (e.g., onBeforeGet).
135
+ * Unlike standard pre-hooks, these receive the item for inspection/access control.
136
+ */
137
+ async runPreHooksWithItem(hookName, itemId, item, userId, context) {
138
+ let currentId = itemId;
139
+ let currentUserId = userId;
140
+ let currentContext = context ? { ...context } : undefined;
141
+ for (const hook of this.sortedHooks) {
142
+ const hookFn = hook[hookName];
143
+ if (hookFn) {
144
+ try {
145
+ const result = await hookFn.call(hook, currentId, item, currentUserId, currentContext);
146
+ if (!result.proceed) {
147
+ this.logger.debug(`Hook ${hook.constructor.name}.${hookName} blocked operation`, {
148
+ itemId: currentId,
149
+ userId: currentUserId,
150
+ reason: result.reason,
151
+ });
152
+ return {
153
+ proceed: false,
154
+ id: currentId,
155
+ userId: currentUserId,
156
+ context: currentContext,
157
+ reason: result.reason,
158
+ };
159
+ }
160
+ if (result.mutations) {
161
+ if (result.mutations.id !== undefined) {
162
+ currentId = result.mutations.id;
163
+ }
164
+ if (result.mutations.userId !== undefined) {
165
+ currentUserId = result.mutations.userId;
166
+ }
167
+ if (result.mutations.context && currentContext) {
168
+ currentContext = { ...currentContext, ...result.mutations.context };
169
+ }
170
+ }
171
+ }
172
+ catch (error) {
173
+ this.logger.error(`Error in hook ${hook.constructor.name}.${hookName}`, error instanceof Error ? error : new Error(String(error)), {
174
+ itemId: currentId,
175
+ userId: currentUserId,
176
+ });
177
+ throw error;
178
+ }
179
+ }
180
+ }
181
+ return {
182
+ proceed: true,
183
+ id: currentId,
184
+ userId: currentUserId,
185
+ context: currentContext,
186
+ };
187
+ }
188
+ /**
189
+ * Internal method to run post-hooks.
190
+ * Post-hooks run in reverse priority order.
191
+ */
192
+ async runPostHooks(hookName, itemId, item, userId, context) {
193
+ const reversedHooks = [...this.sortedHooks].reverse();
194
+ for (const hook of reversedHooks) {
195
+ const hookFn = hook[hookName];
196
+ if (hookFn) {
197
+ try {
198
+ await hookFn.call(hook, itemId, item, userId, context);
199
+ }
200
+ catch (error) {
201
+ this.logger.error(`Error in hook ${hook.constructor.name}.${hookName}`, error instanceof Error ? error : new Error(String(error)), {
202
+ itemId,
203
+ userId,
204
+ });
205
+ }
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * Throw ForbiddenException if the hook result indicates the operation was blocked.
211
+ */
212
+ static throwIfBlocked(result) {
213
+ if (!result.proceed) {
214
+ throw new common_1.ForbiddenException(result.reason ?? 'Operation blocked by lifecycle hook');
215
+ }
216
+ }
217
+ };
218
+ exports.HookRunner = HookRunner;
219
+ exports.HookRunner = HookRunner = tslib_1.__decorate([
220
+ (0, common_1.Injectable)(),
221
+ tslib_1.__param(0, (0, common_1.Optional)()),
222
+ tslib_1.__param(0, (0, common_1.Inject)(nestjs_hooks_1.DISMISSIBLE_HOOKS)),
223
+ tslib_1.__param(1, (0, common_1.Inject)(nestjs_logger_1.DISMISSIBLE_LOGGER)),
224
+ tslib_1.__metadata("design:paramtypes", [Array, Object])
225
+ ], HookRunner);
226
+ //# sourceMappingURL=hook-runner.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-runner.service.js","sourceRoot":"","sources":["../../../../../libs/core/src/core/hook-runner.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};