@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,16 @@
1
+ import { SdkModule } from './sdk/sdkModule';
2
+ import { CatalogModule } from './catalog/catalogModule';
3
+ import { MockupGenerationModule } from './mockup-generation/mockupGenerationModule';
4
+ import { ProductPublishModule } from './product-publish/productPublishModule';
5
+ export const MODULE_NAMES = {
6
+ SDK: 'sdk', // MAIN MODULE
7
+ CATALOG: 'catalog',
8
+ MOCKUP_GENERATION: 'mockupGeneration',
9
+ PRODUCT_PUBLISH: 'productPublish',
10
+ };
11
+ export const MODULES = {
12
+ [MODULE_NAMES.SDK]: SdkModule,
13
+ [MODULE_NAMES.CATALOG]: CatalogModule,
14
+ [MODULE_NAMES.MOCKUP_GENERATION]: MockupGenerationModule,
15
+ [MODULE_NAMES.PRODUCT_PUBLISH]: ProductPublishModule,
16
+ };
@@ -0,0 +1,14 @@
1
+ export declare const EVENTS_ACTION: {
2
+ readonly PRODUCT_PUBLISH: "actionProductPublish";
3
+ };
4
+ export declare const EVENTS_NOTIFICATION: {
5
+ readonly GET_PRODUCT_PUBLISH_FAILURE: "actionGetProductPublishFailure";
6
+ };
7
+ export declare const EVENTS_RESULT: {
8
+ readonly GET_PRODUCT_PUBLISH_RESULT: "resultGetProductPublish";
9
+ };
10
+ export declare const EVENTS: {
11
+ readonly GET_PRODUCT_PUBLISH_RESULT: "resultGetProductPublish";
12
+ readonly GET_PRODUCT_PUBLISH_FAILURE: "actionGetProductPublishFailure";
13
+ readonly PRODUCT_PUBLISH: "actionProductPublish";
14
+ };
@@ -0,0 +1,14 @@
1
+ export const EVENTS_ACTION = {
2
+ PRODUCT_PUBLISH: 'actionProductPublish',
3
+ };
4
+ export const EVENTS_NOTIFICATION = {
5
+ GET_PRODUCT_PUBLISH_FAILURE: 'actionGetProductPublishFailure',
6
+ };
7
+ export const EVENTS_RESULT = {
8
+ GET_PRODUCT_PUBLISH_RESULT: 'resultGetProductPublish',
9
+ };
10
+ export const EVENTS = {
11
+ ...EVENTS_ACTION,
12
+ ...EVENTS_NOTIFICATION,
13
+ ...EVENTS_RESULT,
14
+ };
@@ -0,0 +1,7 @@
1
+ import { IProductPublishModule } from '../../types/module/module.types';
2
+ import { BaseModule } from '../../modules/baseModule';
3
+ import { GetProductPublishPayload } from '../../modules/product-publish/types';
4
+ import { WithHandledResponses } from '../../helpers/typeHelper.types';
5
+ export declare class ProductPublishModule extends BaseModule implements WithHandledResponses<IProductPublishModule> {
6
+ productPublish(data: GetProductPublishPayload): Promise<import("../..").HandledResponse<import("../../modules/product-publish/types").ProductPublishData, Error>>;
7
+ }
@@ -0,0 +1,9 @@
1
+ import { BaseModule } from '../../modules/baseModule';
2
+ import { EVENTS_ACTION, } from '../../modules/product-publish/types';
3
+ import { handleResponse } from '../../helpers/responseHandler';
4
+ export class ProductPublishModule extends BaseModule {
5
+ async productPublish(data) {
6
+ const response = await this.sendRequest(EVENTS_ACTION.PRODUCT_PUBLISH, data).catch((e) => e);
7
+ return handleResponse(response, 'Failed to publish products');
8
+ }
9
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseModuleService } from '../../modules/baseModuleService';
2
+ import { GetProductPublishPayload } from '../../modules/product-publish/types';
3
+ export declare class ProductPublishService extends BaseModuleService {
4
+ private getProductPublishModule;
5
+ productPublish(data: GetProductPublishPayload): Promise<import("../..").HandledResponse<import("../../modules/product-publish/types").ProductPublishData, Error>>;
6
+ }
@@ -0,0 +1,11 @@
1
+ import { BaseModuleService } from '../../modules/baseModuleService';
2
+ import { MODULE_NAMES } from '../../modules/modules';
3
+ export class ProductPublishService extends BaseModuleService {
4
+ async getProductPublishModule() {
5
+ return this.ensureModuleLoaded(MODULE_NAMES.PRODUCT_PUBLISH);
6
+ }
7
+ async productPublish(data) {
8
+ const module = await this.getProductPublishModule();
9
+ return await module.productPublish(data);
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ import { EVENTS_ACTION } from '../../../../modules/product-publish/events';
2
+ import type { GetProductPublishPayload } from './actionEventPayload.types';
3
+ import { BaseActionEvent } from '../../../../types/event/action/actionEvent.types';
4
+ export type GetProductPublishAction = BaseActionEvent<typeof EVENTS_ACTION.PRODUCT_PUBLISH, GetProductPublishPayload>;
5
+ export type ActionEvent = GetProductPublishAction;
@@ -0,0 +1,8 @@
1
+ export interface GetProductPublishPayload {
2
+ blob: Blob | null;
3
+ publishData: {
4
+ productId: number;
5
+ variantIds: number[];
6
+ }[];
7
+ }
8
+ export type ActionEventPayload = GetProductPublishPayload;
@@ -0,0 +1,5 @@
1
+ import type { EVENTS_RESULT } from '../../../../modules/product-publish/events';
2
+ import type { ProductPublishResultPayload } from './resultEventPayload.types';
3
+ import { BaseResultEvent } from '../../../../types/event/result/resultEvent.types';
4
+ export type GetProductPublishResult = BaseResultEvent<typeof EVENTS_RESULT.GET_PRODUCT_PUBLISH_RESULT, ProductPublishResultPayload>;
5
+ export type ResultEvent = GetProductPublishResult;
@@ -0,0 +1,4 @@
1
+ export interface ProductPublishData {
2
+ productTemplateIds: number[];
3
+ }
4
+ export type ProductPublishResultPayload = ProductPublishData;
@@ -0,0 +1,6 @@
1
+ export * from './event/actionEvent.types';
2
+ export * from './event/actionEventPayload.types';
3
+ export * from './event/resultEvent.types';
4
+ export * from './event/resultEventPayload.types';
5
+ export * from '../../../modules/product-publish/events';
6
+ export * from './moduleConfig.types';
@@ -0,0 +1,9 @@
1
+ // Event types
2
+ export * from './event/actionEvent.types';
3
+ export * from './event/actionEventPayload.types';
4
+ export * from './event/resultEvent.types';
5
+ export * from './event/resultEventPayload.types';
6
+ // Event names
7
+ export * from '../../../modules/product-publish/events';
8
+ // Module config types
9
+ export * from './moduleConfig.types';
@@ -0,0 +1,2 @@
1
+ import { ActionEventPayload } from './event/actionEventPayload.types';
2
+ export type ProductPublishModuleConfigData = ActionEventPayload;
@@ -0,0 +1,13 @@
1
+ export declare const EVENTS_ACTION: {
2
+ readonly INITIALIZE_SDK: "actionInitializeSdk";
3
+ readonly LOAD_MODULE: "actionLoadModule";
4
+ };
5
+ export declare const EVENTS_NOTIFICATION: {
6
+ readonly SDK_INITIALIZATION_SUCCESS: "notificationSdkInitializationSuccess";
7
+ };
8
+ export declare const EVENTS_RESULT: {};
9
+ export declare const EVENTS: {
10
+ readonly SDK_INITIALIZATION_SUCCESS: "notificationSdkInitializationSuccess";
11
+ readonly INITIALIZE_SDK: "actionInitializeSdk";
12
+ readonly LOAD_MODULE: "actionLoadModule";
13
+ };
@@ -0,0 +1,13 @@
1
+ export const EVENTS_ACTION = {
2
+ INITIALIZE_SDK: 'actionInitializeSdk',
3
+ LOAD_MODULE: 'actionLoadModule',
4
+ };
5
+ export const EVENTS_NOTIFICATION = {
6
+ SDK_INITIALIZATION_SUCCESS: 'notificationSdkInitializationSuccess',
7
+ };
8
+ export const EVENTS_RESULT = {};
9
+ export const EVENTS = {
10
+ ...EVENTS_ACTION,
11
+ ...EVENTS_NOTIFICATION,
12
+ ...EVENTS_RESULT,
13
+ };
@@ -0,0 +1,7 @@
1
+ import { ISdkModule } from '../../types/module/module.types';
2
+ import { BaseModule } from '../../modules/baseModule';
3
+ import { InitializeSdkPayload } from './types';
4
+ import { NotificationEventPayload } from '../../types/event/notification/notificationEventPayload.types';
5
+ export declare class SdkModule extends BaseModule implements ISdkModule {
6
+ setup(payload?: InitializeSdkPayload): Promise<NotificationEventPayload>;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseModule } from '../../modules/baseModule';
2
+ import { EVENTS_ACTION } from './events';
3
+ export class SdkModule extends BaseModule {
4
+ async setup(payload) {
5
+ return await this.sendRequest(EVENTS_ACTION.INITIALIZE_SDK, payload);
6
+ }
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { ModuleName } from '../../../types/module/module.types';
2
+ import { ModuleConfig, ModuleConfigData } from '../../../types/module/moduleConfig.types';
3
+ export interface SdkConfig {
4
+ targetOrigin?: string;
5
+ modules?: ModuleConfig<ModuleName, ModuleConfigData | undefined>[];
6
+ debug?: boolean;
7
+ }
8
+ export interface SdkConfigWithVersion extends SdkConfig {
9
+ clientVersion: string;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { EVENTS_ACTION } from '../../../../modules/sdk/events';
2
+ import { InitializeSdkPayload, LoadModulePayload } from './actionEventPayload.types';
3
+ import { BaseActionEvent } from '../../../../types/event/action/actionEvent.types';
4
+ export type InitializeSdkAction = BaseActionEvent<typeof EVENTS_ACTION.INITIALIZE_SDK, InitializeSdkPayload>;
5
+ export type LoadModuleAction = BaseActionEvent<typeof EVENTS_ACTION.LOAD_MODULE, LoadModulePayload>;
6
+ export type ActionEvent = LoadModuleAction | InitializeSdkAction;
@@ -0,0 +1,6 @@
1
+ import { SdkConfig, SdkConfigWithVersion } from '../../../../modules/sdk/types/data.types';
2
+ import { ModuleName } from '../../../../types/module/module.types';
3
+ import type { ModuleConfig, ModuleConfigData } from '../../../../types/module/moduleConfig.types';
4
+ export type InitializeSdkPayload = SdkConfig | SdkConfigWithVersion;
5
+ export type LoadModulePayload = ModuleConfig<ModuleName, ModuleConfigData>;
6
+ export type ActionEventPayload = LoadModulePayload | InitializeSdkPayload;
@@ -0,0 +1,5 @@
1
+ export * from './data.types';
2
+ export * from './event/actionEvent.types';
3
+ export * from './event/actionEventPayload.types';
4
+ export * from '../../../modules/sdk/events';
5
+ export * from './moduleConfig.types';
@@ -0,0 +1,9 @@
1
+ // Data types
2
+ export * from './data.types';
3
+ // Event types
4
+ export * from './event/actionEvent.types';
5
+ export * from './event/actionEventPayload.types';
6
+ // Event names
7
+ export * from '../../../modules/sdk/events';
8
+ // Module configs
9
+ export * from './moduleConfig.types';
@@ -0,0 +1,2 @@
1
+ import { SdkConfig } from './data.types';
2
+ export type SdkModuleConfigData = SdkConfig;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { iFrameManager } from './iFrameManager';
2
+ import { ActionEvent, ActionEventName } from '../types/event/action/actionEvent.types';
3
+ import { ActionEventPayload } from '../types/event/action/actionEventPayload.types';
4
+ export declare class EmbedCommunicator {
5
+ #private;
6
+ private messageBroker;
7
+ private iFrameManager;
8
+ private isListening;
9
+ private constructor();
10
+ static getInstance(): EmbedCommunicator;
11
+ sendCorrelatedRequest<TReturn>(eventName: ActionEventName, payload?: ActionEventPayload): Promise<TReturn>;
12
+ setIFrameManager(iFrameManager: iFrameManager): void;
13
+ setupListener(): void;
14
+ private handleInboundMessageEvent;
15
+ private handleInboundEvent;
16
+ private handleInboundEventNotification;
17
+ private isNotificationSuccess;
18
+ private resolveSuccessfulEvent;
19
+ protected send(event: ActionEvent): void;
20
+ cleanup(): void;
21
+ }
@@ -0,0 +1,104 @@
1
+ import { MessageBroker } from './messageBroker';
2
+ import { EVENT_TYPES, isNotification, isResult } from '../modules/eventTypes';
3
+ import { LOG_TYPES, logEmbedMessage } from '../helpers/messageLogger';
4
+ export class EmbedCommunicator {
5
+ static #instance;
6
+ messageBroker = new MessageBroker();
7
+ iFrameManager = null;
8
+ isListening = false;
9
+ constructor() { }
10
+ static getInstance() {
11
+ if (!EmbedCommunicator.#instance) {
12
+ EmbedCommunicator.#instance = new EmbedCommunicator();
13
+ }
14
+ return EmbedCommunicator.#instance;
15
+ }
16
+ async sendCorrelatedRequest(eventName, payload) {
17
+ if (!this.isListening) {
18
+ logEmbedMessage({
19
+ message: 'Warn [sendCorrelatedRequest]: Communicator is not listening, response may be ignored!',
20
+ logType: LOG_TYPES.WARN,
21
+ });
22
+ }
23
+ const correlationId = this.messageBroker.generateCorrelationId();
24
+ const pendingMessagePromise = this.messageBroker.createPendingMessage(correlationId);
25
+ // Only action events supported as of now (and probably forever)
26
+ const actionEvent = {
27
+ name: eventName,
28
+ type: EVENT_TYPES.ACTION,
29
+ payload,
30
+ correlationId,
31
+ };
32
+ this.send(actionEvent);
33
+ return pendingMessagePromise;
34
+ }
35
+ setIFrameManager(iFrameManager) {
36
+ this.iFrameManager = iFrameManager;
37
+ }
38
+ setupListener() {
39
+ if (this.isListening) {
40
+ return;
41
+ }
42
+ window.addEventListener('message', (event) => {
43
+ this.handleInboundMessageEvent(event);
44
+ });
45
+ this.isListening = true;
46
+ }
47
+ handleInboundMessageEvent(event) {
48
+ logEmbedMessage({
49
+ message: ['Received message', event.data],
50
+ logType: LOG_TYPES.LOG,
51
+ });
52
+ if (!this.iFrameManager) {
53
+ throw new Error('iFrameManager not set');
54
+ }
55
+ // Only process messages from our iframe
56
+ if (!this.iFrameManager.isMessageFromIFrame(event)) {
57
+ return;
58
+ }
59
+ this.handleInboundEvent(event.data);
60
+ }
61
+ handleInboundEvent(event) {
62
+ if (!event.correlationId) {
63
+ throw new Error(`Fail [handleInboundEvent (${event.name})]: correlationId missing`);
64
+ }
65
+ // Result event gets inbound ONLY if there's nothing wrong.
66
+ // Otherwise it's a notification.
67
+ if (isResult(event)) {
68
+ this.resolveSuccessfulEvent(event);
69
+ return;
70
+ }
71
+ if (isNotification(event)) {
72
+ this.handleInboundEventNotification(event);
73
+ return;
74
+ }
75
+ throw new Error('Fail [handleInboundEvent]: Unsupported event type received!');
76
+ }
77
+ handleInboundEventNotification(event) {
78
+ if (this.isNotificationSuccess(event)) {
79
+ this.resolveSuccessfulEvent(event);
80
+ return;
81
+ }
82
+ this.messageBroker.rejectMessage(event.correlationId,
83
+ // Error should always be provided on a notification with fail status
84
+ event.payload);
85
+ }
86
+ isNotificationSuccess(event) {
87
+ if (!event.payload) {
88
+ throw new Error(`Fail [handleNotification (${event.name})] Payload missing!`);
89
+ }
90
+ return event.payload.status === 'success';
91
+ }
92
+ resolveSuccessfulEvent(event) {
93
+ this.messageBroker.resolveMessage(event.correlationId, event.payload);
94
+ }
95
+ send(event) {
96
+ if (!this.iFrameManager) {
97
+ throw new Error('iFrameManager not set');
98
+ }
99
+ this.iFrameManager.postMessage(event);
100
+ }
101
+ cleanup() {
102
+ this.messageBroker.clearAll();
103
+ }
104
+ }
@@ -0,0 +1,15 @@
1
+ export interface IFrameConfig {
2
+ baseUrl: string;
3
+ nonce: string;
4
+ style?: Partial<CSSStyleDeclaration>;
5
+ }
6
+ export declare class iFrameManager {
7
+ private config;
8
+ private iFrame;
9
+ private readonly targetOrigin;
10
+ constructor(config: IFrameConfig);
11
+ create(): Promise<HTMLIFrameElement>;
12
+ destroy(): void;
13
+ postMessage(message: unknown): void;
14
+ isMessageFromIFrame(event: MessageEvent): boolean;
15
+ }
@@ -0,0 +1,66 @@
1
+ export class iFrameManager {
2
+ config;
3
+ iFrame = null;
4
+ targetOrigin;
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.targetOrigin = new URL(config.baseUrl).origin;
8
+ }
9
+ async create() {
10
+ return new Promise((resolve, reject) => {
11
+ this.destroy();
12
+ const iFrame = document.createElement('iframe');
13
+ // Apply default styles
14
+ iFrame.style.display = 'none';
15
+ iFrame.style.position = 'fixed';
16
+ iFrame.style.width = '0';
17
+ iFrame.style.height = '0';
18
+ iFrame.style.border = 'none';
19
+ // Apply custom styles if provided
20
+ if (this.config.style) {
21
+ Object.assign(iFrame.style, this.config.style);
22
+ }
23
+ iFrame.src = `${this.config.baseUrl}?nonce=${encodeURIComponent(this.config.nonce)}`;
24
+ let settled = false;
25
+ const cleanup = () => {
26
+ settled = true;
27
+ iFrame.removeEventListener('load', onLoad);
28
+ iFrame.removeEventListener('error', onError);
29
+ };
30
+ const onLoad = () => {
31
+ if (!settled) {
32
+ cleanup();
33
+ this.iFrame = iFrame;
34
+ resolve(iFrame);
35
+ }
36
+ };
37
+ const onError = () => {
38
+ if (!settled) {
39
+ cleanup();
40
+ iFrame.remove();
41
+ reject(new Error('Failed to load communication iframe'));
42
+ }
43
+ };
44
+ iFrame.addEventListener('load', onLoad);
45
+ iFrame.addEventListener('error', onError);
46
+ document.body.appendChild(iFrame);
47
+ });
48
+ }
49
+ destroy() {
50
+ if (!this.iFrame) {
51
+ return;
52
+ }
53
+ this.iFrame.remove();
54
+ this.iFrame = null;
55
+ }
56
+ postMessage(message) {
57
+ if (!this.iFrame || !this.iFrame.contentWindow) {
58
+ throw new Error('Iframe not initialized');
59
+ }
60
+ this.iFrame.contentWindow.postMessage(message, this.targetOrigin);
61
+ }
62
+ isMessageFromIFrame(event) {
63
+ return (event.source === this.iFrame?.contentWindow &&
64
+ event.origin === this.targetOrigin);
65
+ }
66
+ }
@@ -0,0 +1,19 @@
1
+ import { EventPayload } from '../types/event/eventPayload.types';
2
+ import { NotificationEventPayload } from '../types/event/notification/notificationEventPayload.types';
3
+ export interface PendingMessage<T = unknown> {
4
+ resolve: (value: T) => void;
5
+ reject: (reason?: unknown) => void;
6
+ timestamp: number;
7
+ timeoutId?: ReturnType<typeof setTimeout>;
8
+ }
9
+ export declare class MessageBroker {
10
+ private pendingMessages;
11
+ private defaultTimeout;
12
+ generateCorrelationId(): string;
13
+ createPendingMessage<TReturn>(correlationId: string, timeout?: number): Promise<TReturn>;
14
+ resolveMessage(correlationId: string, data: EventPayload): boolean;
15
+ rejectMessage(correlationId: string, error?: NotificationEventPayload | Error): boolean;
16
+ hasPendingMessage(correlationId: string): boolean;
17
+ clearExpiredMessages(maxAge?: number): void;
18
+ clearAll(): void;
19
+ }
@@ -0,0 +1,60 @@
1
+ export class MessageBroker {
2
+ pendingMessages = new Map();
3
+ defaultTimeout = 30000; // 30 seconds
4
+ generateCorrelationId() {
5
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
6
+ }
7
+ createPendingMessage(correlationId, timeout = this.defaultTimeout) {
8
+ return new Promise((resolve, reject) => {
9
+ const timeoutId = setTimeout(() => {
10
+ this.rejectMessage(correlationId, new Error(`Request timeout after ${timeout}ms`));
11
+ }, timeout);
12
+ this.pendingMessages.set(correlationId, {
13
+ resolve: resolve,
14
+ reject,
15
+ timestamp: Date.now(),
16
+ timeoutId,
17
+ });
18
+ });
19
+ }
20
+ resolveMessage(correlationId, data) {
21
+ const pending = this.pendingMessages.get(correlationId);
22
+ if (!pending) {
23
+ return false;
24
+ }
25
+ if (pending.timeoutId) {
26
+ clearTimeout(pending.timeoutId);
27
+ }
28
+ pending.resolve(data);
29
+ this.pendingMessages.delete(correlationId);
30
+ return true;
31
+ }
32
+ rejectMessage(correlationId, error) {
33
+ const pending = this.pendingMessages.get(correlationId);
34
+ if (!pending) {
35
+ return false;
36
+ }
37
+ if (pending.timeoutId) {
38
+ clearTimeout(pending.timeoutId);
39
+ }
40
+ pending.reject(error);
41
+ this.pendingMessages.delete(correlationId);
42
+ return true;
43
+ }
44
+ hasPendingMessage(correlationId) {
45
+ return this.pendingMessages.has(correlationId);
46
+ }
47
+ clearExpiredMessages(maxAge = 60000) {
48
+ const now = Date.now();
49
+ for (const [correlationId, pending] of this.pendingMessages.entries()) {
50
+ if (now - pending.timestamp > maxAge) {
51
+ this.rejectMessage(correlationId, new Error('Message expired without response'));
52
+ }
53
+ }
54
+ }
55
+ clearAll() {
56
+ for (const [correlationId] of this.pendingMessages.entries()) {
57
+ this.rejectMessage(correlationId, new Error('Broker cleared'));
58
+ }
59
+ }
60
+ }
@@ -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,46 @@
1
+ import { EmbedCommunicator } from './embedCommunicator';
2
+ import { MODULES } from '../modules/modules';
3
+ import { EVENTS_ACTION } from '../modules/sdk/types';
4
+ import { LOG_TYPES, logEmbedMessage } from '../helpers/messageLogger';
5
+ export class ModuleLoaderService {
6
+ static instance;
7
+ communicator = EmbedCommunicator.getInstance();
8
+ moduleCache = new Map();
9
+ static getInstance() {
10
+ if (!ModuleLoaderService.instance) {
11
+ ModuleLoaderService.instance = new ModuleLoaderService();
12
+ }
13
+ return ModuleLoaderService.instance;
14
+ }
15
+ getModule(moduleName) {
16
+ if (!this.isModuleLoaded(moduleName)) {
17
+ const module = new MODULES[moduleName]();
18
+ this.moduleCache.set(moduleName, module);
19
+ }
20
+ return this.moduleCache.get(moduleName);
21
+ }
22
+ async loadModule(config) {
23
+ const notification = await this.communicator.sendCorrelatedRequest(EVENTS_ACTION.LOAD_MODULE, config);
24
+ logEmbedMessage({
25
+ message: ['Loaded module', notification],
26
+ logType: LOG_TYPES.LOG,
27
+ });
28
+ }
29
+ async ensureModuleLoaded(moduleName, config) {
30
+ if (!this.isModuleLoaded(moduleName)) {
31
+ await this.loadModule({
32
+ name: moduleName,
33
+ data: config,
34
+ });
35
+ const module = this.getModule(moduleName);
36
+ this.moduleCache.set(moduleName, module);
37
+ }
38
+ return this.moduleCache.get(moduleName);
39
+ }
40
+ clearCache() {
41
+ this.moduleCache.clear();
42
+ }
43
+ isModuleLoaded(moduleName) {
44
+ return this.moduleCache.has(moduleName);
45
+ }
46
+ }
@@ -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 @@
1
+ export {};