@fyul/embed-sdk 1.2.1

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 (248) hide show
  1. package/README.md +198 -0
  2. package/dist/cjs/helpers/messageLogger.d.ts +20 -0
  3. package/dist/cjs/helpers/messageLogger.js +73 -0
  4. package/dist/cjs/helpers/responseHandler.d.ts +6 -0
  5. package/dist/cjs/helpers/responseHandler.js +28 -0
  6. package/dist/cjs/helpers/typeHelper.types.d.ts +10 -0
  7. package/dist/cjs/helpers/typeHelper.types.js +2 -0
  8. package/dist/cjs/index.d.ts +44 -0
  9. package/dist/cjs/index.js +157 -0
  10. package/dist/cjs/modules/baseModule.d.ts +7 -0
  11. package/dist/cjs/modules/baseModule.js +10 -0
  12. package/dist/cjs/modules/baseModuleService.d.ts +10 -0
  13. package/dist/cjs/modules/baseModuleService.js +11 -0
  14. package/dist/cjs/modules/catalog/catalogModule.d.ts +9 -0
  15. package/dist/cjs/modules/catalog/catalogModule.js +26 -0
  16. package/dist/cjs/modules/catalog/catalogService.d.ts +7 -0
  17. package/dist/cjs/modules/catalog/catalogService.js +23 -0
  18. package/dist/cjs/modules/catalog/events.d.ts +26 -0
  19. package/dist/cjs/modules/catalog/events.js +23 -0
  20. package/dist/cjs/modules/catalog/helpers/variantUtils.d.ts +7 -0
  21. package/dist/cjs/modules/catalog/helpers/variantUtils.js +38 -0
  22. package/dist/cjs/modules/catalog/types/data.types.d.ts +87 -0
  23. package/dist/cjs/modules/catalog/types/data.types.js +2 -0
  24. package/dist/cjs/modules/catalog/types/event/actionEvent.types.d.ts +7 -0
  25. package/dist/cjs/modules/catalog/types/event/actionEvent.types.js +2 -0
  26. package/dist/cjs/modules/catalog/types/event/actionEventPayload.types.d.ts +11 -0
  27. package/dist/cjs/modules/catalog/types/event/actionEventPayload.types.js +2 -0
  28. package/dist/cjs/modules/catalog/types/event/resultEvent.types.d.ts +7 -0
  29. package/dist/cjs/modules/catalog/types/event/resultEvent.types.js +2 -0
  30. package/dist/cjs/modules/catalog/types/event/resultEventPayload.types.d.ts +14 -0
  31. package/dist/cjs/modules/catalog/types/event/resultEventPayload.types.js +2 -0
  32. package/dist/cjs/modules/catalog/types/index.d.ts +7 -0
  33. package/dist/cjs/modules/catalog/types/index.js +26 -0
  34. package/dist/cjs/modules/catalog/types/moduleConfig.types.d.ts +9 -0
  35. package/dist/cjs/modules/catalog/types/moduleConfig.types.js +2 -0
  36. package/dist/cjs/modules/eventTypes.d.ts +9 -0
  37. package/dist/cjs/modules/eventTypes.js +20 -0
  38. package/dist/cjs/modules/events.d.ts +44 -0
  39. package/dist/cjs/modules/events.js +63 -0
  40. package/dist/cjs/modules/mockup-generation/events.d.ts +14 -0
  41. package/dist/cjs/modules/mockup-generation/events.js +17 -0
  42. package/dist/cjs/modules/mockup-generation/mockupGenerationModule.d.ts +7 -0
  43. package/dist/cjs/modules/mockup-generation/mockupGenerationModule.js +13 -0
  44. package/dist/cjs/modules/mockup-generation/mockupService.d.ts +6 -0
  45. package/dist/cjs/modules/mockup-generation/mockupService.js +15 -0
  46. package/dist/cjs/modules/mockup-generation/types/data.types.d.ts +31 -0
  47. package/dist/cjs/modules/mockup-generation/types/data.types.js +2 -0
  48. package/dist/cjs/modules/mockup-generation/types/event/actionEvent.types.d.ts +5 -0
  49. package/dist/cjs/modules/mockup-generation/types/event/actionEvent.types.js +2 -0
  50. package/dist/cjs/modules/mockup-generation/types/event/actionEventPayload.types.d.ts +11 -0
  51. package/dist/cjs/modules/mockup-generation/types/event/actionEventPayload.types.js +2 -0
  52. package/dist/cjs/modules/mockup-generation/types/event/resultEvent.types.d.ts +5 -0
  53. package/dist/cjs/modules/mockup-generation/types/event/resultEvent.types.js +2 -0
  54. package/dist/cjs/modules/mockup-generation/types/event/resultEventPayload.types.d.ts +5 -0
  55. package/dist/cjs/modules/mockup-generation/types/event/resultEventPayload.types.js +2 -0
  56. package/dist/cjs/modules/mockup-generation/types/index.d.ts +7 -0
  57. package/dist/cjs/modules/mockup-generation/types/index.js +27 -0
  58. package/dist/cjs/modules/mockup-generation/types/moduleConfig.types.d.ts +2 -0
  59. package/dist/cjs/modules/mockup-generation/types/moduleConfig.types.js +2 -0
  60. package/dist/cjs/modules/modules.d.ts +16 -0
  61. package/dist/cjs/modules/modules.js +19 -0
  62. package/dist/cjs/modules/product-publish/events.d.ts +14 -0
  63. package/dist/cjs/modules/product-publish/events.js +17 -0
  64. package/dist/cjs/modules/product-publish/productPublishModule.d.ts +7 -0
  65. package/dist/cjs/modules/product-publish/productPublishModule.js +13 -0
  66. package/dist/cjs/modules/product-publish/productPublishService.d.ts +6 -0
  67. package/dist/cjs/modules/product-publish/productPublishService.js +15 -0
  68. package/dist/cjs/modules/product-publish/types/event/actionEvent.types.d.ts +5 -0
  69. package/dist/cjs/modules/product-publish/types/event/actionEvent.types.js +2 -0
  70. package/dist/cjs/modules/product-publish/types/event/actionEventPayload.types.d.ts +8 -0
  71. package/dist/cjs/modules/product-publish/types/event/actionEventPayload.types.js +2 -0
  72. package/dist/cjs/modules/product-publish/types/event/resultEvent.types.d.ts +5 -0
  73. package/dist/cjs/modules/product-publish/types/event/resultEvent.types.js +2 -0
  74. package/dist/cjs/modules/product-publish/types/event/resultEventPayload.types.d.ts +4 -0
  75. package/dist/cjs/modules/product-publish/types/event/resultEventPayload.types.js +2 -0
  76. package/dist/cjs/modules/product-publish/types/index.d.ts +6 -0
  77. package/dist/cjs/modules/product-publish/types/index.js +25 -0
  78. package/dist/cjs/modules/product-publish/types/moduleConfig.types.d.ts +2 -0
  79. package/dist/cjs/modules/product-publish/types/moduleConfig.types.js +2 -0
  80. package/dist/cjs/modules/sdk/events.d.ts +13 -0
  81. package/dist/cjs/modules/sdk/events.js +16 -0
  82. package/dist/cjs/modules/sdk/sdkModule.d.ts +7 -0
  83. package/dist/cjs/modules/sdk/sdkModule.js +11 -0
  84. package/dist/cjs/modules/sdk/types/data.types.d.ts +10 -0
  85. package/dist/cjs/modules/sdk/types/data.types.js +2 -0
  86. package/dist/cjs/modules/sdk/types/event/actionEvent.types.d.ts +6 -0
  87. package/dist/cjs/modules/sdk/types/event/actionEvent.types.js +2 -0
  88. package/dist/cjs/modules/sdk/types/event/actionEventPayload.types.d.ts +6 -0
  89. package/dist/cjs/modules/sdk/types/event/actionEventPayload.types.js +2 -0
  90. package/dist/cjs/modules/sdk/types/index.d.ts +5 -0
  91. package/dist/cjs/modules/sdk/types/index.js +25 -0
  92. package/dist/cjs/modules/sdk/types/moduleConfig.types.d.ts +2 -0
  93. package/dist/cjs/modules/sdk/types/moduleConfig.types.js +2 -0
  94. package/dist/cjs/services/embedCommunicator.d.ts +21 -0
  95. package/dist/cjs/services/embedCommunicator.js +108 -0
  96. package/dist/cjs/services/iFrameManager.d.ts +15 -0
  97. package/dist/cjs/services/iFrameManager.js +70 -0
  98. package/dist/cjs/services/messageBroker.d.ts +19 -0
  99. package/dist/cjs/services/messageBroker.js +64 -0
  100. package/dist/cjs/services/moduleLoaderService.d.ts +16 -0
  101. package/dist/cjs/services/moduleLoaderService.js +50 -0
  102. package/dist/cjs/types/event/action/actionEvent.types.d.ts +11 -0
  103. package/dist/cjs/types/event/action/actionEvent.types.js +2 -0
  104. package/dist/cjs/types/event/action/actionEventPayload.types.d.ts +5 -0
  105. package/dist/cjs/types/event/action/actionEventPayload.types.js +2 -0
  106. package/dist/cjs/types/event/event.types.d.ts +15 -0
  107. package/dist/cjs/types/event/event.types.js +2 -0
  108. package/dist/cjs/types/event/eventPayload.types.d.ts +4 -0
  109. package/dist/cjs/types/event/eventPayload.types.js +2 -0
  110. package/dist/cjs/types/event/notification/notificationEvent.types.d.ts +6 -0
  111. package/dist/cjs/types/event/notification/notificationEvent.types.js +2 -0
  112. package/dist/cjs/types/event/notification/notificationEventPayload.types.d.ts +5 -0
  113. package/dist/cjs/types/event/notification/notificationEventPayload.types.js +2 -0
  114. package/dist/cjs/types/event/result/resultEvent.types.d.ts +10 -0
  115. package/dist/cjs/types/event/result/resultEvent.types.js +2 -0
  116. package/dist/cjs/types/event/result/resultEventPayload.types.d.ts +11 -0
  117. package/dist/cjs/types/event/result/resultEventPayload.types.js +2 -0
  118. package/dist/cjs/types/module/module.types.d.ts +22 -0
  119. package/dist/cjs/types/module/module.types.js +2 -0
  120. package/dist/cjs/types/module/moduleConfig.types.d.ts +10 -0
  121. package/dist/cjs/types/module/moduleConfig.types.js +2 -0
  122. package/dist/cjs/version.d.ts +1 -0
  123. package/dist/cjs/version.js +5 -0
  124. package/dist/esm/helpers/messageLogger.d.ts +20 -0
  125. package/dist/esm/helpers/messageLogger.js +68 -0
  126. package/dist/esm/helpers/responseHandler.d.ts +6 -0
  127. package/dist/esm/helpers/responseHandler.js +23 -0
  128. package/dist/esm/helpers/typeHelper.types.d.ts +10 -0
  129. package/dist/esm/helpers/typeHelper.types.js +1 -0
  130. package/dist/esm/index.d.ts +44 -0
  131. package/dist/esm/index.js +101 -0
  132. package/dist/esm/modules/baseModule.d.ts +7 -0
  133. package/dist/esm/modules/baseModule.js +6 -0
  134. package/dist/esm/modules/baseModuleService.d.ts +10 -0
  135. package/dist/esm/modules/baseModuleService.js +7 -0
  136. package/dist/esm/modules/catalog/catalogModule.d.ts +9 -0
  137. package/dist/esm/modules/catalog/catalogModule.js +22 -0
  138. package/dist/esm/modules/catalog/catalogService.d.ts +7 -0
  139. package/dist/esm/modules/catalog/catalogService.js +19 -0
  140. package/dist/esm/modules/catalog/events.d.ts +26 -0
  141. package/dist/esm/modules/catalog/events.js +20 -0
  142. package/dist/esm/modules/catalog/helpers/variantUtils.d.ts +7 -0
  143. package/dist/esm/modules/catalog/helpers/variantUtils.js +33 -0
  144. package/dist/esm/modules/catalog/types/data.types.d.ts +87 -0
  145. package/dist/esm/modules/catalog/types/data.types.js +1 -0
  146. package/dist/esm/modules/catalog/types/event/actionEvent.types.d.ts +7 -0
  147. package/dist/esm/modules/catalog/types/event/actionEvent.types.js +1 -0
  148. package/dist/esm/modules/catalog/types/event/actionEventPayload.types.d.ts +11 -0
  149. package/dist/esm/modules/catalog/types/event/actionEventPayload.types.js +1 -0
  150. package/dist/esm/modules/catalog/types/event/resultEvent.types.d.ts +7 -0
  151. package/dist/esm/modules/catalog/types/event/resultEvent.types.js +1 -0
  152. package/dist/esm/modules/catalog/types/event/resultEventPayload.types.d.ts +14 -0
  153. package/dist/esm/modules/catalog/types/event/resultEventPayload.types.js +1 -0
  154. package/dist/esm/modules/catalog/types/index.d.ts +7 -0
  155. package/dist/esm/modules/catalog/types/index.js +10 -0
  156. package/dist/esm/modules/catalog/types/moduleConfig.types.d.ts +9 -0
  157. package/dist/esm/modules/catalog/types/moduleConfig.types.js +1 -0
  158. package/dist/esm/modules/eventTypes.d.ts +9 -0
  159. package/dist/esm/modules/eventTypes.js +14 -0
  160. package/dist/esm/modules/events.d.ts +44 -0
  161. package/dist/esm/modules/events.js +27 -0
  162. package/dist/esm/modules/mockup-generation/events.d.ts +14 -0
  163. package/dist/esm/modules/mockup-generation/events.js +14 -0
  164. package/dist/esm/modules/mockup-generation/mockupGenerationModule.d.ts +7 -0
  165. package/dist/esm/modules/mockup-generation/mockupGenerationModule.js +9 -0
  166. package/dist/esm/modules/mockup-generation/mockupService.d.ts +6 -0
  167. package/dist/esm/modules/mockup-generation/mockupService.js +11 -0
  168. package/dist/esm/modules/mockup-generation/types/data.types.d.ts +31 -0
  169. package/dist/esm/modules/mockup-generation/types/data.types.js +1 -0
  170. package/dist/esm/modules/mockup-generation/types/event/actionEvent.types.d.ts +5 -0
  171. package/dist/esm/modules/mockup-generation/types/event/actionEvent.types.js +1 -0
  172. package/dist/esm/modules/mockup-generation/types/event/actionEventPayload.types.d.ts +11 -0
  173. package/dist/esm/modules/mockup-generation/types/event/actionEventPayload.types.js +1 -0
  174. package/dist/esm/modules/mockup-generation/types/event/resultEvent.types.d.ts +5 -0
  175. package/dist/esm/modules/mockup-generation/types/event/resultEvent.types.js +1 -0
  176. package/dist/esm/modules/mockup-generation/types/event/resultEventPayload.types.d.ts +5 -0
  177. package/dist/esm/modules/mockup-generation/types/event/resultEventPayload.types.js +1 -0
  178. package/dist/esm/modules/mockup-generation/types/index.d.ts +7 -0
  179. package/dist/esm/modules/mockup-generation/types/index.js +11 -0
  180. package/dist/esm/modules/mockup-generation/types/moduleConfig.types.d.ts +2 -0
  181. package/dist/esm/modules/mockup-generation/types/moduleConfig.types.js +1 -0
  182. package/dist/esm/modules/modules.d.ts +16 -0
  183. package/dist/esm/modules/modules.js +16 -0
  184. package/dist/esm/modules/product-publish/events.d.ts +14 -0
  185. package/dist/esm/modules/product-publish/events.js +14 -0
  186. package/dist/esm/modules/product-publish/productPublishModule.d.ts +7 -0
  187. package/dist/esm/modules/product-publish/productPublishModule.js +9 -0
  188. package/dist/esm/modules/product-publish/productPublishService.d.ts +6 -0
  189. package/dist/esm/modules/product-publish/productPublishService.js +11 -0
  190. package/dist/esm/modules/product-publish/types/event/actionEvent.types.d.ts +5 -0
  191. package/dist/esm/modules/product-publish/types/event/actionEvent.types.js +1 -0
  192. package/dist/esm/modules/product-publish/types/event/actionEventPayload.types.d.ts +8 -0
  193. package/dist/esm/modules/product-publish/types/event/actionEventPayload.types.js +1 -0
  194. package/dist/esm/modules/product-publish/types/event/resultEvent.types.d.ts +5 -0
  195. package/dist/esm/modules/product-publish/types/event/resultEvent.types.js +1 -0
  196. package/dist/esm/modules/product-publish/types/event/resultEventPayload.types.d.ts +4 -0
  197. package/dist/esm/modules/product-publish/types/event/resultEventPayload.types.js +1 -0
  198. package/dist/esm/modules/product-publish/types/index.d.ts +6 -0
  199. package/dist/esm/modules/product-publish/types/index.js +9 -0
  200. package/dist/esm/modules/product-publish/types/moduleConfig.types.d.ts +2 -0
  201. package/dist/esm/modules/product-publish/types/moduleConfig.types.js +1 -0
  202. package/dist/esm/modules/sdk/events.d.ts +13 -0
  203. package/dist/esm/modules/sdk/events.js +13 -0
  204. package/dist/esm/modules/sdk/sdkModule.d.ts +7 -0
  205. package/dist/esm/modules/sdk/sdkModule.js +7 -0
  206. package/dist/esm/modules/sdk/types/data.types.d.ts +10 -0
  207. package/dist/esm/modules/sdk/types/data.types.js +1 -0
  208. package/dist/esm/modules/sdk/types/event/actionEvent.types.d.ts +6 -0
  209. package/dist/esm/modules/sdk/types/event/actionEvent.types.js +1 -0
  210. package/dist/esm/modules/sdk/types/event/actionEventPayload.types.d.ts +6 -0
  211. package/dist/esm/modules/sdk/types/event/actionEventPayload.types.js +1 -0
  212. package/dist/esm/modules/sdk/types/index.d.ts +5 -0
  213. package/dist/esm/modules/sdk/types/index.js +9 -0
  214. package/dist/esm/modules/sdk/types/moduleConfig.types.d.ts +2 -0
  215. package/dist/esm/modules/sdk/types/moduleConfig.types.js +1 -0
  216. package/dist/esm/services/embedCommunicator.d.ts +21 -0
  217. package/dist/esm/services/embedCommunicator.js +104 -0
  218. package/dist/esm/services/iFrameManager.d.ts +15 -0
  219. package/dist/esm/services/iFrameManager.js +66 -0
  220. package/dist/esm/services/messageBroker.d.ts +19 -0
  221. package/dist/esm/services/messageBroker.js +60 -0
  222. package/dist/esm/services/moduleLoaderService.d.ts +16 -0
  223. package/dist/esm/services/moduleLoaderService.js +46 -0
  224. package/dist/esm/types/event/action/actionEvent.types.d.ts +11 -0
  225. package/dist/esm/types/event/action/actionEvent.types.js +1 -0
  226. package/dist/esm/types/event/action/actionEventPayload.types.d.ts +5 -0
  227. package/dist/esm/types/event/action/actionEventPayload.types.js +1 -0
  228. package/dist/esm/types/event/event.types.d.ts +15 -0
  229. package/dist/esm/types/event/event.types.js +1 -0
  230. package/dist/esm/types/event/eventPayload.types.d.ts +4 -0
  231. package/dist/esm/types/event/eventPayload.types.js +1 -0
  232. package/dist/esm/types/event/notification/notificationEvent.types.d.ts +6 -0
  233. package/dist/esm/types/event/notification/notificationEvent.types.js +1 -0
  234. package/dist/esm/types/event/notification/notificationEventPayload.types.d.ts +5 -0
  235. package/dist/esm/types/event/notification/notificationEventPayload.types.js +1 -0
  236. package/dist/esm/types/event/result/resultEvent.types.d.ts +10 -0
  237. package/dist/esm/types/event/result/resultEvent.types.js +1 -0
  238. package/dist/esm/types/event/result/resultEventPayload.types.d.ts +11 -0
  239. package/dist/esm/types/event/result/resultEventPayload.types.js +1 -0
  240. package/dist/esm/types/module/module.types.d.ts +22 -0
  241. package/dist/esm/types/module/module.types.js +1 -0
  242. package/dist/esm/types/module/moduleConfig.types.d.ts +10 -0
  243. package/dist/esm/types/module/moduleConfig.types.js +1 -0
  244. package/dist/esm/version.d.ts +1 -0
  245. package/dist/esm/version.js +2 -0
  246. package/package.json +55 -0
  247. package/tsconfig.cjs.json +8 -0
  248. package/tsconfig.esm.json +8 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageBroker = void 0;
4
+ class MessageBroker {
5
+ pendingMessages = new Map();
6
+ defaultTimeout = 30000; // 30 seconds
7
+ generateCorrelationId() {
8
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
9
+ }
10
+ createPendingMessage(correlationId, timeout = this.defaultTimeout) {
11
+ return new Promise((resolve, reject) => {
12
+ const timeoutId = setTimeout(() => {
13
+ this.rejectMessage(correlationId, new Error(`Request timeout after ${timeout}ms`));
14
+ }, timeout);
15
+ this.pendingMessages.set(correlationId, {
16
+ resolve: resolve,
17
+ reject,
18
+ timestamp: Date.now(),
19
+ timeoutId,
20
+ });
21
+ });
22
+ }
23
+ resolveMessage(correlationId, data) {
24
+ const pending = this.pendingMessages.get(correlationId);
25
+ if (!pending) {
26
+ return false;
27
+ }
28
+ if (pending.timeoutId) {
29
+ clearTimeout(pending.timeoutId);
30
+ }
31
+ pending.resolve(data);
32
+ this.pendingMessages.delete(correlationId);
33
+ return true;
34
+ }
35
+ rejectMessage(correlationId, error) {
36
+ const pending = this.pendingMessages.get(correlationId);
37
+ if (!pending) {
38
+ return false;
39
+ }
40
+ if (pending.timeoutId) {
41
+ clearTimeout(pending.timeoutId);
42
+ }
43
+ pending.reject(error);
44
+ this.pendingMessages.delete(correlationId);
45
+ return true;
46
+ }
47
+ hasPendingMessage(correlationId) {
48
+ return this.pendingMessages.has(correlationId);
49
+ }
50
+ clearExpiredMessages(maxAge = 60000) {
51
+ const now = Date.now();
52
+ for (const [correlationId, pending] of this.pendingMessages.entries()) {
53
+ if (now - pending.timestamp > maxAge) {
54
+ this.rejectMessage(correlationId, new Error('Message expired without response'));
55
+ }
56
+ }
57
+ }
58
+ clearAll() {
59
+ for (const [correlationId] of this.pendingMessages.entries()) {
60
+ this.rejectMessage(correlationId, new Error('Broker cleared'));
61
+ }
62
+ }
63
+ }
64
+ exports.MessageBroker = MessageBroker;
@@ -0,0 +1,16 @@
1
+ import { ModuleName } from '../types/module/module.types';
2
+ import { MODULES } from '../modules/modules';
3
+ import { ModuleConfig, ModuleConfigData } from '../types/module/moduleConfig.types';
4
+ type ModuleInstance = InstanceType<(typeof MODULES)[keyof typeof MODULES]>;
5
+ export declare class ModuleLoaderService {
6
+ private static instance;
7
+ private communicator;
8
+ private moduleCache;
9
+ static getInstance(): ModuleLoaderService;
10
+ getModule<T extends ModuleInstance>(moduleName: ModuleName): T;
11
+ loadModule(config: ModuleConfig<ModuleName, ModuleConfigData>): Promise<void>;
12
+ ensureModuleLoaded<T extends ModuleInstance>(moduleName: ModuleName, config?: ModuleConfigData): Promise<T>;
13
+ clearCache(): void;
14
+ isModuleLoaded(moduleName: ModuleName): boolean;
15
+ }
16
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleLoaderService = void 0;
4
+ const embedCommunicator_1 = require("./embedCommunicator");
5
+ const modules_1 = require("../modules/modules");
6
+ const types_1 = require("../modules/sdk/types");
7
+ const messageLogger_1 = require("../helpers/messageLogger");
8
+ class ModuleLoaderService {
9
+ static instance;
10
+ communicator = embedCommunicator_1.EmbedCommunicator.getInstance();
11
+ moduleCache = new Map();
12
+ static getInstance() {
13
+ if (!ModuleLoaderService.instance) {
14
+ ModuleLoaderService.instance = new ModuleLoaderService();
15
+ }
16
+ return ModuleLoaderService.instance;
17
+ }
18
+ getModule(moduleName) {
19
+ if (!this.isModuleLoaded(moduleName)) {
20
+ const module = new modules_1.MODULES[moduleName]();
21
+ this.moduleCache.set(moduleName, module);
22
+ }
23
+ return this.moduleCache.get(moduleName);
24
+ }
25
+ async loadModule(config) {
26
+ const notification = await this.communicator.sendCorrelatedRequest(types_1.EVENTS_ACTION.LOAD_MODULE, config);
27
+ (0, messageLogger_1.logEmbedMessage)({
28
+ message: ['Loaded module', notification],
29
+ logType: messageLogger_1.LOG_TYPES.LOG,
30
+ });
31
+ }
32
+ async ensureModuleLoaded(moduleName, config) {
33
+ if (!this.isModuleLoaded(moduleName)) {
34
+ await this.loadModule({
35
+ name: moduleName,
36
+ data: config,
37
+ });
38
+ const module = this.getModule(moduleName);
39
+ this.moduleCache.set(moduleName, module);
40
+ }
41
+ return this.moduleCache.get(moduleName);
42
+ }
43
+ clearCache() {
44
+ this.moduleCache.clear();
45
+ }
46
+ isModuleLoaded(moduleName) {
47
+ return this.moduleCache.has(moduleName);
48
+ }
49
+ }
50
+ exports.ModuleLoaderService = ModuleLoaderService;
@@ -0,0 +1,11 @@
1
+ import { ActionEvent as SdkActionEvent, LoadModuleAction } from '../../../modules/sdk/types/event/actionEvent.types';
2
+ import { ActionEvent as CatalogActionEvent } from '../../../modules/catalog/types/event/actionEvent.types';
3
+ import { ActionEvent as MockupGenerationActionEvent } from '../../../modules/mockup-generation/types/event/actionEvent.types';
4
+ import { ActionEvent as ProductPublishActionEvent } from '../../../modules/product-publish/types/event/actionEvent.types';
5
+ import { ALL_ACTION_EVENTS } from '../../../modules/events';
6
+ import { Event } from '../../../types/event/event.types';
7
+ import { EVENT_TYPES } from '../../../modules/eventTypes';
8
+ import { ActionEventPayload } from './actionEventPayload.types';
9
+ export type ActionEventName = (typeof ALL_ACTION_EVENTS)[keyof typeof ALL_ACTION_EVENTS];
10
+ export type BaseActionEvent<TName extends ActionEventName, TPayload extends ActionEventPayload> = Event<TName, typeof EVENT_TYPES.ACTION, TPayload>;
11
+ export type ActionEvent = LoadModuleAction | MockupGenerationActionEvent | CatalogActionEvent | ProductPublishActionEvent | SdkActionEvent;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { ActionEventPayload as SdkEventPayload, LoadModulePayload } from '../../../modules/sdk/types/event/actionEventPayload.types';
2
+ import { ActionEventPayload as CatalogEventPayload } from '../../../modules/catalog/types/event/actionEventPayload.types';
3
+ import { ActionEventPayload as MockupGenerationEventPayload } from '../../../modules/mockup-generation/types/event/actionEventPayload.types';
4
+ import { ActionEventPayload as ProductPublishEventPayload } from '../../../modules/product-publish/types/event/actionEventPayload.types';
5
+ export type ActionEventPayload = LoadModulePayload | MockupGenerationEventPayload | CatalogEventPayload | SdkEventPayload | ProductPublishEventPayload | undefined;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ import type { ALL_EVENTS } from '../../modules/events';
2
+ import type { ActionEvent } from './action/actionEvent.types';
3
+ import type { NotificationEvent } from './notification/notificationEvent.types';
4
+ import type { ResultEvent } from './result/resultEvent.types';
5
+ import { EVENT_TYPES } from '../../modules/eventTypes';
6
+ import { EventPayload } from './eventPayload.types';
7
+ export type EventName = (typeof ALL_EVENTS)[keyof typeof ALL_EVENTS];
8
+ export type EventTypeName = (typeof EVENT_TYPES)[keyof typeof EVENT_TYPES];
9
+ export interface Event<TName extends EventName, TType extends EventTypeName, TPayload extends EventPayload> {
10
+ name: TName;
11
+ type: TType;
12
+ payload?: TPayload;
13
+ correlationId: string;
14
+ }
15
+ export type AnyEvent = ActionEvent | NotificationEvent | ResultEvent;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import type { ActionEventPayload } from './action/actionEventPayload.types';
2
+ import type { NotificationEventPayload } from './notification/notificationEventPayload.types';
3
+ import { ResultEventPayload } from './result/resultEventPayload.types';
4
+ export type EventPayload = ActionEventPayload | NotificationEventPayload | ResultEventPayload | undefined;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { Event } from '../../../types/event/event.types';
2
+ import type { NotificationEventPayload } from './notificationEventPayload.types';
3
+ import { ALL_NOTIFICATION_EVENTS } from '../../../modules/events';
4
+ import { EVENT_TYPES } from '../../../modules/eventTypes';
5
+ export type NotificationEventName = (typeof ALL_NOTIFICATION_EVENTS)[keyof typeof ALL_NOTIFICATION_EVENTS];
6
+ export type NotificationEvent = Event<NotificationEventName, typeof EVENT_TYPES.NOTIFICATION, NotificationEventPayload>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface NotificationEventPayload {
2
+ status: 'success' | 'error';
3
+ message: string;
4
+ error?: Error;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { ResultEvent as CatalogResultEvent } from '../../../modules/catalog/types/event/resultEvent.types';
2
+ import { ResultEvent as MockupGenerationResultEvent } from '../../../modules/mockup-generation/types/event/resultEvent.types';
3
+ import { ResultEvent as ProductPublishResultEvent } from '../../../modules/product-publish/types/event/resultEvent.types';
4
+ import { ResultEventPayload } from './resultEventPayload.types';
5
+ import { EVENT_TYPES } from '../../../modules/eventTypes';
6
+ import { Event } from '../../../types/event/event.types';
7
+ import { ALL_RESULT_EVENTS } from '../../../modules/events';
8
+ export type ResultEventName = (typeof ALL_RESULT_EVENTS)[keyof typeof ALL_RESULT_EVENTS];
9
+ export type BaseResultEvent<TName extends ResultEventName, TPayload extends ResultEventPayload> = Event<TName, typeof EVENT_TYPES.RESULT, TPayload>;
10
+ export type ResultEvent = MockupGenerationResultEvent | CatalogResultEvent | ProductPublishResultEvent;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ import type { CatalogResultPayload } from '../../../modules/catalog/types';
2
+ import type { MockupGenerationResultPayload } from '../../../modules/mockup-generation/types';
3
+ import type { ProductPublishResultPayload } from '../../../modules/product-publish/types';
4
+ export type ResultEventPayload = MockupGenerationResultPayload | CatalogResultPayload | ProductPublishResultPayload;
5
+ export type HandledResponse<T, K extends Error> = {
6
+ data: T;
7
+ error: null;
8
+ } | {
9
+ data: null;
10
+ error: K;
11
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ import type { MODULE_NAMES } from '../../modules/modules';
2
+ import { GetMockupsPayload, GetMockupsResultPayload } from '../../modules/mockup-generation/types';
3
+ import { SdkModuleConfigData } from '../../modules/sdk/types';
4
+ import { GetCatalogCategoriesResultPayload, GetCatalogProductsResultPayload, GetSingleCatalogProductResultPayload } from '../../modules/catalog/types';
5
+ import { NotificationEventPayload } from '../../types/event/notification/notificationEventPayload.types';
6
+ import { GetProductPublishPayload, ProductPublishData } from '../../modules/product-publish/types';
7
+ /** This file ensures that Iframe and SDK has the same source of truth for return values */
8
+ export type ModuleName = (typeof MODULE_NAMES)[keyof typeof MODULE_NAMES];
9
+ export interface ISdkModule {
10
+ setup(config?: SdkModuleConfigData): Promise<NotificationEventPayload> | Promise<void>;
11
+ }
12
+ export interface ICatalogModule {
13
+ getProducts(categoryId: number): GetCatalogProductsResultPayload;
14
+ getProduct(productId: number): GetSingleCatalogProductResultPayload;
15
+ getCategories(): GetCatalogCategoriesResultPayload;
16
+ }
17
+ export interface IMockupGenerationModule {
18
+ getMockups(data: GetMockupsPayload): GetMockupsResultPayload;
19
+ }
20
+ export interface IProductPublishModule {
21
+ productPublish(data: GetProductPublishPayload): ProductPublishData;
22
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { ModuleName } from './module.types';
2
+ import { CatalogModuleConfigData } from '../../modules/catalog/types';
3
+ import { MockupGenerationModuleConfigData } from '../../modules/mockup-generation/types';
4
+ import { SdkConfig } from '../../modules/sdk/types';
5
+ import { ProductPublishModuleConfigData } from '../../modules/product-publish/types';
6
+ export interface ModuleConfig<TModuleName extends ModuleName, TData extends ModuleConfigData> {
7
+ name: TModuleName;
8
+ data?: TData;
9
+ }
10
+ export type ModuleConfigData = SdkConfig | MockupGenerationModuleConfigData | CatalogModuleConfigData | ProductPublishModuleConfigData | undefined;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare const VERSION: "1.2.1";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ // AUTO-GENERATED
5
+ exports.VERSION = '1.2.1';
@@ -0,0 +1,20 @@
1
+ export declare const LOG_TYPES: {
2
+ readonly LOG: "log";
3
+ readonly INFO: "info";
4
+ readonly WARN: "warn";
5
+ readonly ERROR: "error";
6
+ };
7
+ export declare const SOURCES: {
8
+ readonly HOST: "Host";
9
+ readonly SDK: "SDK";
10
+ };
11
+ export interface MessageLoggerState {
12
+ isLoggerEnabled: boolean;
13
+ source: (typeof SOURCES)[keyof typeof SOURCES];
14
+ }
15
+ export declare const messageLoggerState: MessageLoggerState;
16
+ export declare function setLoggerState(isLoggerEnabled: boolean, source: MessageLoggerState['source']): void;
17
+ export declare function logEmbedMessage({ message, logType, }: {
18
+ message: string | unknown[];
19
+ logType?: (typeof LOG_TYPES)[keyof typeof LOG_TYPES];
20
+ }): void;
@@ -0,0 +1,68 @@
1
+ export const LOG_TYPES = {
2
+ LOG: 'log',
3
+ INFO: 'info',
4
+ WARN: 'warn',
5
+ ERROR: 'error',
6
+ };
7
+ export const SOURCES = {
8
+ HOST: 'Host',
9
+ SDK: 'SDK',
10
+ };
11
+ export const messageLoggerState = {
12
+ isLoggerEnabled: true,
13
+ source: SOURCES.SDK,
14
+ };
15
+ export function setLoggerState(isLoggerEnabled, source) {
16
+ messageLoggerState.isLoggerEnabled = isLoggerEnabled;
17
+ messageLoggerState.source = source;
18
+ }
19
+ function getSourceStyle(source) {
20
+ switch (source) {
21
+ case SOURCES.HOST:
22
+ return `
23
+ background: #dc2626;
24
+ color: white;
25
+ padding: 2px 6px;
26
+ border-radius: 12px;
27
+ font-weight: bold;
28
+ `;
29
+ case SOURCES.SDK:
30
+ return `
31
+ background: #3a82f6;
32
+ color: white;
33
+ padding: 2px 6px;
34
+ border-radius: 12px;
35
+ font-weight: bold;
36
+ `;
37
+ default:
38
+ return '';
39
+ }
40
+ }
41
+ export function logEmbedMessage({ message, logType = LOG_TYPES.LOG, }) {
42
+ if (!messageLoggerState.isLoggerEnabled && logType !== LOG_TYPES.ERROR) {
43
+ return;
44
+ }
45
+ const src = messageLoggerState.source;
46
+ const style = getSourceStyle(src);
47
+ const prefix = `%c${src}%c`;
48
+ // Normalize message to array
49
+ const msgArray = Array.isArray(message) ? message : [message];
50
+ // Arguments: prefix, styles, and the message parts
51
+ const args = [prefix, style, '', ...msgArray];
52
+ switch (logType) {
53
+ case 'log':
54
+ console.log(...args);
55
+ break;
56
+ case 'info':
57
+ console.info(...args);
58
+ break;
59
+ case 'warn':
60
+ console.warn(...args);
61
+ break;
62
+ case 'error':
63
+ console.error(...args);
64
+ break;
65
+ default:
66
+ break;
67
+ }
68
+ }
@@ -0,0 +1,6 @@
1
+ import { HandledResponse } from '../types/event/result/resultEventPayload.types';
2
+ import { NotificationEventPayload } from '../types/event/notification/notificationEventPayload.types';
3
+ import { ResultEventPayload } from '../types/event/result/resultEventPayload.types';
4
+ export declare function isNotificationPayload(payload: ResultEventPayload | NotificationEventPayload): payload is NotificationEventPayload;
5
+ export declare function isErrorNotification(payload: NotificationEventPayload): boolean;
6
+ export declare function handleResponse<T extends ResultEventPayload>(response: T | NotificationEventPayload, context?: string): HandledResponse<T, Error>;
@@ -0,0 +1,23 @@
1
+ export function isNotificationPayload(payload) {
2
+ return 'status' in payload && ('error' in payload || 'message' in payload);
3
+ }
4
+ export function isErrorNotification(payload) {
5
+ return payload.status === 'error';
6
+ }
7
+ export function handleResponse(response, context) {
8
+ if (isNotificationPayload(response)) {
9
+ if (isErrorNotification(response)) {
10
+ const errorMessage = context
11
+ ? `${context}: ${response.message}`
12
+ : response.message;
13
+ const error = response.error || new Error(errorMessage);
14
+ error.message = errorMessage;
15
+ return { error, data: null };
16
+ }
17
+ return {
18
+ error: new Error(`Unexpected success notification in request context: ${response.message}`),
19
+ data: null,
20
+ };
21
+ }
22
+ return { error: null, data: response };
23
+ }
@@ -0,0 +1,10 @@
1
+ import { HandledResponse } from '../types/event/result/resultEventPayload.types';
2
+ /** Wraps all method returns in promises */
3
+ export type PromisifyMethods<T> = {
4
+ [K in keyof T]: T[K] extends (this: infer TThis, ...args: infer A) => infer R ? (this: TThis, ...args: A) => Promise<R> : T[K];
5
+ };
6
+ type AwaitedLike<T> = T extends PromiseLike<infer U> ? U : T;
7
+ export type WithHandledResponses<T, E extends Error = Error> = {
8
+ [K in keyof T]: T[K] extends (this: infer TThis, ...args: infer A) => infer R ? (this: TThis, ...args: A) => Promise<HandledResponse<AwaitedLike<R>, E>> : T[K] /** If not a method, remains unchanged **/;
9
+ };
10
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import { SdkConfig } from './modules/sdk/types';
2
+ import { CatalogService } from './modules/catalog/catalogService';
3
+ import { MockupService } from './modules/mockup-generation/mockupService';
4
+ import { ProductPublishService } from './modules/product-publish/productPublishService';
5
+ export declare class Embed {
6
+ private config?;
7
+ static BASE_URL: string;
8
+ private nonce;
9
+ private iFrameManager;
10
+ private communicator;
11
+ private moduleLoader;
12
+ private initialized;
13
+ readonly catalog: CatalogService;
14
+ readonly mockup: MockupService;
15
+ readonly publish: ProductPublishService;
16
+ constructor(nonce: string, config?: SdkConfig | undefined);
17
+ init(): Promise<void>;
18
+ destroy(): void;
19
+ }
20
+ export * from './types/event/event.types';
21
+ export * from './types/event/eventPayload.types';
22
+ export * from './types/event/action/actionEvent.types';
23
+ export * from './types/event/action/actionEventPayload.types';
24
+ export * from './types/event/notification/notificationEvent.types';
25
+ export * from './types/event/notification/notificationEventPayload.types';
26
+ export * from './types/event/result/resultEvent.types';
27
+ export * from './types/event/result/resultEventPayload.types';
28
+ export * from './types/module/module.types';
29
+ export * from './types/module/moduleConfig.types';
30
+ export * as CatalogModule from './modules/catalog/types';
31
+ export * as MockupGenerationModule from './modules/mockup-generation/types';
32
+ export * as ProductPublishModule from './modules/product-publish/types';
33
+ export * as SdkModule from './modules/sdk/types';
34
+ export { ALL_EVENTS } from './modules/events';
35
+ export { MODULE_NAMES } from './modules/modules';
36
+ export { EVENT_TYPES } from './modules/eventTypes';
37
+ export { VERSION } from './version';
38
+ export { logEmbedMessage, setLoggerState, LOG_TYPES, SOURCES, } from './helpers/messageLogger';
39
+ export { handleResponse, isNotificationPayload, isErrorNotification, } from './helpers/responseHandler';
40
+ export { getSortedVariantList, getVariantImageGallery, } from './modules/catalog/helpers/variantUtils';
41
+ export { CatalogService } from './modules/catalog/catalogService';
42
+ export { MockupService } from './modules/mockup-generation/mockupService';
43
+ export { ProductPublishService } from './modules/product-publish/productPublishService';
44
+ export { PromisifyMethods } from './helpers/typeHelper.types';
@@ -0,0 +1,101 @@
1
+ import { iFrameManager } from './services/iFrameManager';
2
+ import { EmbedCommunicator } from './services/embedCommunicator';
3
+ import { ModuleLoaderService } from './services/moduleLoaderService';
4
+ import { MODULE_NAMES } from './modules/modules';
5
+ import { CatalogService } from './modules/catalog/catalogService';
6
+ import { MockupService } from './modules/mockup-generation/mockupService';
7
+ import { ProductPublishService } from './modules/product-publish/productPublishService';
8
+ import { VERSION } from './version';
9
+ import { setLoggerState, logEmbedMessage, SOURCES, LOG_TYPES, } from './helpers/messageLogger';
10
+ export class Embed {
11
+ config;
12
+ static BASE_URL = 'https://www.printful.com/embed-sdk';
13
+ nonce;
14
+ iFrameManager = null;
15
+ communicator = EmbedCommunicator.getInstance();
16
+ moduleLoader = ModuleLoaderService.getInstance();
17
+ initialized = false;
18
+ // Service composition
19
+ catalog;
20
+ mockup;
21
+ publish;
22
+ constructor(nonce, config) {
23
+ this.config = config;
24
+ this.nonce = nonce;
25
+ setLoggerState(config?.debug ?? false, SOURCES.SDK);
26
+ // Initialize services
27
+ this.catalog = new CatalogService();
28
+ this.mockup = new MockupService();
29
+ this.publish = new ProductPublishService();
30
+ }
31
+ async init() {
32
+ if (this.initialized) {
33
+ logEmbedMessage({
34
+ message: 'Embed SDK already initialized',
35
+ logType: LOG_TYPES.WARN,
36
+ });
37
+ return;
38
+ }
39
+ // Client mode: Create iframe and setup communication
40
+ this.iFrameManager = new iFrameManager({
41
+ baseUrl: Embed.BASE_URL,
42
+ nonce: this.nonce,
43
+ });
44
+ await this.iFrameManager.create();
45
+ // Setup communicator with iframe manager
46
+ this.communicator.setIFrameManager(this.iFrameManager);
47
+ this.communicator.setupListener();
48
+ // Get SDK module and setup
49
+ const sdkModule = this.moduleLoader.getModule(MODULE_NAMES.SDK);
50
+ const notification = await sdkModule.setup({
51
+ ...this.config,
52
+ clientVersion: VERSION,
53
+ });
54
+ logEmbedMessage({
55
+ message: ['SDK (Main) module setup notification', notification],
56
+ logType: LOG_TYPES.LOG,
57
+ });
58
+ this.initialized = true;
59
+ }
60
+ destroy() {
61
+ if (this.iFrameManager) {
62
+ this.iFrameManager.destroy();
63
+ this.iFrameManager = null;
64
+ }
65
+ this.communicator.cleanup();
66
+ this.moduleLoader.clearCache();
67
+ this.initialized = false;
68
+ }
69
+ }
70
+ /* EXPORTS */
71
+ // TODO: properly foldered exports?
72
+ // Common types
73
+ export * from './types/event/event.types';
74
+ export * from './types/event/eventPayload.types';
75
+ export * from './types/event/action/actionEvent.types';
76
+ export * from './types/event/action/actionEventPayload.types';
77
+ export * from './types/event/notification/notificationEvent.types';
78
+ export * from './types/event/notification/notificationEventPayload.types';
79
+ export * from './types/event/result/resultEvent.types';
80
+ export * from './types/event/result/resultEventPayload.types';
81
+ export * from './types/module/module.types';
82
+ export * from './types/module/moduleConfig.types';
83
+ // Barrel module exports
84
+ export * as CatalogModule from './modules/catalog/types';
85
+ export * as MockupGenerationModule from './modules/mockup-generation/types';
86
+ export * as ProductPublishModule from './modules/product-publish/types';
87
+ export * as SdkModule from './modules/sdk/types';
88
+ // Constants
89
+ export { ALL_EVENTS } from './modules/events';
90
+ export { MODULE_NAMES } from './modules/modules';
91
+ export { EVENT_TYPES } from './modules/eventTypes';
92
+ // Internals
93
+ export { VERSION } from './version';
94
+ export { logEmbedMessage, setLoggerState, LOG_TYPES, SOURCES, } from './helpers/messageLogger';
95
+ // Helper utilities
96
+ export { handleResponse, isNotificationPayload, isErrorNotification, } from './helpers/responseHandler';
97
+ export { getSortedVariantList, getVariantImageGallery, } from './modules/catalog/helpers/variantUtils';
98
+ // Service classes (for type annotations)
99
+ export { CatalogService } from './modules/catalog/catalogService';
100
+ export { MockupService } from './modules/mockup-generation/mockupService';
101
+ export { ProductPublishService } from './modules/product-publish/productPublishService';
@@ -0,0 +1,7 @@
1
+ import { ActionEventName } from '../types/event/action/actionEvent.types';
2
+ import { ActionEventPayload } from '../types/event/action/actionEventPayload.types';
3
+ import { ResultEventPayload } from '../types/event/result/resultEventPayload.types';
4
+ import { NotificationEventPayload } from '../types/event/notification/notificationEventPayload.types';
5
+ export declare abstract class BaseModule {
6
+ protected sendRequest<T extends ResultEventPayload | NotificationEventPayload>(eventName: ActionEventName, eventPayload?: ActionEventPayload): Promise<T>;
7
+ }
@@ -0,0 +1,6 @@
1
+ import { EmbedCommunicator } from '../services/embedCommunicator';
2
+ export class BaseModule {
3
+ async sendRequest(eventName, eventPayload) {
4
+ return await EmbedCommunicator.getInstance().sendCorrelatedRequest(eventName, eventPayload);
5
+ }
6
+ }
@@ -0,0 +1,10 @@
1
+ import { ModuleLoaderService } from '../services/moduleLoaderService';
2
+ import { ModuleName } from '../types/module/module.types';
3
+ import { ModuleConfigData } from '../types/module/moduleConfig.types';
4
+ import { MODULES } from './modules';
5
+ type ModuleInstance = InstanceType<(typeof MODULES)[keyof typeof MODULES]>;
6
+ export declare abstract class BaseModuleService {
7
+ protected moduleLoader: ModuleLoaderService;
8
+ protected ensureModuleLoaded<T extends ModuleInstance>(moduleName: ModuleName, config?: ModuleConfigData): Promise<T>;
9
+ }
10
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ModuleLoaderService } from '../services/moduleLoaderService';
2
+ export class BaseModuleService {
3
+ moduleLoader = ModuleLoaderService.getInstance();
4
+ async ensureModuleLoaded(moduleName, config) {
5
+ return this.moduleLoader.ensureModuleLoaded(moduleName, config);
6
+ }
7
+ }
@@ -0,0 +1,9 @@
1
+ import { ICatalogModule } from '../../types/module/module.types';
2
+ import { BaseModule } from '../../modules/baseModule';
3
+ import { GetCatalogCategoriesResultPayload, GetCatalogProductsResultPayload, GetSingleCatalogProductResultPayload } from './types';
4
+ import { WithHandledResponses } from '../../helpers/typeHelper.types';
5
+ export declare class CatalogModule extends BaseModule implements WithHandledResponses<ICatalogModule> {
6
+ getProducts(categoryId: number, page?: number): Promise<import("../..").HandledResponse<GetCatalogProductsResultPayload, Error>>;
7
+ getProduct(productId: number): Promise<import("../..").HandledResponse<GetSingleCatalogProductResultPayload, Error>>;
8
+ getCategories(): Promise<import("../..").HandledResponse<GetCatalogCategoriesResultPayload, Error>>;
9
+ }