@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,+CAAiE;AAAxD,2GAAA,WAAW,OAAA;AAEpB,wBAAwB;AACxB,iEAIiC;AAH/B,4HAAA,mBAAmB,OAAA;AAKrB,yBAAyB;AACzB,mEAMkC;AALhC,8HAAA,oBAAoB,OAAA;AAOtB,sCAAsC;AACtC,uEASoC;AAFlC,oIAAA,wBAAwB,OAAA;AACxB,iIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Interfaces for services that ThemeContentService depends on.
3
+ * These abstract the collection and product services that live in @afl/graphql,
4
+ * allowing @afl/core to remain independent while still using those services.
5
+ */
6
+ /**
7
+ * Money type for price data
8
+ */
9
+ export interface ThemeMoney {
10
+ amount: string;
11
+ currencyCode: string;
12
+ }
13
+ /**
14
+ * Image type for product images
15
+ */
16
+ export interface ThemeImage {
17
+ url: string;
18
+ altText?: string | null;
19
+ width: number;
20
+ height: number;
21
+ }
22
+ /**
23
+ * Product data structure returned by the product service
24
+ */
25
+ export interface ThemeProduct {
26
+ id: string;
27
+ title: string;
28
+ handle: string;
29
+ vendor?: string;
30
+ productType?: string;
31
+ featuredImage?: ThemeImage | null;
32
+ images: ThemeImage[];
33
+ priceRange: {
34
+ minVariantPrice: ThemeMoney;
35
+ maxVariantPrice: ThemeMoney;
36
+ };
37
+ variants: Array<{
38
+ id: string;
39
+ title: string;
40
+ availableForSale: boolean;
41
+ quantityAvailable?: number | null;
42
+ price: ThemeMoney;
43
+ compareAtPrice?: ThemeMoney | null;
44
+ selectedOptions: Array<{
45
+ name: string;
46
+ value: string;
47
+ }>;
48
+ image?: ThemeImage | null;
49
+ }>;
50
+ tags: string[];
51
+ }
52
+ /**
53
+ * Collection data structure returned by the collection service
54
+ */
55
+ export interface ThemeCollection {
56
+ id: string;
57
+ handle: string;
58
+ title: string;
59
+ description?: string;
60
+ productHandles?: string[];
61
+ }
62
+ /**
63
+ * Interface for product service operations needed by ThemeContentService
64
+ */
65
+ export interface IThemeProductService {
66
+ getProductByHandle(brand: string, handle: string): Promise<ThemeProduct | null>;
67
+ }
68
+ /**
69
+ * Interface for collection service operations needed by ThemeContentService
70
+ */
71
+ export interface IThemeCollectionService {
72
+ getCollectionByHandle(brand: string, handle: string, productsCount?: number): Promise<ThemeCollection | null>;
73
+ }
74
+ /**
75
+ * Injection tokens for the theme services
76
+ */
77
+ export declare const THEME_PRODUCT_SERVICE = "THEME_PRODUCT_SERVICE";
78
+ export declare const THEME_COLLECTION_SERVICE = "THEME_COLLECTION_SERVICE";
79
+ //# sourceMappingURL=theme-content.interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-content.interfaces.d.ts","sourceRoot":"","sources":["../../src/theme/theme-content.interfaces.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE;QACV,eAAe,EAAE,UAAU,CAAC;QAC5B,eAAe,EAAE,UAAU,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,OAAO,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,KAAK,EAAE,UAAU,CAAC;QAClB,cAAc,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;QACnC,eAAe,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qBAAqB,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Interfaces for services that ThemeContentService depends on.
4
+ * These abstract the collection and product services that live in @afl/graphql,
5
+ * allowing @afl/core to remain independent while still using those services.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.THEME_COLLECTION_SERVICE = exports.THEME_PRODUCT_SERVICE = void 0;
9
+ /**
10
+ * Injection tokens for the theme services
11
+ */
12
+ exports.THEME_PRODUCT_SERVICE = 'THEME_PRODUCT_SERVICE';
13
+ exports.THEME_COLLECTION_SERVICE = 'THEME_COLLECTION_SERVICE';
14
+ //# sourceMappingURL=theme-content.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-content.interfaces.js","sourceRoot":"","sources":["../../src/theme/theme-content.interfaces.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA6EH;;GAEG;AACU,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { CacheService } from '../cache/cache.service';
2
+ import { ConfigService } from '../config/config.service';
3
+ import { ShopifyThemeService } from '../integrations/shopify-theme';
4
+ import { IThemeCollectionService, IThemeProductService } from './theme-content.interfaces';
5
+ interface CuratedBlock {
6
+ type: string;
7
+ settings?: Record<string, unknown>;
8
+ blocks?: CuratedBlock[];
9
+ }
10
+ interface CuratedImage {
11
+ id: string;
12
+ url: string;
13
+ altText?: string;
14
+ width: number;
15
+ height: number;
16
+ }
17
+ interface CuratedMoney {
18
+ amount: string;
19
+ currencyCode: string;
20
+ }
21
+ interface CuratedProduct {
22
+ id: string;
23
+ title: string;
24
+ handle: string;
25
+ vendor?: string;
26
+ productType?: string;
27
+ featuredImage?: {
28
+ url: string;
29
+ altText?: string;
30
+ width?: number;
31
+ height?: number;
32
+ };
33
+ images?: CuratedImage[];
34
+ priceRange: {
35
+ minVariantPrice: CuratedMoney;
36
+ maxVariantPrice: CuratedMoney;
37
+ };
38
+ compareAtPrice?: CuratedMoney | null;
39
+ tags?: string[];
40
+ displayTag?: string | null;
41
+ }
42
+ interface CollectionRef {
43
+ handle: string;
44
+ productsCount: number;
45
+ }
46
+ interface ProductRef {
47
+ handle: string;
48
+ }
49
+ interface CuratedSection {
50
+ type: string;
51
+ blocks?: CuratedBlock[];
52
+ settings?: Record<string, unknown>;
53
+ products?: CuratedProduct[];
54
+ product?: CuratedProduct;
55
+ collectionRef?: CollectionRef;
56
+ productRef?: ProductRef;
57
+ }
58
+ export type CuratedThemeContent = CuratedSection[];
59
+ export interface ThemeContentResult {
60
+ data: CuratedThemeContent | null;
61
+ isStale: boolean;
62
+ triggeredRefresh: boolean;
63
+ }
64
+ export declare class ThemeContentService {
65
+ private readonly cacheService;
66
+ private readonly configService;
67
+ private readonly shopifyThemeService;
68
+ private readonly collectionService?;
69
+ private readonly productService?;
70
+ private refreshInProgress;
71
+ constructor(cacheService: CacheService, configService: ConfigService, shopifyThemeService: ShopifyThemeService, collectionService?: IThemeCollectionService | undefined, productService?: IThemeProductService | undefined);
72
+ /**
73
+ * Build cache key for theme content.
74
+ */
75
+ buildCacheKey(brand: string, path: string): string;
76
+ /**
77
+ * Get theme content with stale-while-revalidate semantics.
78
+ */
79
+ getContent(brand: string, path: string): Promise<ThemeContentResult>;
80
+ /**
81
+ * Refresh content in the background (non-blocking)
82
+ */
83
+ private refreshContentInBackground;
84
+ /**
85
+ * Fetch fresh content from Shopify and update cache.
86
+ */
87
+ fetchAndCacheContent(brand: string, path: string, options?: {
88
+ defaultTTL?: number;
89
+ staleTTL?: number;
90
+ }): Promise<CuratedThemeContent | null>;
91
+ /**
92
+ * Curates parsed theme content
93
+ */
94
+ private curateThemeContent;
95
+ /**
96
+ * Curates a single block, including nested blocks recursively.
97
+ */
98
+ private curateBlock;
99
+ /**
100
+ * Resolve collection references to actual products.
101
+ */
102
+ private resolveCollectionReferences;
103
+ /**
104
+ * Resolve product references to actual product data.
105
+ */
106
+ private resolveProductReferences;
107
+ /**
108
+ * Map ThemeProduct to CuratedProduct
109
+ */
110
+ private mapToCuratedProduct;
111
+ /**
112
+ * Compute displayTag from product tags.
113
+ */
114
+ private computeDisplayTag;
115
+ private resolveMediaReferences;
116
+ private extractShopifyReferences;
117
+ private fetchMediaUrls;
118
+ private resolveShopImages;
119
+ private resolveFilesApiMedia;
120
+ private readonly mediaFieldNames;
121
+ private isMediaUrl;
122
+ private replaceMediaReferences;
123
+ }
124
+ export {};
125
+ //# sourceMappingURL=theme-content.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-content.service.d.ts","sourceRoot":"","sources":["../../src/theme/theme-content.service.ts"],"names":[],"mappings":"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"}