@buunguyen3589/collections-module 1.0.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 (213) hide show
  1. package/dist/app/index.d.ts +1 -0
  2. package/dist/app/index.js +17 -0
  3. package/dist/app/usecases/command/create-collection.usecase.d.ts +16 -0
  4. package/dist/app/usecases/command/create-collection.usecase.js +66 -0
  5. package/dist/app/usecases/command/delete-collection.usecase.d.ts +13 -0
  6. package/dist/app/usecases/command/delete-collection.usecase.js +57 -0
  7. package/dist/app/usecases/command/index.d.ts +5 -0
  8. package/dist/app/usecases/command/index.js +21 -0
  9. package/dist/app/usecases/command/post-collection/index.d.ts +1 -0
  10. package/dist/app/usecases/command/post-collection/index.js +17 -0
  11. package/dist/app/usecases/command/post-collection/upsert-post-collection.usecase.d.ts +14 -0
  12. package/dist/app/usecases/command/post-collection/upsert-post-collection.usecase.js +63 -0
  13. package/dist/app/usecases/command/product-collection/add-all-products-collection.usecase.d.ts +24 -0
  14. package/dist/app/usecases/command/product-collection/add-all-products-collection.usecase.js +93 -0
  15. package/dist/app/usecases/command/product-collection/create-product-collection.usecase.d.ts +24 -0
  16. package/dist/app/usecases/command/product-collection/create-product-collection.usecase.js +94 -0
  17. package/dist/app/usecases/command/product-collection/delete-product-collection.usecase.d.ts +14 -0
  18. package/dist/app/usecases/command/product-collection/delete-product-collection.usecase.js +56 -0
  19. package/dist/app/usecases/command/product-collection/index.d.ts +3 -0
  20. package/dist/app/usecases/command/product-collection/index.js +19 -0
  21. package/dist/app/usecases/command/update-collection.usecase.d.ts +15 -0
  22. package/dist/app/usecases/command/update-collection.usecase.js +73 -0
  23. package/dist/app/usecases/index.d.ts +2 -0
  24. package/dist/app/usecases/index.js +18 -0
  25. package/dist/app/usecases/query/get-detail-collection.usecase.d.ts +36 -0
  26. package/dist/app/usecases/query/get-detail-collection.usecase.js +216 -0
  27. package/dist/app/usecases/query/get-list-collection.usecase.d.ts +23 -0
  28. package/dist/app/usecases/query/get-list-collection.usecase.js +96 -0
  29. package/dist/app/usecases/query/get-products-by-collections-internal.usecase.d.ts +19 -0
  30. package/dist/app/usecases/query/get-products-by-collections-internal.usecase.js +65 -0
  31. package/dist/app/usecases/query/get-products-by-collections.usecase.d.ts +44 -0
  32. package/dist/app/usecases/query/get-products-by-collections.usecase.js +130 -0
  33. package/dist/app/usecases/query/index.d.ts +4 -0
  34. package/dist/app/usecases/query/index.js +20 -0
  35. package/dist/collection.module.d.ts +2 -0
  36. package/dist/collection.module.js +62 -0
  37. package/dist/domain/aggregates/enums/collection.enum.d.ts +5 -0
  38. package/dist/domain/aggregates/enums/collection.enum.js +9 -0
  39. package/dist/domain/aggregates/enums/index.d.ts +1 -0
  40. package/dist/domain/aggregates/enums/index.js +17 -0
  41. package/dist/domain/aggregates/index.d.ts +2 -0
  42. package/dist/domain/aggregates/index.js +18 -0
  43. package/dist/domain/aggregates/types/collection.type.d.ts +14 -0
  44. package/dist/domain/aggregates/types/collection.type.js +2 -0
  45. package/dist/domain/aggregates/types/index.d.ts +3 -0
  46. package/dist/domain/aggregates/types/index.js +19 -0
  47. package/dist/domain/aggregates/types/post-collection.type.d.ts +12 -0
  48. package/dist/domain/aggregates/types/post-collection.type.js +2 -0
  49. package/dist/domain/aggregates/types/product-collection.type.d.ts +11 -0
  50. package/dist/domain/aggregates/types/product-collection.type.js +2 -0
  51. package/dist/domain/builders/collection.builder.d.ts +8 -0
  52. package/dist/domain/builders/collection.builder.js +38 -0
  53. package/dist/domain/builders/index.d.ts +3 -0
  54. package/dist/domain/builders/index.js +19 -0
  55. package/dist/domain/builders/post-collection.builder.d.ts +8 -0
  56. package/dist/domain/builders/post-collection.builder.js +38 -0
  57. package/dist/domain/builders/product-collection.builder.d.ts +8 -0
  58. package/dist/domain/builders/product-collection.builder.js +38 -0
  59. package/dist/domain/consts/event-collection.name.const.d.ts +5 -0
  60. package/dist/domain/consts/event-collection.name.const.js +8 -0
  61. package/dist/domain/consts/event-post-collection.name.const.d.ts +6 -0
  62. package/dist/domain/consts/event-post-collection.name.const.js +9 -0
  63. package/dist/domain/consts/event-product-collection.name.const.d.ts +5 -0
  64. package/dist/domain/consts/event-product-collection.name.const.js +8 -0
  65. package/dist/domain/consts/index.d.ts +3 -0
  66. package/dist/domain/consts/index.js +19 -0
  67. package/dist/domain/dtos/collection.dto.d.ts +4 -0
  68. package/dist/domain/dtos/collection.dto.js +2 -0
  69. package/dist/domain/dtos/index.d.ts +3 -0
  70. package/dist/domain/dtos/index.js +19 -0
  71. package/dist/domain/dtos/post-collection.dto.d.ts +4 -0
  72. package/dist/domain/dtos/post-collection.dto.js +2 -0
  73. package/dist/domain/dtos/product-collection.dto.d.ts +4 -0
  74. package/dist/domain/dtos/product-collection.dto.js +2 -0
  75. package/dist/domain/entities/collection.entity.d.ts +40 -0
  76. package/dist/domain/entities/collection.entity.js +87 -0
  77. package/dist/domain/entities/index.d.ts +3 -0
  78. package/dist/domain/entities/index.js +19 -0
  79. package/dist/domain/entities/post-collection.entity.d.ts +33 -0
  80. package/dist/domain/entities/post-collection.entity.js +70 -0
  81. package/dist/domain/entities/product-collection.entity.d.ts +30 -0
  82. package/dist/domain/entities/product-collection.entity.js +55 -0
  83. package/dist/domain/index.d.ts +6 -0
  84. package/dist/domain/index.js +22 -0
  85. package/dist/domain/mappers/collection.mapper.d.ts +11 -0
  86. package/dist/domain/mappers/collection.mapper.js +56 -0
  87. package/dist/domain/mappers/index.d.ts +3 -0
  88. package/dist/domain/mappers/index.js +19 -0
  89. package/dist/domain/mappers/post-collection.mapper.d.ts +11 -0
  90. package/dist/domain/mappers/post-collection.mapper.js +50 -0
  91. package/dist/domain/mappers/product-collection.mapper.d.ts +11 -0
  92. package/dist/domain/mappers/product-collection.mapper.js +48 -0
  93. package/dist/domain/repositories/collection.repository.d.ts +21 -0
  94. package/dist/domain/repositories/collection.repository.js +93 -0
  95. package/dist/domain/repositories/index.d.ts +3 -0
  96. package/dist/domain/repositories/index.js +19 -0
  97. package/dist/domain/repositories/post-collection.repository.d.ts +21 -0
  98. package/dist/domain/repositories/post-collection.repository.js +107 -0
  99. package/dist/domain/repositories/product-collection.repository.d.ts +21 -0
  100. package/dist/domain/repositories/product-collection.repository.js +98 -0
  101. package/dist/index.d.ts +5 -0
  102. package/dist/index.js +23 -0
  103. package/dist/infra/daos/collection.dao.d.ts +7 -0
  104. package/dist/infra/daos/collection.dao.js +36 -0
  105. package/dist/infra/daos/index.d.ts +3 -0
  106. package/dist/infra/daos/index.js +19 -0
  107. package/dist/infra/daos/post-collection.dao.d.ts +10 -0
  108. package/dist/infra/daos/post-collection.dao.js +70 -0
  109. package/dist/infra/daos/product-collection.dao.d.ts +9 -0
  110. package/dist/infra/daos/product-collection.dao.js +69 -0
  111. package/dist/infra/event-handlers/collection.event-emitter.d.ts +6 -0
  112. package/dist/infra/event-handlers/collection.event-emitter.js +27 -0
  113. package/dist/infra/event-handlers/index.d.ts +3 -0
  114. package/dist/infra/event-handlers/index.js +19 -0
  115. package/dist/infra/event-handlers/post-collection.event-emitter.d.ts +6 -0
  116. package/dist/infra/event-handlers/post-collection.event-emitter.js +27 -0
  117. package/dist/infra/event-handlers/product-collection.event-emitter.d.ts +6 -0
  118. package/dist/infra/event-handlers/product-collection.event-emitter.js +27 -0
  119. package/dist/infra/filters/collection.filter.d.ts +25 -0
  120. package/dist/infra/filters/collection.filter.js +84 -0
  121. package/dist/infra/filters/index.d.ts +3 -0
  122. package/dist/infra/filters/index.js +19 -0
  123. package/dist/infra/filters/post-collection.filter.d.ts +16 -0
  124. package/dist/infra/filters/post-collection.filter.js +54 -0
  125. package/dist/infra/filters/product-collection.filter.d.ts +13 -0
  126. package/dist/infra/filters/product-collection.filter.js +44 -0
  127. package/dist/infra/index.d.ts +6 -0
  128. package/dist/infra/index.js +22 -0
  129. package/dist/infra/mappers/collection.mapper.d.ts +8 -0
  130. package/dist/infra/mappers/collection.mapper.js +31 -0
  131. package/dist/infra/mappers/index.d.ts +3 -0
  132. package/dist/infra/mappers/index.js +19 -0
  133. package/dist/infra/mappers/post-collection.mapper.d.ts +8 -0
  134. package/dist/infra/mappers/post-collection.mapper.js +25 -0
  135. package/dist/infra/mappers/product-collection.mapper.d.ts +8 -0
  136. package/dist/infra/mappers/product-collection.mapper.js +24 -0
  137. package/dist/infra/query-configs/collection.query-config.d.ts +3 -0
  138. package/dist/infra/query-configs/collection.query-config.js +46 -0
  139. package/dist/infra/query-configs/index.d.ts +3 -0
  140. package/dist/infra/query-configs/index.js +19 -0
  141. package/dist/infra/query-configs/post-collection.query-config.d.ts +3 -0
  142. package/dist/infra/query-configs/post-collection.query-config.js +31 -0
  143. package/dist/infra/query-configs/product-collection.query-config.d.ts +3 -0
  144. package/dist/infra/query-configs/product-collection.query-config.js +26 -0
  145. package/dist/infra/records/collection.record.d.ts +11 -0
  146. package/dist/infra/records/collection.record.js +2 -0
  147. package/dist/infra/records/index.d.ts +3 -0
  148. package/dist/infra/records/index.js +19 -0
  149. package/dist/infra/records/post-collection.record.d.ts +7 -0
  150. package/dist/infra/records/post-collection.record.js +2 -0
  151. package/dist/infra/records/product-collection.record.d.ts +7 -0
  152. package/dist/infra/records/product-collection.record.js +2 -0
  153. package/dist/presentation/controllers/index.d.ts +2 -0
  154. package/dist/presentation/controllers/index.js +18 -0
  155. package/dist/presentation/controllers/internals/index.d.ts +1 -0
  156. package/dist/presentation/controllers/internals/index.js +17 -0
  157. package/dist/presentation/controllers/internals/product-collection.internal.rest.d.ts +8 -0
  158. package/dist/presentation/controllers/internals/product-collection.internal.rest.js +45 -0
  159. package/dist/presentation/controllers/storefront/collection.storefront.rest.d.ts +26 -0
  160. package/dist/presentation/controllers/storefront/collection.storefront.rest.js +155 -0
  161. package/dist/presentation/controllers/storefront/index.d.ts +3 -0
  162. package/dist/presentation/controllers/storefront/index.js +19 -0
  163. package/dist/presentation/controllers/storefront/post-collection.storefront.d.ts +7 -0
  164. package/dist/presentation/controllers/storefront/post-collection.storefront.js +37 -0
  165. package/dist/presentation/controllers/storefront/product-collection.storefront.rest.d.ts +5 -0
  166. package/dist/presentation/controllers/storefront/product-collection.storefront.rest.js +50 -0
  167. package/dist/presentation/index.d.ts +1 -0
  168. package/dist/presentation/index.js +17 -0
  169. package/dist/shared/configs/index.d.ts +1 -0
  170. package/dist/shared/configs/index.js +17 -0
  171. package/dist/shared/configs/pagination.config.d.ts +4 -0
  172. package/dist/shared/configs/pagination.config.js +7 -0
  173. package/dist/shared/constants/collection-inject-tokens.const.d.ts +56 -0
  174. package/dist/shared/constants/collection-inject-tokens.const.js +61 -0
  175. package/dist/shared/constants/collection-table-names.const.d.ts +12 -0
  176. package/dist/shared/constants/collection-table-names.const.js +16 -0
  177. package/dist/shared/constants/component-inject-tokens.const.d.ts +7 -0
  178. package/dist/shared/constants/component-inject-tokens.const.js +11 -0
  179. package/dist/shared/constants/error-codes.const.d.ts +6 -0
  180. package/dist/shared/constants/error-codes.const.js +10 -0
  181. package/dist/shared/constants/index.d.ts +4 -0
  182. package/dist/shared/constants/index.js +21 -0
  183. package/dist/shared/core/filter.d.ts +80 -0
  184. package/dist/shared/core/filter.js +554 -0
  185. package/dist/shared/core/index.d.ts +1 -0
  186. package/dist/shared/core/index.js +17 -0
  187. package/dist/shared/index.d.ts +5 -0
  188. package/dist/shared/index.js +21 -0
  189. package/dist/shared/interfaces/ambassador-dao.interface.d.ts +5 -0
  190. package/dist/shared/interfaces/ambassador-dao.interface.js +2 -0
  191. package/dist/shared/interfaces/ambassador-usecase.interface.d.ts +16 -0
  192. package/dist/shared/interfaces/ambassador-usecase.interface.js +2 -0
  193. package/dist/shared/interfaces/campaign-service.interface.d.ts +3 -0
  194. package/dist/shared/interfaces/campaign-service.interface.js +4 -0
  195. package/dist/shared/interfaces/index.d.ts +6 -0
  196. package/dist/shared/interfaces/index.js +22 -0
  197. package/dist/shared/interfaces/post-product-dao.interface.d.ts +8 -0
  198. package/dist/shared/interfaces/post-product-dao.interface.js +2 -0
  199. package/dist/shared/interfaces/product-service.interface.d.ts +6 -0
  200. package/dist/shared/interfaces/product-service.interface.js +2 -0
  201. package/dist/shared/interfaces/ugc-management-service.interface.d.ts +11 -0
  202. package/dist/shared/interfaces/ugc-management-service.interface.js +2 -0
  203. package/dist/shared/types/common.type.d.ts +4 -0
  204. package/dist/shared/types/common.type.js +2 -0
  205. package/dist/shared/types/discount.enum.d.ts +4 -0
  206. package/dist/shared/types/discount.enum.js +8 -0
  207. package/dist/shared/types/index.d.ts +4 -0
  208. package/dist/shared/types/index.js +20 -0
  209. package/dist/shared/types/shopify.type.d.ts +28 -0
  210. package/dist/shared/types/shopify.type.js +2 -0
  211. package/dist/shared/types/ugc.type.d.ts +41 -0
  212. package/dist/shared/types/ugc.type.js +2 -0
  213. package/package.json +56 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GetProductsByCollectionUseCase = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../../shared");
19
+ const infra_1 = require("../../../infra");
20
+ const domain_1 = require("../../../domain");
21
+ let GetProductsByCollectionUseCase = class GetProductsByCollectionUseCase extends aqua_ddd_1.UseCase {
22
+ constructor(collectionDao, productCollectionDao, postProductDao, productService, getAbsByIdUsecase) {
23
+ super();
24
+ this.collectionDao = collectionDao;
25
+ this.productCollectionDao = productCollectionDao;
26
+ this.postProductDao = postProductDao;
27
+ this.productService = productService;
28
+ this.getAbsByIdUsecase = getAbsByIdUsecase;
29
+ this.processing = async (input) => {
30
+ try {
31
+ const { filter, limit = 50, offset = 0, ambassadorId } = input;
32
+ const { collectionId: filterCollectionId, postId: filterPostId, ...restFilter } = filter || {};
33
+ const emptyResponse = {
34
+ items: [],
35
+ totalCount: 0,
36
+ };
37
+ const ambassador = await this.getAbsByIdUsecase.exec({ id: ambassadorId });
38
+ // GET ALL PRODUCTS IN COLLECTION BY AMBASSADOR
39
+ let filterProdCollection = {
40
+ ambassadorId: { $eq: ambassadorId },
41
+ };
42
+ // Filter by any collection {$in: []}
43
+ if (filterCollectionId) {
44
+ const filterGetCollections = { ...filterProdCollection, id: filterCollectionId };
45
+ filterProdCollection = { ...filterProdCollection, collectionId: filterCollectionId };
46
+ // Find collections
47
+ const collections = await this.collectionDao.find({
48
+ filter: filterGetCollections,
49
+ });
50
+ const existedAll = collections.find((col) => col.collectionType === domain_1.CollectionTypeEnum.ALL);
51
+ if (existedAll) {
52
+ filterProdCollection = { ambassadorId: { $eq: ambassadorId } };
53
+ }
54
+ }
55
+ let filterProductIds = [];
56
+ if (filterPostId) {
57
+ const postProducts = await this.postProductDao.find({
58
+ filter: {
59
+ postId: { ...filterPostId },
60
+ },
61
+ });
62
+ filterProductIds = postProducts
63
+ .map((item) => item.productId)
64
+ .filter((id) => !!id);
65
+ }
66
+ const collectionProducts = await this.productCollectionDao.find({
67
+ filter: filterProdCollection,
68
+ });
69
+ const productIds = collectionProducts.flatMap((p) => typeof p.productId === 'string' ? [p.productId] : []);
70
+ if (productIds.length == 0)
71
+ return emptyResponse;
72
+ const { items, totalCount } = await this.productService.getProducts({
73
+ filter: {
74
+ ...restFilter,
75
+ id: { $nin: filterProductIds },
76
+ },
77
+ limit,
78
+ offset,
79
+ }, productIds);
80
+ const discountValue = ambassador.ambassadorDiscountValue;
81
+ const discountType = ambassador.ambassadorDiscountValueType;
82
+ const collectionProductMap = new Map(collectionProducts.map((p) => [p.productId, p]));
83
+ const products = items.map((product) => {
84
+ const maxValue = Number(product.productMaxPrice) ?? 0;
85
+ const discount = discountValue ?? 0;
86
+ let minValue = Number(product.productMinPrice) ?? 0;
87
+ if (discountType === shared_1.DiscountValueType.PERCENTAGE) {
88
+ minValue = maxValue - (maxValue * discount) / 100;
89
+ }
90
+ else {
91
+ minValue = maxValue - discount;
92
+ }
93
+ if (minValue < 0)
94
+ minValue = 0;
95
+ const collectionProduct = collectionProductMap.get(product.id);
96
+ return {
97
+ productId: product.id,
98
+ collectionName: collectionProduct?.collectionName ?? '',
99
+ ...product,
100
+ productMinPrice: minValue,
101
+ productMaxPrice: maxValue,
102
+ id: collectionProduct?.id ?? '',
103
+ };
104
+ });
105
+ return {
106
+ totalCount: Number(totalCount),
107
+ items: products,
108
+ };
109
+ }
110
+ catch (error) {
111
+ throw error;
112
+ }
113
+ };
114
+ this.setMethods(this.processing);
115
+ }
116
+ };
117
+ GetProductsByCollectionUseCase = __decorate([
118
+ (0, common_1.Provider)({
119
+ token: shared_1.COLLECTION_INJECT_TOKENS.USECASE.GET_PRODUCTS_BY_COLLECTIONS,
120
+ scope: common_1.Lifecycle.Transient,
121
+ }),
122
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.DAO.COLLECTION)),
123
+ __param(1, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.DAO.PRODUCT_COLLECTION)),
124
+ __param(2, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.DAO.POST_PRODUCT)),
125
+ __param(3, (0, common_1.Inject)(shared_1.COMPONENT_INJECT_TOKENS.SERVICE.PRODUCT_SERVICE)),
126
+ __param(4, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.USECASE.GET_AMBASSADOR_BY_ID)),
127
+ __metadata("design:paramtypes", [infra_1.CollectionDao,
128
+ infra_1.ProductCollectionDao, Object, Object, Object])
129
+ ], GetProductsByCollectionUseCase);
130
+ exports.GetProductsByCollectionUseCase = GetProductsByCollectionUseCase;
@@ -0,0 +1,4 @@
1
+ export * from './get-list-collection.usecase';
2
+ export * from './get-detail-collection.usecase';
3
+ export * from './get-products-by-collections.usecase';
4
+ export * from './get-products-by-collections-internal.usecase';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./get-list-collection.usecase"), exports);
18
+ __exportStar(require("./get-detail-collection.usecase"), exports);
19
+ __exportStar(require("./get-products-by-collections.usecase"), exports);
20
+ __exportStar(require("./get-products-by-collections-internal.usecase"), exports);
@@ -0,0 +1,2 @@
1
+ export declare class CollectionModule {
2
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CollectionModule = void 0;
10
+ const common_1 = require("@heronjs/common");
11
+ const app_1 = require("./app");
12
+ const domain_1 = require("./domain");
13
+ const infra_1 = require("./infra");
14
+ const presentation_1 = require("./presentation");
15
+ // Note: External services (ProductService, UgcManagementService, etc.) should be provided
16
+ // by the consuming application via their respective inject tokens
17
+ let CollectionModule = class CollectionModule {
18
+ };
19
+ CollectionModule = __decorate([
20
+ (0, common_1.Module)({
21
+ providers: [
22
+ // Collection
23
+ domain_1.CollectionBuilder,
24
+ infra_1.CollectionDao,
25
+ domain_1.CollectionRepository,
26
+ infra_1.CollectionRecordMapper,
27
+ infra_1.CollectionDomainEventEmitter,
28
+ domain_1.CollectionMapper,
29
+ // Usecase
30
+ app_1.CollectionCreateUseCase,
31
+ app_1.CollectionUpdateUseCase,
32
+ app_1.CollectionDeleteUsecase,
33
+ app_1.CollectionListUseCase,
34
+ app_1.CollectionDetailUseCase,
35
+ // Product Collection
36
+ domain_1.ProductCollectionBuilder,
37
+ infra_1.ProductCollectionDao,
38
+ domain_1.ProductCollectionRepository,
39
+ infra_1.ProductCollectionRecordMapper,
40
+ infra_1.ProductCollectionDomainEventEmitter,
41
+ domain_1.ProductCollectionMapper,
42
+ // Usecase
43
+ app_1.ProductCollectionCreateUseCase,
44
+ app_1.ProductCollectionDeleteUsecase,
45
+ // ProductCollectionAddAllUseCase,
46
+ app_1.GetProductsByCollectionUseCase,
47
+ app_1.GetProductsByCollectionInternalUseCase,
48
+ // Post Collection
49
+ domain_1.PostCollectionBuilder,
50
+ infra_1.PostCollectionDao,
51
+ domain_1.PostCollectionRepository,
52
+ infra_1.PostCollectionRecordMapper,
53
+ infra_1.PostCollectionDomainEventEmitter,
54
+ domain_1.PostCollectionMapper,
55
+ //Usecase
56
+ app_1.UpsertPostCollectionUseCase,
57
+ ],
58
+ controllers: [presentation_1.CollectionStorefrontRest, presentation_1.ProductCollectionStorefrontRest, presentation_1.PostCollectionStorefrontRest],
59
+ services: [],
60
+ })
61
+ ], CollectionModule);
62
+ exports.CollectionModule = CollectionModule;
@@ -0,0 +1,5 @@
1
+ export declare enum CollectionTypeEnum {
2
+ ALL = "All",
3
+ POSTS = "Posts",
4
+ OTHERS = "Others"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollectionTypeEnum = void 0;
4
+ var CollectionTypeEnum;
5
+ (function (CollectionTypeEnum) {
6
+ CollectionTypeEnum["ALL"] = "All";
7
+ CollectionTypeEnum["POSTS"] = "Posts";
8
+ CollectionTypeEnum["OTHERS"] = "Others";
9
+ })(CollectionTypeEnum = exports.CollectionTypeEnum || (exports.CollectionTypeEnum = {}));
@@ -0,0 +1 @@
1
+ export * from './collection.enum';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.enum"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './enums';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./enums"), exports);
@@ -0,0 +1,14 @@
1
+ import { CollectionTypeEnum } from '../enums';
2
+ export type CreateCollectionInput = {
3
+ ambassadorId: string;
4
+ collectionName: string;
5
+ collectionType?: CollectionTypeEnum;
6
+ description?: string;
7
+ isFavorite: boolean;
8
+ };
9
+ export type UpdateCollectionInput = Partial<CreateCollectionInput> & {
10
+ id: string;
11
+ };
12
+ export type DeleteCollectionInput = {
13
+ id: string;
14
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from './collection.type';
2
+ export * from './product-collection.type';
3
+ export * from './post-collection.type';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.type"), exports);
18
+ __exportStar(require("./product-collection.type"), exports);
19
+ __exportStar(require("./post-collection.type"), exports);
@@ -0,0 +1,12 @@
1
+ export type CreatePostCollectionInput = {
2
+ ambassadorId: string;
3
+ collectionId: string;
4
+ postId: string;
5
+ hidden: boolean;
6
+ };
7
+ export type UpdatePostCollectionInput = Partial<CreatePostCollectionInput> & {
8
+ id?: string;
9
+ };
10
+ export type DeletePostCollectionInput = {
11
+ id: string;
12
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ export type CreateProductCollectionInput = {
2
+ productId: string;
3
+ collectionId: string;
4
+ ambassadorId: string;
5
+ };
6
+ export type UpdateProductCollectionInput = Partial<CreateProductCollectionInput> & {
7
+ id: string;
8
+ };
9
+ export type DeleteProductCollectionInput = {
10
+ id: string;
11
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { AggregateRootBuilder, AggregateRootBuilderPayload, IAggregateRootBuilder, IDomainEventEmitter } from '@cbidigital/aqua-ddd';
2
+ import { ICollection } from '../entities';
3
+ export type CollectionBuilderBuildPayload = AggregateRootBuilderPayload<ICollection>;
4
+ export type ICollectionBuilder = IAggregateRootBuilder<ICollection>;
5
+ export declare class CollectionBuilder extends AggregateRootBuilder<ICollection> implements ICollectionBuilder {
6
+ constructor(eventEmitter: IDomainEventEmitter<ICollection>);
7
+ build({ id, props, externalProps }?: CollectionBuilderBuildPayload): Promise<ICollection>;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CollectionBuilder = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ const entities_1 = require("../entities");
20
+ let CollectionBuilder = class CollectionBuilder extends aqua_ddd_1.AggregateRootBuilder {
21
+ constructor(eventEmitter) {
22
+ super(eventEmitter);
23
+ }
24
+ async build({ id, props, externalProps } = {}) {
25
+ return new entities_1.Collection({
26
+ id,
27
+ props,
28
+ eventEmitter: this.eventEmitter,
29
+ externalProps,
30
+ });
31
+ }
32
+ };
33
+ CollectionBuilder = __decorate([
34
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.BUILDER.COLLECTION, scope: common_1.Lifecycle.Singleton }),
35
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.EVENT_EMITTER.COLLECTION)),
36
+ __metadata("design:paramtypes", [Object])
37
+ ], CollectionBuilder);
38
+ exports.CollectionBuilder = CollectionBuilder;
@@ -0,0 +1,3 @@
1
+ export * from './collection.builder';
2
+ export * from './product-collection.builder';
3
+ export * from './post-collection.builder';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.builder"), exports);
18
+ __exportStar(require("./product-collection.builder"), exports);
19
+ __exportStar(require("./post-collection.builder"), exports);
@@ -0,0 +1,8 @@
1
+ import { AggregateRootBuilder, AggregateRootBuilderPayload, IAggregateRootBuilder, IDomainEventEmitter } from '@cbidigital/aqua-ddd';
2
+ import { IPostCollection } from '../entities';
3
+ export type PostCollectionBuilderBuildPayload = AggregateRootBuilderPayload<IPostCollection>;
4
+ export type IPostCollectionBuilder = IAggregateRootBuilder<IPostCollection>;
5
+ export declare class PostCollectionBuilder extends AggregateRootBuilder<IPostCollection> implements IPostCollectionBuilder {
6
+ constructor(eventEmitter: IDomainEventEmitter<IPostCollection>);
7
+ build({ id, props, externalProps, }?: PostCollectionBuilderBuildPayload): Promise<IPostCollection>;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PostCollectionBuilder = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ const entities_1 = require("../entities");
20
+ let PostCollectionBuilder = class PostCollectionBuilder extends aqua_ddd_1.AggregateRootBuilder {
21
+ constructor(eventEmitter) {
22
+ super(eventEmitter);
23
+ }
24
+ async build({ id, props, externalProps, } = {}) {
25
+ return new entities_1.PostCollection({
26
+ id,
27
+ props,
28
+ eventEmitter: this.eventEmitter,
29
+ externalProps,
30
+ });
31
+ }
32
+ };
33
+ PostCollectionBuilder = __decorate([
34
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.BUILDER.POST_COLLECTION, scope: common_1.Lifecycle.Singleton }),
35
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.EVENT_EMITTER.POST_COLLECTION)),
36
+ __metadata("design:paramtypes", [Object])
37
+ ], PostCollectionBuilder);
38
+ exports.PostCollectionBuilder = PostCollectionBuilder;
@@ -0,0 +1,8 @@
1
+ import { AggregateRootBuilder, AggregateRootBuilderPayload, IAggregateRootBuilder, IDomainEventEmitter } from '@cbidigital/aqua-ddd';
2
+ import { IProductCollection } from '../entities';
3
+ export type ProductCollectionBuilderBuildPayload = AggregateRootBuilderPayload<IProductCollection>;
4
+ export type IProductCollectionBuilder = IAggregateRootBuilder<IProductCollection>;
5
+ export declare class ProductCollectionBuilder extends AggregateRootBuilder<IProductCollection> implements IProductCollectionBuilder {
6
+ constructor(eventEmitter: IDomainEventEmitter<IProductCollection>);
7
+ build({ id, props, externalProps, }?: ProductCollectionBuilderBuildPayload): Promise<IProductCollection>;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ProductCollectionBuilder = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ const entities_1 = require("../entities");
20
+ let ProductCollectionBuilder = class ProductCollectionBuilder extends aqua_ddd_1.AggregateRootBuilder {
21
+ constructor(eventEmitter) {
22
+ super(eventEmitter);
23
+ }
24
+ async build({ id, props, externalProps, } = {}) {
25
+ return new entities_1.ProductCollection({
26
+ id,
27
+ props,
28
+ eventEmitter: this.eventEmitter,
29
+ externalProps,
30
+ });
31
+ }
32
+ };
33
+ ProductCollectionBuilder = __decorate([
34
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.BUILDER.PRODUCT_COLLECTION, scope: common_1.Lifecycle.Singleton }),
35
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.EVENT_EMITTER.PRODUCT_COLLECTION)),
36
+ __metadata("design:paramtypes", [Object])
37
+ ], ProductCollectionBuilder);
38
+ exports.ProductCollectionBuilder = ProductCollectionBuilder;
@@ -0,0 +1,5 @@
1
+ export declare const EVENT_COLLECTION_NAMES: {
2
+ CREATE: string;
3
+ UPDATE: string;
4
+ DELETE: string;
5
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVENT_COLLECTION_NAMES = void 0;
4
+ exports.EVENT_COLLECTION_NAMES = {
5
+ CREATE: 'collection_created',
6
+ UPDATE: 'collection_updated',
7
+ DELETE: 'collection_deleted',
8
+ };
@@ -0,0 +1,6 @@
1
+ export declare const EVENT_POST_COLLECTION_NAMES: {
2
+ CREATE: string;
3
+ UPDATE: string;
4
+ DELETE: string;
5
+ UPSERT: string;
6
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVENT_POST_COLLECTION_NAMES = void 0;
4
+ exports.EVENT_POST_COLLECTION_NAMES = {
5
+ CREATE: 'post_collection_created',
6
+ UPDATE: 'post_collection_updated',
7
+ DELETE: 'post_collection_deleted',
8
+ UPSERT: 'post_collection_upsert',
9
+ };
@@ -0,0 +1,5 @@
1
+ export declare const EVENT_PRODUCT_COLLECTION_NAMES: {
2
+ CREATE: string;
3
+ UPDATE: string;
4
+ DELETE: string;
5
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVENT_PRODUCT_COLLECTION_NAMES = void 0;
4
+ exports.EVENT_PRODUCT_COLLECTION_NAMES = {
5
+ CREATE: 'product_collection_created',
6
+ UPDATE: 'product_collection_updated',
7
+ DELETE: 'product_collection_deleted',
8
+ };
@@ -0,0 +1,3 @@
1
+ export * from './event-collection.name.const';
2
+ export * from './event-product-collection.name.const';
3
+ export * from './event-post-collection.name.const';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./event-collection.name.const"), exports);
18
+ __exportStar(require("./event-product-collection.name.const"), exports);
19
+ __exportStar(require("./event-post-collection.name.const"), exports);
@@ -0,0 +1,4 @@
1
+ import { CollectionProps } from '../entities';
2
+ export type CollectionDto = CollectionProps & {
3
+ id: string;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from './collection.dto';
2
+ export * from './product-collection.dto';
3
+ export * from './post-collection.dto';