@pvh-afl/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +97 -0
  2. package/dist/cache/cache.module.d.ts +3 -0
  3. package/dist/cache/cache.module.d.ts.map +1 -0
  4. package/dist/cache/cache.module.js +17 -0
  5. package/dist/cache/cache.module.js.map +1 -0
  6. package/dist/cache/cache.service.d.ts +38 -0
  7. package/dist/cache/cache.service.d.ts.map +1 -0
  8. package/dist/cache/cache.service.js +173 -0
  9. package/dist/cache/cache.service.js.map +1 -0
  10. package/dist/cache/index.d.ts +3 -0
  11. package/dist/cache/index.d.ts.map +1 -0
  12. package/dist/cache/index.js +6 -0
  13. package/dist/cache/index.js.map +1 -0
  14. package/dist/common/guards/tenant.guard.d.ts +8 -0
  15. package/dist/common/guards/tenant.guard.d.ts.map +1 -0
  16. package/dist/common/guards/tenant.guard.js +44 -0
  17. package/dist/common/guards/tenant.guard.js.map +1 -0
  18. package/dist/common/index.d.ts +3 -0
  19. package/dist/common/index.d.ts.map +1 -0
  20. package/dist/common/index.js +6 -0
  21. package/dist/common/index.js.map +1 -0
  22. package/dist/common/logger.d.ts +7 -0
  23. package/dist/common/logger.d.ts.map +1 -0
  24. package/dist/common/logger.js +28 -0
  25. package/dist/common/logger.js.map +1 -0
  26. package/dist/config/config.module.d.ts +3 -0
  27. package/dist/config/config.module.d.ts.map +1 -0
  28. package/dist/config/config.module.js +17 -0
  29. package/dist/config/config.module.js.map +1 -0
  30. package/dist/config/config.service.d.ts +55 -0
  31. package/dist/config/config.service.d.ts.map +1 -0
  32. package/dist/config/config.service.js +212 -0
  33. package/dist/config/config.service.js.map +1 -0
  34. package/dist/config/index.d.ts +3 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +6 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/index.d.ts +12 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +21 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/integrations/base-integration.service.d.ts +59 -0
  43. package/dist/integrations/base-integration.service.d.ts.map +1 -0
  44. package/dist/integrations/base-integration.service.js +227 -0
  45. package/dist/integrations/base-integration.service.js.map +1 -0
  46. package/dist/integrations/commerce/commerce.types.d.ts +301 -0
  47. package/dist/integrations/commerce/commerce.types.d.ts.map +1 -0
  48. package/dist/integrations/commerce/commerce.types.js +9 -0
  49. package/dist/integrations/commerce/commerce.types.js.map +1 -0
  50. package/dist/integrations/commerce/index.d.ts +4 -0
  51. package/dist/integrations/commerce/index.d.ts.map +1 -0
  52. package/dist/integrations/commerce/index.js +7 -0
  53. package/dist/integrations/commerce/index.js.map +1 -0
  54. package/dist/integrations/commerce/shopify-admin.service.d.ts +35 -0
  55. package/dist/integrations/commerce/shopify-admin.service.d.ts.map +1 -0
  56. package/dist/integrations/commerce/shopify-admin.service.js +269 -0
  57. package/dist/integrations/commerce/shopify-admin.service.js.map +1 -0
  58. package/dist/integrations/commerce/shopify.service.d.ts +43 -0
  59. package/dist/integrations/commerce/shopify.service.d.ts.map +1 -0
  60. package/dist/integrations/commerce/shopify.service.js +735 -0
  61. package/dist/integrations/commerce/shopify.service.js.map +1 -0
  62. package/dist/integrations/index.d.ts +9 -0
  63. package/dist/integrations/index.d.ts.map +1 -0
  64. package/dist/integrations/index.js +18 -0
  65. package/dist/integrations/index.js.map +1 -0
  66. package/dist/integrations/integration.factory.d.ts +23 -0
  67. package/dist/integrations/integration.factory.d.ts.map +1 -0
  68. package/dist/integrations/integration.factory.js +119 -0
  69. package/dist/integrations/integration.factory.js.map +1 -0
  70. package/dist/integrations/integration.types.d.ts +80 -0
  71. package/dist/integrations/integration.types.d.ts.map +1 -0
  72. package/dist/integrations/integration.types.js +9 -0
  73. package/dist/integrations/integration.types.js.map +1 -0
  74. package/dist/integrations/integrations.module.d.ts +3 -0
  75. package/dist/integrations/integrations.module.d.ts.map +1 -0
  76. package/dist/integrations/integrations.module.js +46 -0
  77. package/dist/integrations/integrations.module.js.map +1 -0
  78. package/dist/integrations/loyalty/capillary-auth.service.d.ts +30 -0
  79. package/dist/integrations/loyalty/capillary-auth.service.d.ts.map +1 -0
  80. package/dist/integrations/loyalty/capillary-auth.service.js +112 -0
  81. package/dist/integrations/loyalty/capillary-auth.service.js.map +1 -0
  82. package/dist/integrations/loyalty/capillary-coupon.service.d.ts +24 -0
  83. package/dist/integrations/loyalty/capillary-coupon.service.d.ts.map +1 -0
  84. package/dist/integrations/loyalty/capillary-coupon.service.js +383 -0
  85. package/dist/integrations/loyalty/capillary-coupon.service.js.map +1 -0
  86. package/dist/integrations/loyalty/capillary.types.d.ts +218 -0
  87. package/dist/integrations/loyalty/capillary.types.d.ts.map +1 -0
  88. package/dist/integrations/loyalty/capillary.types.js +21 -0
  89. package/dist/integrations/loyalty/capillary.types.js.map +1 -0
  90. package/dist/integrations/loyalty/index.d.ts +4 -0
  91. package/dist/integrations/loyalty/index.d.ts.map +1 -0
  92. package/dist/integrations/loyalty/index.js +7 -0
  93. package/dist/integrations/loyalty/index.js.map +1 -0
  94. package/dist/integrations/oms/index.d.ts +4 -0
  95. package/dist/integrations/oms/index.d.ts.map +1 -0
  96. package/dist/integrations/oms/index.js +7 -0
  97. package/dist/integrations/oms/index.js.map +1 -0
  98. package/dist/integrations/oms/omuni-auth.service.d.ts +29 -0
  99. package/dist/integrations/oms/omuni-auth.service.d.ts.map +1 -0
  100. package/dist/integrations/oms/omuni-auth.service.js +164 -0
  101. package/dist/integrations/oms/omuni-auth.service.js.map +1 -0
  102. package/dist/integrations/oms/omuni.service.d.ts +17 -0
  103. package/dist/integrations/oms/omuni.service.d.ts.map +1 -0
  104. package/dist/integrations/oms/omuni.service.js +128 -0
  105. package/dist/integrations/oms/omuni.service.js.map +1 -0
  106. package/dist/integrations/oms/omuni.types.d.ts +65 -0
  107. package/dist/integrations/oms/omuni.types.d.ts.map +1 -0
  108. package/dist/integrations/oms/omuni.types.js +3 -0
  109. package/dist/integrations/oms/omuni.types.js.map +1 -0
  110. package/dist/integrations/shopify-theme/index.d.ts +3 -0
  111. package/dist/integrations/shopify-theme/index.d.ts.map +1 -0
  112. package/dist/integrations/shopify-theme/index.js +6 -0
  113. package/dist/integrations/shopify-theme/index.js.map +1 -0
  114. package/dist/integrations/shopify-theme/shopify-theme.module.d.ts +3 -0
  115. package/dist/integrations/shopify-theme/shopify-theme.module.d.ts.map +1 -0
  116. package/dist/integrations/shopify-theme/shopify-theme.module.js +16 -0
  117. package/dist/integrations/shopify-theme/shopify-theme.module.js.map +1 -0
  118. package/dist/integrations/shopify-theme/shopify-theme.service.d.ts +35 -0
  119. package/dist/integrations/shopify-theme/shopify-theme.service.d.ts.map +1 -0
  120. package/dist/integrations/shopify-theme/shopify-theme.service.js +155 -0
  121. package/dist/integrations/shopify-theme/shopify-theme.service.js.map +1 -0
  122. package/dist/queue/index.d.ts +3 -0
  123. package/dist/queue/index.d.ts.map +1 -0
  124. package/dist/queue/index.js +8 -0
  125. package/dist/queue/index.js.map +1 -0
  126. package/dist/queue/queue.module.d.ts +3 -0
  127. package/dist/queue/queue.module.d.ts.map +1 -0
  128. package/dist/queue/queue.module.js +17 -0
  129. package/dist/queue/queue.module.js.map +1 -0
  130. package/dist/queue/queue.service.d.ts +20 -0
  131. package/dist/queue/queue.service.d.ts.map +1 -0
  132. package/dist/queue/queue.service.js +119 -0
  133. package/dist/queue/queue.service.js.map +1 -0
  134. package/dist/theme/header-content.service.d.ts +142 -0
  135. package/dist/theme/header-content.service.d.ts.map +1 -0
  136. package/dist/theme/header-content.service.js +626 -0
  137. package/dist/theme/header-content.service.js.map +1 -0
  138. package/dist/theme/index.d.ts +5 -0
  139. package/dist/theme/index.d.ts.map +1 -0
  140. package/dist/theme/index.js +17 -0
  141. package/dist/theme/index.js.map +1 -0
  142. package/dist/theme/theme-content.interfaces.d.ts +79 -0
  143. package/dist/theme/theme-content.interfaces.d.ts.map +1 -0
  144. package/dist/theme/theme-content.interfaces.js +14 -0
  145. package/dist/theme/theme-content.interfaces.js.map +1 -0
  146. package/dist/theme/theme-content.service.d.ts +125 -0
  147. package/dist/theme/theme-content.service.d.ts.map +1 -0
  148. package/dist/theme/theme-content.service.js +738 -0
  149. package/dist/theme/theme-content.service.js.map +1 -0
  150. package/dist/theme/theme.module.d.ts +46 -0
  151. package/dist/theme/theme.module.d.ts.map +1 -0
  152. package/dist/theme/theme.module.js +76 -0
  153. package/dist/theme/theme.module.js.map +1 -0
  154. package/package.json +62 -0
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./capillary.types"), exports);
5
+ tslib_1.__exportStar(require("./capillary-auth.service"), exports);
6
+ tslib_1.__exportStar(require("./capillary-coupon.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/loyalty/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,mEAAyC;AACzC,qEAA2C"}
@@ -0,0 +1,4 @@
1
+ export * from './omuni.types';
2
+ export * from './omuni-auth.service';
3
+ export * from './omuni.service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/oms/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./omuni.types"), exports);
5
+ tslib_1.__exportStar(require("./omuni-auth.service"), exports);
6
+ tslib_1.__exportStar(require("./omuni.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/oms/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,+DAAqC;AACrC,0DAAgC"}
@@ -0,0 +1,29 @@
1
+ import { CacheService } from '../../cache/cache.service';
2
+ import { ConfigService } from '../../config/config.service';
3
+ /**
4
+ * Omuni Authentication Service
5
+ *
6
+ * Handles OAuth token management with Redis caching.
7
+ */
8
+ export declare class OmuniAuthService {
9
+ private readonly cacheService;
10
+ private readonly configService;
11
+ private tokenLocks;
12
+ private readonly ACCESS_TOKEN_TTL;
13
+ private readonly ACCESS_TOKEN_STALE_TTL;
14
+ private readonly REFRESH_TOKEN_TTL;
15
+ private readonly REFRESH_TOKEN_STALE_TTL;
16
+ constructor(cacheService: CacheService, configService: ConfigService);
17
+ getValidAccessToken(brand: string): Promise<string>;
18
+ private acquireTokenWithLock;
19
+ private refreshOrGenerate;
20
+ private refreshInBackground;
21
+ private generateToken;
22
+ private refreshToken;
23
+ private cacheTokens;
24
+ private getOmuniConfig;
25
+ getWarehouseId(brand: string): string | undefined;
26
+ private getAccessTokenKey;
27
+ private getRefreshTokenKey;
28
+ }
29
+ //# sourceMappingURL=omuni-auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni-auth.service.d.ts","sourceRoot":"","sources":["../../../src/integrations/oms/omuni-auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D;;;;GAIG;AACH,qBACa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAThC,OAAO,CAAC,UAAU,CAAsC;IAExD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAO;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqB;gBAG1C,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa;IAGzC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAgB3C,oBAAoB;YAgBpB,iBAAiB;IAsB/B,OAAO,CAAC,mBAAmB;YAab,aAAa;YA6Bb,YAAY;YA6BZ,WAAW;IAiBzB,OAAO,CAAC,cAAc;IAuBtB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjD,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmuniAuthService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const cache_service_1 = require("../../cache/cache.service");
7
+ const config_service_1 = require("../../config/config.service");
8
+ const logger_1 = require("../../common/logger");
9
+ /**
10
+ * Omuni Authentication Service
11
+ *
12
+ * Handles OAuth token management with Redis caching.
13
+ */
14
+ let OmuniAuthService = class OmuniAuthService {
15
+ cacheService;
16
+ configService;
17
+ tokenLocks = new Map();
18
+ ACCESS_TOKEN_TTL = 480; // 8 minutes
19
+ ACCESS_TOKEN_STALE_TTL = 360; // 6 minutes
20
+ REFRESH_TOKEN_TTL = 60 * 24 * 60 * 60; // 60 days
21
+ REFRESH_TOKEN_STALE_TTL = 50 * 24 * 60 * 60; // 50 days
22
+ constructor(cacheService, configService) {
23
+ this.cacheService = cacheService;
24
+ this.configService = configService;
25
+ }
26
+ async getValidAccessToken(brand) {
27
+ const cacheKey = this.getAccessTokenKey(brand);
28
+ const cached = await this.cacheService.get(cacheKey);
29
+ if (cached && !cached.isStale) {
30
+ return cached.data;
31
+ }
32
+ if (cached?.isStale) {
33
+ this.refreshInBackground(brand);
34
+ return cached.data;
35
+ }
36
+ return this.acquireTokenWithLock(brand);
37
+ }
38
+ async acquireTokenWithLock(brand) {
39
+ const existingLock = this.tokenLocks.get(brand);
40
+ if (existingLock) {
41
+ return existingLock;
42
+ }
43
+ const refreshPromise = this.refreshOrGenerate(brand);
44
+ this.tokenLocks.set(brand, refreshPromise);
45
+ try {
46
+ return await refreshPromise;
47
+ }
48
+ finally {
49
+ this.tokenLocks.delete(brand);
50
+ }
51
+ }
52
+ async refreshOrGenerate(brand) {
53
+ const refreshTokenKey = this.getRefreshTokenKey(brand);
54
+ const cachedRefreshToken = await this.cacheService.get(refreshTokenKey);
55
+ if (cachedRefreshToken) {
56
+ try {
57
+ const tokens = await this.refreshToken(brand, cachedRefreshToken.data);
58
+ await this.cacheTokens(brand, tokens);
59
+ return tokens.accessToken;
60
+ }
61
+ catch (error) {
62
+ logger_1.logger.warn('Omuni token refresh failed, re-authenticating', {
63
+ brand,
64
+ error: error instanceof Error ? error.message : 'Unknown',
65
+ });
66
+ }
67
+ }
68
+ const tokens = await this.generateToken(brand);
69
+ await this.cacheTokens(brand, tokens);
70
+ return tokens.accessToken;
71
+ }
72
+ refreshInBackground(brand) {
73
+ if (this.tokenLocks.has(brand)) {
74
+ return;
75
+ }
76
+ this.acquireTokenWithLock(brand).catch((error) => {
77
+ logger_1.logger.error('Background token refresh failed', {
78
+ brand,
79
+ error: error instanceof Error ? error.message : 'Unknown',
80
+ });
81
+ });
82
+ }
83
+ async generateToken(brand) {
84
+ const config = this.getOmuniConfig(brand);
85
+ const url = `${config.baseUrl}/token`;
86
+ logger_1.logger.info('Generating Omuni token', { brand });
87
+ const response = await fetch(url, {
88
+ method: 'POST',
89
+ headers: { 'Content-Type': 'application/json' },
90
+ body: JSON.stringify({
91
+ username: config.username,
92
+ password: config.password,
93
+ }),
94
+ });
95
+ if (!response.ok) {
96
+ const error = await response.text();
97
+ throw new Error(`Token generation failed: ${error}`);
98
+ }
99
+ const data = (await response.json());
100
+ if (data.status_code !== 200) {
101
+ throw new Error(`Token generation failed: ${data.message}`);
102
+ }
103
+ logger_1.logger.info('Omuni token generated successfully', { brand });
104
+ return data;
105
+ }
106
+ async refreshToken(brand, refreshToken) {
107
+ const config = this.getOmuniConfig(brand);
108
+ const url = `${config.baseUrl}/refresh-token`;
109
+ logger_1.logger.info('Refreshing Omuni token', { brand });
110
+ const response = await fetch(url, {
111
+ method: 'POST',
112
+ headers: { 'Content-Type': 'application/json' },
113
+ body: JSON.stringify({ refresh_token: refreshToken }),
114
+ });
115
+ if (!response.ok) {
116
+ const error = await response.text();
117
+ throw new Error(`Token refresh failed: ${error}`);
118
+ }
119
+ const data = (await response.json());
120
+ if (data.status_code !== 200) {
121
+ throw new Error(`Token refresh failed: ${data.message}`);
122
+ }
123
+ logger_1.logger.info('Omuni token refreshed successfully', { brand });
124
+ return data;
125
+ }
126
+ async cacheTokens(brand, tokens) {
127
+ await Promise.all([
128
+ this.cacheService.set(this.getAccessTokenKey(brand), tokens.accessToken, this.ACCESS_TOKEN_TTL, this.ACCESS_TOKEN_STALE_TTL),
129
+ this.cacheService.set(this.getRefreshTokenKey(brand), tokens.refreshToken, this.REFRESH_TOKEN_TTL, this.REFRESH_TOKEN_STALE_TTL),
130
+ ]);
131
+ }
132
+ getOmuniConfig(brand) {
133
+ const brandConfig = this.configService.getBrand(brand);
134
+ const omsConfig = brandConfig?.integrations?.oms;
135
+ if (!omsConfig) {
136
+ throw new Error(`Omuni OMS not configured for brand: ${brand}`);
137
+ }
138
+ const options = omsConfig.options ?? {};
139
+ return {
140
+ baseUrl: omsConfig.baseUrl,
141
+ username: options.username,
142
+ password: options.password,
143
+ warehouseId: options.warehouseId,
144
+ };
145
+ }
146
+ getWarehouseId(brand) {
147
+ const brandConfig = this.configService.getBrand(brand);
148
+ const omsConfig = brandConfig?.integrations?.oms;
149
+ return omsConfig?.options?.warehouseId;
150
+ }
151
+ getAccessTokenKey(brand) {
152
+ return `${brand}:omuni:access_token`;
153
+ }
154
+ getRefreshTokenKey(brand) {
155
+ return `${brand}:omuni:refresh_token`;
156
+ }
157
+ };
158
+ exports.OmuniAuthService = OmuniAuthService;
159
+ exports.OmuniAuthService = OmuniAuthService = tslib_1.__decorate([
160
+ (0, common_1.Injectable)(),
161
+ tslib_1.__metadata("design:paramtypes", [cache_service_1.CacheService,
162
+ config_service_1.ConfigService])
163
+ ], OmuniAuthService);
164
+ //# sourceMappingURL=omuni-auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni-auth.service.js","sourceRoot":"","sources":["../../../src/integrations/oms/omuni-auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseIntegrationService } from '../base-integration.service';
2
+ import { IntegrationResponse } from '../integration.types';
3
+ import { OmuniAuthService } from './omuni-auth.service';
4
+ import { IOmsService, OmuniServiceabilityRequest, OmuniServiceabilityResponse } from './omuni.types';
5
+ /**
6
+ * Omuni OMS Service
7
+ *
8
+ * Provides integration with Omuni's Order Management System.
9
+ */
10
+ export declare class OmuniService extends BaseIntegrationService implements IOmsService {
11
+ private readonly authService;
12
+ readonly name = "omuni";
13
+ constructor(authService: OmuniAuthService);
14
+ checkServiceability(request: OmuniServiceabilityRequest): Promise<IntegrationResponse<OmuniServiceabilityResponse>>;
15
+ private requestWithAuth;
16
+ }
17
+ //# sourceMappingURL=omuni.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni.service.d.ts","sourceRoot":"","sources":["../../../src/integrations/oms/omuni.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AACH,qBACa,YAAa,SAAQ,sBAAuB,YAAW,WAAW;IAGjE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFxC,QAAQ,CAAC,IAAI,WAAW;gBAEK,WAAW,EAAE,gBAAgB;IAIpD,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,CAAC;YA6D9C,eAAe;CAkE9B"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmuniService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const base_integration_service_1 = require("../base-integration.service");
7
+ const omuni_auth_service_1 = require("./omuni-auth.service");
8
+ const logger_1 = require("../../common/logger");
9
+ /**
10
+ * Omuni OMS Service
11
+ *
12
+ * Provides integration with Omuni's Order Management System.
13
+ */
14
+ let OmuniService = class OmuniService extends base_integration_service_1.BaseIntegrationService {
15
+ authService;
16
+ name = 'omuni';
17
+ constructor(authService) {
18
+ super();
19
+ this.authService = authService;
20
+ }
21
+ async checkServiceability(request) {
22
+ if (!this.config) {
23
+ return {
24
+ success: false,
25
+ error: {
26
+ code: 'NOT_CONFIGURED',
27
+ message: `Integration ${this.name} is not configured for brand ${this.brand}`,
28
+ },
29
+ };
30
+ }
31
+ try {
32
+ const accessToken = await this.authService.getValidAccessToken(this.brand);
33
+ const warehouseId = request.warehouseId ?? this.authService.getWarehouseId(this.brand);
34
+ const payload = {
35
+ ...request,
36
+ warehouseId,
37
+ coordinates: request.coordinates ?? { latitude: '', longitude: '' },
38
+ deliveryMode: request.deliveryMode ?? ['standard', 'sdd', 'ndd'],
39
+ };
40
+ logger_1.logger.info('Checking serviceability', {
41
+ brand: this.brand,
42
+ location: request.location,
43
+ itemCount: request.items.length,
44
+ });
45
+ const response = await this.requestWithAuth(accessToken, 'POST', '/order/checkServiceability', payload);
46
+ if (response.success) {
47
+ logger_1.logger.info('Serviceability check successful', {
48
+ brand: this.brand,
49
+ location: request.location,
50
+ resultCount: response.data?.items?.length ?? 0,
51
+ });
52
+ }
53
+ return response;
54
+ }
55
+ catch (error) {
56
+ logger_1.logger.error('Serviceability check failed', {
57
+ brand: this.brand,
58
+ error: error instanceof Error ? error.message : 'Unknown error',
59
+ });
60
+ return {
61
+ success: false,
62
+ error: {
63
+ code: 'SERVICEABILITY_CHECK_FAILED',
64
+ message: error instanceof Error ? error.message : 'Serviceability check failed',
65
+ details: error,
66
+ },
67
+ };
68
+ }
69
+ }
70
+ async requestWithAuth(accessToken, method, path, body) {
71
+ if (!this.config) {
72
+ return {
73
+ success: false,
74
+ error: {
75
+ code: 'NOT_CONFIGURED',
76
+ message: `Integration ${this.name} is not configured`,
77
+ },
78
+ };
79
+ }
80
+ const url = `${this.config.baseUrl}${path}`;
81
+ const headers = {
82
+ 'Content-Type': 'application/json',
83
+ Authorization: `Bearer ${accessToken}`,
84
+ };
85
+ try {
86
+ const controller = new AbortController();
87
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout ?? 10000);
88
+ const response = await fetch(url, {
89
+ method,
90
+ headers,
91
+ body: body ? JSON.stringify(body) : undefined,
92
+ signal: controller.signal,
93
+ });
94
+ clearTimeout(timeoutId);
95
+ if (!response.ok) {
96
+ const errorBody = await response.text();
97
+ return {
98
+ success: false,
99
+ error: this.normalizeError(response.status, errorBody),
100
+ };
101
+ }
102
+ const data = await response.json();
103
+ return { success: true, data: data };
104
+ }
105
+ catch (error) {
106
+ logger_1.logger.error(`${this.name} authenticated request failed`, {
107
+ brand: this.brand,
108
+ method,
109
+ path,
110
+ error: error instanceof Error ? error.message : 'Unknown error',
111
+ });
112
+ return {
113
+ success: false,
114
+ error: {
115
+ code: 'REQUEST_FAILED',
116
+ message: error instanceof Error ? error.message : 'Request failed',
117
+ details: error,
118
+ },
119
+ };
120
+ }
121
+ }
122
+ };
123
+ exports.OmuniService = OmuniService;
124
+ exports.OmuniService = OmuniService = tslib_1.__decorate([
125
+ (0, common_1.Injectable)(),
126
+ tslib_1.__metadata("design:paramtypes", [omuni_auth_service_1.OmuniAuthService])
127
+ ], OmuniService);
128
+ //# sourceMappingURL=omuni.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni.service.js","sourceRoot":"","sources":["../../../src/integrations/oms/omuni.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,0EAAqE;AAErE,6DAAwD;AAMxD,gDAA6C;AAE7C;;;;GAIG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,iDAAsB;IAGzB;IAFpB,IAAI,GAAG,OAAO,CAAC;IAExB,YAA6B,WAA6B;QACxD,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAkB;IAE1D,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,eAAe,IAAI,CAAC,IAAI,gCAAgC,IAAI,CAAC,KAAK,EAAE;iBAC9E;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvF,MAAM,OAAO,GAA+B;gBAC1C,GAAG,OAAO;gBACV,WAAW;gBACX,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;gBACnE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;aACjE,CAAC;YAEF,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;aAChC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CACzC,WAAW,EACX,MAAM,EACN,4BAA4B,EAC5B,OAAO,CACR,CAAC;YAEF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,eAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;oBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;oBAC/E,OAAO,EAAE,KAAK;iBACf;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,MAAmD,EACnD,IAAY,EACZ,IAAc;QAEd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,eAAe,IAAI,CAAC,IAAI,oBAAoB;iBACtD;aACF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,WAAW,EAAE;SACvC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAC7B,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;iBACvD,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAS,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,+BAA+B,EAAE;gBACxD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM;gBACN,IAAI;gBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;oBAClE,OAAO,EAAE,KAAK;iBACf;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAxIY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;6CAI+B,qCAAgB;GAH/C,YAAY,CAwIxB"}
@@ -0,0 +1,65 @@
1
+ import { IntegrationResponse } from '../integration.types';
2
+ /**
3
+ * Omuni OMS Integration Types
4
+ */
5
+ export interface OmuniTokenRequest {
6
+ username: string;
7
+ password: string;
8
+ }
9
+ export interface OmuniRefreshRequest {
10
+ refresh_token: string;
11
+ }
12
+ export interface OmuniTokenResponse {
13
+ message: string;
14
+ status: string;
15
+ accessToken: string;
16
+ refreshToken: string;
17
+ status_code: number;
18
+ }
19
+ export interface OmuniServiceabilityItem {
20
+ skuId: string;
21
+ eoisSkuID?: string;
22
+ quantity: number;
23
+ sellerId?: string;
24
+ }
25
+ export interface OmuniCoordinates {
26
+ latitude?: string;
27
+ longitude?: string;
28
+ }
29
+ export interface OmuniServiceabilityRequest {
30
+ location: string;
31
+ coordinates?: OmuniCoordinates;
32
+ storePickup?: string;
33
+ warehouseId?: string;
34
+ deliveryMode?: string[];
35
+ items: OmuniServiceabilityItem[];
36
+ }
37
+ export interface OmuniDeliveryCost {
38
+ currencyIso: string;
39
+ value: number;
40
+ }
41
+ export interface OmuniDeliveryMode {
42
+ deliveryType: string;
43
+ paymentType: string;
44
+ deliveryTime: string;
45
+ deliveryCost: OmuniDeliveryCost;
46
+ courierName: string;
47
+ fCenterId: string;
48
+ deliveryDate: string;
49
+ }
50
+ export interface OmuniServiceabilityResult {
51
+ skuId: string;
52
+ eoisSkuID?: string;
53
+ deliverymodes: OmuniDeliveryMode[];
54
+ }
55
+ export interface OmuniServiceabilityResponse {
56
+ items: OmuniServiceabilityResult[];
57
+ }
58
+ export interface IOmsService {
59
+ checkServiceability(request: OmuniServiceabilityRequest): Promise<IntegrationResponse<OmuniServiceabilityResponse>>;
60
+ }
61
+ export interface CachedToken {
62
+ token: string;
63
+ expiresAt: number;
64
+ }
65
+ //# sourceMappingURL=omuni.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni.types.d.ts","sourceRoot":"","sources":["../../../src/integrations/oms/omuni.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AAGH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC;AAGD,MAAM,WAAW,WAAW;IAC1B,mBAAmB,CACjB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,CAAC,CAAC;CAC9D;AAGD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=omuni.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omuni.types.js","sourceRoot":"","sources":["../../../src/integrations/oms/omuni.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './shopify-theme.module';
2
+ export * from './shopify-theme.service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/shopify-theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./shopify-theme.module"), exports);
5
+ tslib_1.__exportStar(require("./shopify-theme.service"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/shopify-theme/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,kEAAwC"}
@@ -0,0 +1,3 @@
1
+ export declare class ShopifyThemeModule {
2
+ }
3
+ //# sourceMappingURL=shopify-theme.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify-theme.module.d.ts","sourceRoot":"","sources":["../../../src/integrations/shopify-theme/shopify-theme.module.ts"],"names":[],"mappings":"AAGA,qBAIa,kBAAkB;CAAG"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShopifyThemeModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const shopify_theme_service_1 = require("./shopify-theme.service");
7
+ let ShopifyThemeModule = class ShopifyThemeModule {
8
+ };
9
+ exports.ShopifyThemeModule = ShopifyThemeModule;
10
+ exports.ShopifyThemeModule = ShopifyThemeModule = tslib_1.__decorate([
11
+ (0, common_1.Module)({
12
+ providers: [shopify_theme_service_1.ShopifyThemeService],
13
+ exports: [shopify_theme_service_1.ShopifyThemeService],
14
+ })
15
+ ], ShopifyThemeModule);
16
+ //# sourceMappingURL=shopify-theme.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify-theme.module.js","sourceRoot":"","sources":["../../../src/integrations/shopify-theme/shopify-theme.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,mEAA8D;AAMvD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAJ9B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,2CAAmB,CAAC;QAChC,OAAO,EAAE,CAAC,2CAAmB,CAAC;KAC/B,CAAC;GACW,kBAAkB,CAAG"}
@@ -0,0 +1,35 @@
1
+ import { ConfigService } from '../../config/config.service';
2
+ import { CacheService } from '../../cache/cache.service';
3
+ /**
4
+ * Shopify Theme Service
5
+ *
6
+ * Fetches content from Shopify theme assets (JSON files).
7
+ * Used for CMS-like content stored in theme files.
8
+ */
9
+ export declare class ShopifyThemeService {
10
+ private readonly configService;
11
+ private readonly cacheService;
12
+ constructor(configService: ConfigService, cacheService: CacheService);
13
+ /**
14
+ * Fetch a JSON asset from the Shopify theme.
15
+ */
16
+ getThemeAsset<T>(brand: string, assetKey: string): Promise<T | null>;
17
+ /**
18
+ * Invalidate cached theme asset.
19
+ */
20
+ invalidateAsset(brand: string, assetKey: string): Promise<void>;
21
+ /**
22
+ * Invalidate all theme assets for a brand.
23
+ */
24
+ invalidateAllAssets(brand: string): Promise<number>;
25
+ /**
26
+ * Build cache key for theme content.
27
+ */
28
+ buildCacheKey(brand: string, path: string): string;
29
+ /**
30
+ * Fetch a theme file directly without caching.
31
+ * Used by services that handle their own caching logic.
32
+ */
33
+ fetchThemeFile<T>(brand: string, path: string): Promise<T | null>;
34
+ }
35
+ //# sourceMappingURL=shopify-theme.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify-theme.service.d.ts","sourceRoot":"","sources":["../../../src/integrations/shopify-theme/shopify-theme.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;GAKG;AACH,qBACa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY;IAG7C;;OAEG;IACG,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmE1E;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlD;;;OAGG;IACG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CA+CxE"}