@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.
- package/README.md +198 -0
- package/dist/cjs/helpers/messageLogger.d.ts +20 -0
- package/dist/cjs/helpers/messageLogger.js +73 -0
- package/dist/cjs/helpers/responseHandler.d.ts +6 -0
- package/dist/cjs/helpers/responseHandler.js +28 -0
- package/dist/cjs/helpers/typeHelper.types.d.ts +10 -0
- package/dist/cjs/helpers/typeHelper.types.js +2 -0
- package/dist/cjs/index.d.ts +44 -0
- package/dist/cjs/index.js +157 -0
- package/dist/cjs/modules/baseModule.d.ts +7 -0
- package/dist/cjs/modules/baseModule.js +10 -0
- package/dist/cjs/modules/baseModuleService.d.ts +10 -0
- package/dist/cjs/modules/baseModuleService.js +11 -0
- package/dist/cjs/modules/catalog/catalogModule.d.ts +9 -0
- package/dist/cjs/modules/catalog/catalogModule.js +26 -0
- package/dist/cjs/modules/catalog/catalogService.d.ts +7 -0
- package/dist/cjs/modules/catalog/catalogService.js +23 -0
- package/dist/cjs/modules/catalog/events.d.ts +26 -0
- package/dist/cjs/modules/catalog/events.js +23 -0
- package/dist/cjs/modules/catalog/helpers/variantUtils.d.ts +7 -0
- package/dist/cjs/modules/catalog/helpers/variantUtils.js +38 -0
- package/dist/cjs/modules/catalog/types/data.types.d.ts +87 -0
- package/dist/cjs/modules/catalog/types/data.types.js +2 -0
- package/dist/cjs/modules/catalog/types/event/actionEvent.types.d.ts +7 -0
- package/dist/cjs/modules/catalog/types/event/actionEvent.types.js +2 -0
- package/dist/cjs/modules/catalog/types/event/actionEventPayload.types.d.ts +11 -0
- package/dist/cjs/modules/catalog/types/event/actionEventPayload.types.js +2 -0
- package/dist/cjs/modules/catalog/types/event/resultEvent.types.d.ts +7 -0
- package/dist/cjs/modules/catalog/types/event/resultEvent.types.js +2 -0
- package/dist/cjs/modules/catalog/types/event/resultEventPayload.types.d.ts +14 -0
- package/dist/cjs/modules/catalog/types/event/resultEventPayload.types.js +2 -0
- package/dist/cjs/modules/catalog/types/index.d.ts +7 -0
- package/dist/cjs/modules/catalog/types/index.js +26 -0
- package/dist/cjs/modules/catalog/types/moduleConfig.types.d.ts +9 -0
- package/dist/cjs/modules/catalog/types/moduleConfig.types.js +2 -0
- package/dist/cjs/modules/eventTypes.d.ts +9 -0
- package/dist/cjs/modules/eventTypes.js +20 -0
- package/dist/cjs/modules/events.d.ts +44 -0
- package/dist/cjs/modules/events.js +63 -0
- package/dist/cjs/modules/mockup-generation/events.d.ts +14 -0
- package/dist/cjs/modules/mockup-generation/events.js +17 -0
- package/dist/cjs/modules/mockup-generation/mockupGenerationModule.d.ts +7 -0
- package/dist/cjs/modules/mockup-generation/mockupGenerationModule.js +13 -0
- package/dist/cjs/modules/mockup-generation/mockupService.d.ts +6 -0
- package/dist/cjs/modules/mockup-generation/mockupService.js +15 -0
- package/dist/cjs/modules/mockup-generation/types/data.types.d.ts +31 -0
- package/dist/cjs/modules/mockup-generation/types/data.types.js +2 -0
- package/dist/cjs/modules/mockup-generation/types/event/actionEvent.types.d.ts +5 -0
- package/dist/cjs/modules/mockup-generation/types/event/actionEvent.types.js +2 -0
- package/dist/cjs/modules/mockup-generation/types/event/actionEventPayload.types.d.ts +11 -0
- package/dist/cjs/modules/mockup-generation/types/event/actionEventPayload.types.js +2 -0
- package/dist/cjs/modules/mockup-generation/types/event/resultEvent.types.d.ts +5 -0
- package/dist/cjs/modules/mockup-generation/types/event/resultEvent.types.js +2 -0
- package/dist/cjs/modules/mockup-generation/types/event/resultEventPayload.types.d.ts +5 -0
- package/dist/cjs/modules/mockup-generation/types/event/resultEventPayload.types.js +2 -0
- package/dist/cjs/modules/mockup-generation/types/index.d.ts +7 -0
- package/dist/cjs/modules/mockup-generation/types/index.js +27 -0
- package/dist/cjs/modules/mockup-generation/types/moduleConfig.types.d.ts +2 -0
- package/dist/cjs/modules/mockup-generation/types/moduleConfig.types.js +2 -0
- package/dist/cjs/modules/modules.d.ts +16 -0
- package/dist/cjs/modules/modules.js +19 -0
- package/dist/cjs/modules/product-publish/events.d.ts +14 -0
- package/dist/cjs/modules/product-publish/events.js +17 -0
- package/dist/cjs/modules/product-publish/productPublishModule.d.ts +7 -0
- package/dist/cjs/modules/product-publish/productPublishModule.js +13 -0
- package/dist/cjs/modules/product-publish/productPublishService.d.ts +6 -0
- package/dist/cjs/modules/product-publish/productPublishService.js +15 -0
- package/dist/cjs/modules/product-publish/types/event/actionEvent.types.d.ts +5 -0
- package/dist/cjs/modules/product-publish/types/event/actionEvent.types.js +2 -0
- package/dist/cjs/modules/product-publish/types/event/actionEventPayload.types.d.ts +8 -0
- package/dist/cjs/modules/product-publish/types/event/actionEventPayload.types.js +2 -0
- package/dist/cjs/modules/product-publish/types/event/resultEvent.types.d.ts +5 -0
- package/dist/cjs/modules/product-publish/types/event/resultEvent.types.js +2 -0
- package/dist/cjs/modules/product-publish/types/event/resultEventPayload.types.d.ts +4 -0
- package/dist/cjs/modules/product-publish/types/event/resultEventPayload.types.js +2 -0
- package/dist/cjs/modules/product-publish/types/index.d.ts +6 -0
- package/dist/cjs/modules/product-publish/types/index.js +25 -0
- package/dist/cjs/modules/product-publish/types/moduleConfig.types.d.ts +2 -0
- package/dist/cjs/modules/product-publish/types/moduleConfig.types.js +2 -0
- package/dist/cjs/modules/sdk/events.d.ts +13 -0
- package/dist/cjs/modules/sdk/events.js +16 -0
- package/dist/cjs/modules/sdk/sdkModule.d.ts +7 -0
- package/dist/cjs/modules/sdk/sdkModule.js +11 -0
- package/dist/cjs/modules/sdk/types/data.types.d.ts +10 -0
- package/dist/cjs/modules/sdk/types/data.types.js +2 -0
- package/dist/cjs/modules/sdk/types/event/actionEvent.types.d.ts +6 -0
- package/dist/cjs/modules/sdk/types/event/actionEvent.types.js +2 -0
- package/dist/cjs/modules/sdk/types/event/actionEventPayload.types.d.ts +6 -0
- package/dist/cjs/modules/sdk/types/event/actionEventPayload.types.js +2 -0
- package/dist/cjs/modules/sdk/types/index.d.ts +5 -0
- package/dist/cjs/modules/sdk/types/index.js +25 -0
- package/dist/cjs/modules/sdk/types/moduleConfig.types.d.ts +2 -0
- package/dist/cjs/modules/sdk/types/moduleConfig.types.js +2 -0
- package/dist/cjs/services/embedCommunicator.d.ts +21 -0
- package/dist/cjs/services/embedCommunicator.js +108 -0
- package/dist/cjs/services/iFrameManager.d.ts +15 -0
- package/dist/cjs/services/iFrameManager.js +70 -0
- package/dist/cjs/services/messageBroker.d.ts +19 -0
- package/dist/cjs/services/messageBroker.js +64 -0
- package/dist/cjs/services/moduleLoaderService.d.ts +16 -0
- package/dist/cjs/services/moduleLoaderService.js +50 -0
- package/dist/cjs/types/event/action/actionEvent.types.d.ts +11 -0
- package/dist/cjs/types/event/action/actionEvent.types.js +2 -0
- package/dist/cjs/types/event/action/actionEventPayload.types.d.ts +5 -0
- package/dist/cjs/types/event/action/actionEventPayload.types.js +2 -0
- package/dist/cjs/types/event/event.types.d.ts +15 -0
- package/dist/cjs/types/event/event.types.js +2 -0
- package/dist/cjs/types/event/eventPayload.types.d.ts +4 -0
- package/dist/cjs/types/event/eventPayload.types.js +2 -0
- package/dist/cjs/types/event/notification/notificationEvent.types.d.ts +6 -0
- package/dist/cjs/types/event/notification/notificationEvent.types.js +2 -0
- package/dist/cjs/types/event/notification/notificationEventPayload.types.d.ts +5 -0
- package/dist/cjs/types/event/notification/notificationEventPayload.types.js +2 -0
- package/dist/cjs/types/event/result/resultEvent.types.d.ts +10 -0
- package/dist/cjs/types/event/result/resultEvent.types.js +2 -0
- package/dist/cjs/types/event/result/resultEventPayload.types.d.ts +11 -0
- package/dist/cjs/types/event/result/resultEventPayload.types.js +2 -0
- package/dist/cjs/types/module/module.types.d.ts +22 -0
- package/dist/cjs/types/module/module.types.js +2 -0
- package/dist/cjs/types/module/moduleConfig.types.d.ts +10 -0
- package/dist/cjs/types/module/moduleConfig.types.js +2 -0
- package/dist/cjs/version.d.ts +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/esm/helpers/messageLogger.d.ts +20 -0
- package/dist/esm/helpers/messageLogger.js +68 -0
- package/dist/esm/helpers/responseHandler.d.ts +6 -0
- package/dist/esm/helpers/responseHandler.js +23 -0
- package/dist/esm/helpers/typeHelper.types.d.ts +10 -0
- package/dist/esm/helpers/typeHelper.types.js +1 -0
- package/dist/esm/index.d.ts +44 -0
- package/dist/esm/index.js +101 -0
- package/dist/esm/modules/baseModule.d.ts +7 -0
- package/dist/esm/modules/baseModule.js +6 -0
- package/dist/esm/modules/baseModuleService.d.ts +10 -0
- package/dist/esm/modules/baseModuleService.js +7 -0
- package/dist/esm/modules/catalog/catalogModule.d.ts +9 -0
- package/dist/esm/modules/catalog/catalogModule.js +22 -0
- package/dist/esm/modules/catalog/catalogService.d.ts +7 -0
- package/dist/esm/modules/catalog/catalogService.js +19 -0
- package/dist/esm/modules/catalog/events.d.ts +26 -0
- package/dist/esm/modules/catalog/events.js +20 -0
- package/dist/esm/modules/catalog/helpers/variantUtils.d.ts +7 -0
- package/dist/esm/modules/catalog/helpers/variantUtils.js +33 -0
- package/dist/esm/modules/catalog/types/data.types.d.ts +87 -0
- package/dist/esm/modules/catalog/types/data.types.js +1 -0
- package/dist/esm/modules/catalog/types/event/actionEvent.types.d.ts +7 -0
- package/dist/esm/modules/catalog/types/event/actionEvent.types.js +1 -0
- package/dist/esm/modules/catalog/types/event/actionEventPayload.types.d.ts +11 -0
- package/dist/esm/modules/catalog/types/event/actionEventPayload.types.js +1 -0
- package/dist/esm/modules/catalog/types/event/resultEvent.types.d.ts +7 -0
- package/dist/esm/modules/catalog/types/event/resultEvent.types.js +1 -0
- package/dist/esm/modules/catalog/types/event/resultEventPayload.types.d.ts +14 -0
- package/dist/esm/modules/catalog/types/event/resultEventPayload.types.js +1 -0
- package/dist/esm/modules/catalog/types/index.d.ts +7 -0
- package/dist/esm/modules/catalog/types/index.js +10 -0
- package/dist/esm/modules/catalog/types/moduleConfig.types.d.ts +9 -0
- package/dist/esm/modules/catalog/types/moduleConfig.types.js +1 -0
- package/dist/esm/modules/eventTypes.d.ts +9 -0
- package/dist/esm/modules/eventTypes.js +14 -0
- package/dist/esm/modules/events.d.ts +44 -0
- package/dist/esm/modules/events.js +27 -0
- package/dist/esm/modules/mockup-generation/events.d.ts +14 -0
- package/dist/esm/modules/mockup-generation/events.js +14 -0
- package/dist/esm/modules/mockup-generation/mockupGenerationModule.d.ts +7 -0
- package/dist/esm/modules/mockup-generation/mockupGenerationModule.js +9 -0
- package/dist/esm/modules/mockup-generation/mockupService.d.ts +6 -0
- package/dist/esm/modules/mockup-generation/mockupService.js +11 -0
- package/dist/esm/modules/mockup-generation/types/data.types.d.ts +31 -0
- package/dist/esm/modules/mockup-generation/types/data.types.js +1 -0
- package/dist/esm/modules/mockup-generation/types/event/actionEvent.types.d.ts +5 -0
- package/dist/esm/modules/mockup-generation/types/event/actionEvent.types.js +1 -0
- package/dist/esm/modules/mockup-generation/types/event/actionEventPayload.types.d.ts +11 -0
- package/dist/esm/modules/mockup-generation/types/event/actionEventPayload.types.js +1 -0
- package/dist/esm/modules/mockup-generation/types/event/resultEvent.types.d.ts +5 -0
- package/dist/esm/modules/mockup-generation/types/event/resultEvent.types.js +1 -0
- package/dist/esm/modules/mockup-generation/types/event/resultEventPayload.types.d.ts +5 -0
- package/dist/esm/modules/mockup-generation/types/event/resultEventPayload.types.js +1 -0
- package/dist/esm/modules/mockup-generation/types/index.d.ts +7 -0
- package/dist/esm/modules/mockup-generation/types/index.js +11 -0
- package/dist/esm/modules/mockup-generation/types/moduleConfig.types.d.ts +2 -0
- package/dist/esm/modules/mockup-generation/types/moduleConfig.types.js +1 -0
- package/dist/esm/modules/modules.d.ts +16 -0
- package/dist/esm/modules/modules.js +16 -0
- package/dist/esm/modules/product-publish/events.d.ts +14 -0
- package/dist/esm/modules/product-publish/events.js +14 -0
- package/dist/esm/modules/product-publish/productPublishModule.d.ts +7 -0
- package/dist/esm/modules/product-publish/productPublishModule.js +9 -0
- package/dist/esm/modules/product-publish/productPublishService.d.ts +6 -0
- package/dist/esm/modules/product-publish/productPublishService.js +11 -0
- package/dist/esm/modules/product-publish/types/event/actionEvent.types.d.ts +5 -0
- package/dist/esm/modules/product-publish/types/event/actionEvent.types.js +1 -0
- package/dist/esm/modules/product-publish/types/event/actionEventPayload.types.d.ts +8 -0
- package/dist/esm/modules/product-publish/types/event/actionEventPayload.types.js +1 -0
- package/dist/esm/modules/product-publish/types/event/resultEvent.types.d.ts +5 -0
- package/dist/esm/modules/product-publish/types/event/resultEvent.types.js +1 -0
- package/dist/esm/modules/product-publish/types/event/resultEventPayload.types.d.ts +4 -0
- package/dist/esm/modules/product-publish/types/event/resultEventPayload.types.js +1 -0
- package/dist/esm/modules/product-publish/types/index.d.ts +6 -0
- package/dist/esm/modules/product-publish/types/index.js +9 -0
- package/dist/esm/modules/product-publish/types/moduleConfig.types.d.ts +2 -0
- package/dist/esm/modules/product-publish/types/moduleConfig.types.js +1 -0
- package/dist/esm/modules/sdk/events.d.ts +13 -0
- package/dist/esm/modules/sdk/events.js +13 -0
- package/dist/esm/modules/sdk/sdkModule.d.ts +7 -0
- package/dist/esm/modules/sdk/sdkModule.js +7 -0
- package/dist/esm/modules/sdk/types/data.types.d.ts +10 -0
- package/dist/esm/modules/sdk/types/data.types.js +1 -0
- package/dist/esm/modules/sdk/types/event/actionEvent.types.d.ts +6 -0
- package/dist/esm/modules/sdk/types/event/actionEvent.types.js +1 -0
- package/dist/esm/modules/sdk/types/event/actionEventPayload.types.d.ts +6 -0
- package/dist/esm/modules/sdk/types/event/actionEventPayload.types.js +1 -0
- package/dist/esm/modules/sdk/types/index.d.ts +5 -0
- package/dist/esm/modules/sdk/types/index.js +9 -0
- package/dist/esm/modules/sdk/types/moduleConfig.types.d.ts +2 -0
- package/dist/esm/modules/sdk/types/moduleConfig.types.js +1 -0
- package/dist/esm/services/embedCommunicator.d.ts +21 -0
- package/dist/esm/services/embedCommunicator.js +104 -0
- package/dist/esm/services/iFrameManager.d.ts +15 -0
- package/dist/esm/services/iFrameManager.js +66 -0
- package/dist/esm/services/messageBroker.d.ts +19 -0
- package/dist/esm/services/messageBroker.js +60 -0
- package/dist/esm/services/moduleLoaderService.d.ts +16 -0
- package/dist/esm/services/moduleLoaderService.js +46 -0
- package/dist/esm/types/event/action/actionEvent.types.d.ts +11 -0
- package/dist/esm/types/event/action/actionEvent.types.js +1 -0
- package/dist/esm/types/event/action/actionEventPayload.types.d.ts +5 -0
- package/dist/esm/types/event/action/actionEventPayload.types.js +1 -0
- package/dist/esm/types/event/event.types.d.ts +15 -0
- package/dist/esm/types/event/event.types.js +1 -0
- package/dist/esm/types/event/eventPayload.types.d.ts +4 -0
- package/dist/esm/types/event/eventPayload.types.js +1 -0
- package/dist/esm/types/event/notification/notificationEvent.types.d.ts +6 -0
- package/dist/esm/types/event/notification/notificationEvent.types.js +1 -0
- package/dist/esm/types/event/notification/notificationEventPayload.types.d.ts +5 -0
- package/dist/esm/types/event/notification/notificationEventPayload.types.js +1 -0
- package/dist/esm/types/event/result/resultEvent.types.d.ts +10 -0
- package/dist/esm/types/event/result/resultEvent.types.js +1 -0
- package/dist/esm/types/event/result/resultEventPayload.types.d.ts +11 -0
- package/dist/esm/types/event/result/resultEventPayload.types.js +1 -0
- package/dist/esm/types/module/module.types.d.ts +22 -0
- package/dist/esm/types/module/module.types.js +1 -0
- package/dist/esm/types/module/moduleConfig.types.d.ts +10 -0
- package/dist/esm/types/module/moduleConfig.types.js +1 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/package.json +55 -0
- package/tsconfig.cjs.json +8 -0
- 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,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,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,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,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,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,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,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,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 @@
|
|
|
1
|
+
export declare const 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,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
|
+
}
|