@pvh-afl/core 1.1.16 → 1.1.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../src/config/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,WAAW,CAAC,EAAE;YACZ,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,qBACa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAuB;IAE9C;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM;IAIrC,YAAY;IAKZ,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,WAAW;IA8FnB,OAAO,CAAC,cAAc;IAatB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,YAAY,IAAI,MAAM,EAAE;IAKxB,iBAAiB,IAAI,OAAO;IAI5B,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B,oBAAoB,IAAI,WAAW,GAAG,SAAS;IAM/C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAK7D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAmBvD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOxD,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOrD,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOzD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOxD,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO7D,WAAW,IAAI,MAAM;IAKrB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAUrE,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QACtC,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAWD,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QACtC,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;KAClB;CASF"}
1
+ {"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../src/config/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,WAAW,CAAC,EAAE;YACZ,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,qBACa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAuB;IAE9C;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM;IAIrC,YAAY;IAKZ,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,WAAW;IAwGnB,OAAO,CAAC,cAAc;IAatB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,YAAY,IAAI,MAAM,EAAE;IAKxB,iBAAiB,IAAI,OAAO;IAI5B,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B,oBAAoB,IAAI,WAAW,GAAG,SAAS;IAM/C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAK7D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAmBvD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOxD,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOrD,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOzD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOxD,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO7D,WAAW,IAAI,MAAM;IAKrB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAUrE,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QACtC,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAWD,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QACtC,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;KAClB;CASF"}
@@ -153,6 +153,16 @@ let ConfigService = class ConfigService {
153
153
  adminToken: getEnv("TOMMY_SWISH_ADMIN_TOKEN") || "",
154
154
  shopDomain: getEnv("TOMMY_SHOPIFY_STORE_DOMAIN") || "",
155
155
  },
156
+ storage: {
157
+ provider: "azure-blob",
158
+ baseUrl: "",
159
+ apiKey: "",
160
+ accountName: getEnv("TOMMY_AZURE_STORAGE_ACCOUNT") || "",
161
+ accountKey: getEnv("TOMMY_AZURE_STORAGE_KEY") || "",
162
+ containerName: getEnv("TOMMY_AZURE_REVIEWS_CONTAINER") || "",
163
+ uploadUrlTtlMinutes: 5,
164
+ readUrlTtlDays: 7,
165
+ },
156
166
  },
157
167
  cache: {
158
168
  defaultTTL: 3600,
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/config/config.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/config/config.service.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export * from './shopify-theme';
7
7
  export * from './search';
8
8
  export * from './reviews';
9
9
  export * from './swish';
10
+ export * from './storage';
10
11
  export * from './integration.factory';
11
12
  export * from './integrations.module';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,YAAY,CAAC;AAG3B,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC;AAG1B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,YAAY,CAAC;AAG3B,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC;AAG1B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -18,6 +18,8 @@ tslib_1.__exportStar(require("./search"), exports);
18
18
  tslib_1.__exportStar(require("./reviews"), exports);
19
19
  // Wishlist integrations (Swish)
20
20
  tslib_1.__exportStar(require("./swish"), exports);
21
+ // Storage integrations (Azure Blob)
22
+ tslib_1.__exportStar(require("./storage"), exports);
21
23
  // Integration factory and module
22
24
  tslib_1.__exportStar(require("./integration.factory"), exports);
23
25
  tslib_1.__exportStar(require("./integrations.module"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,8DAAoC;AACpC,qEAA2C;AAE3C,kCAAkC;AAClC,qDAA2B;AAE3B,2BAA2B;AAC3B,gDAAsB;AAEtB,mCAAmC;AACnC,oDAA0B;AAE1B,oBAAoB;AACpB,0DAAgC;AAEhC,8BAA8B;AAC9B,mDAAyB;AAEzB,kCAAkC;AAClC,oDAA0B;AAE1B,gCAAgC;AAChC,kDAAwB;AAExB,iCAAiC;AACjC,gEAAsC;AACtC,gEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,8DAAoC;AACpC,qEAA2C;AAE3C,kCAAkC;AAClC,qDAA2B;AAE3B,2BAA2B;AAC3B,gDAAsB;AAEtB,mCAAmC;AACnC,oDAA0B;AAE1B,oBAAoB;AACpB,0DAAgC;AAEhC,8BAA8B;AAC9B,mDAAyB;AAEzB,kCAAkC;AAClC,oDAA0B;AAE1B,gCAAgC;AAChC,kDAAwB;AAExB,oCAAoC;AACpC,oDAA0B;AAE1B,iCAAiC;AACjC,gEAAsC;AACtC,gEAAsC"}
@@ -46,7 +46,7 @@ export interface IntegrationHealth {
46
46
  * Supported integration types
47
47
  * Add new integration types here as you implement them
48
48
  */
49
- export type IntegrationType = 'commerce' | 'loyalty' | 'reviews' | 'wishlist' | 'engagement' | 'oms' | 'checkout' | 'payments' | 'search' | 'analytics';
49
+ export type IntegrationType = 'commerce' | 'loyalty' | 'reviews' | 'wishlist' | 'engagement' | 'oms' | 'checkout' | 'payments' | 'search' | 'analytics' | 'storage';
50
50
  /**
51
51
  * Brand-specific integration configuration
52
52
  * Add to your brand JSON config files
@@ -1 +1 @@
1
- {"version":3,"file":"integration.types.d.ts","sourceRoot":"","sources":["../../src/integrations/integration.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,SAAS,GACT,SAAS,GACT,UAAU,GACV,YAAY,GACZ,KAAK,GACL,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,wFAAwF;IACxF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"integration.types.d.ts","sourceRoot":"","sources":["../../src/integrations/integration.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,SAAS,GACT,SAAS,GACT,UAAU,GACV,YAAY,GACZ,KAAK,GACL,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,wFAAwF;IACxF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.module.d.ts","sourceRoot":"","sources":["../../src/integrations/integrations.module.ts"],"names":[],"mappings":"AAsBA,qBAmCa,kBAAkB;CAAG"}
1
+ {"version":3,"file":"integrations.module.d.ts","sourceRoot":"","sources":["../../src/integrations/integrations.module.ts"],"names":[],"mappings":"AAwBA,qBAsCa,kBAAkB;CAAG"}
@@ -20,6 +20,8 @@ const wizzy_service_1 = require("./search/wizzy.service");
20
20
  const judgeme_service_1 = require("./reviews/judgeme.service");
21
21
  // Wishlist
22
22
  const swish_service_1 = require("./swish/swish.service");
23
+ // Storage
24
+ const azure_blob_service_1 = require("./storage/azure-blob.service");
23
25
  // CacheModule and ConfigModule are @Global() so no import needed
24
26
  let IntegrationsModule = class IntegrationsModule {
25
27
  };
@@ -45,6 +47,8 @@ exports.IntegrationsModule = IntegrationsModule = tslib_1.__decorate([
45
47
  judgeme_service_1.JudgeMeService,
46
48
  // Wishlist
47
49
  swish_service_1.SwishService,
50
+ // Storage
51
+ azure_blob_service_1.AzureBlobService,
48
52
  ],
49
53
  exports: [
50
54
  integration_factory_1.IntegrationFactory,
@@ -58,6 +62,7 @@ exports.IntegrationsModule = IntegrationsModule = tslib_1.__decorate([
58
62
  wizzy_service_1.WizzyService,
59
63
  judgeme_service_1.JudgeMeService,
60
64
  swish_service_1.SwishService,
65
+ azure_blob_service_1.AzureBlobService,
61
66
  ],
62
67
  })
63
68
  ], IntegrationsModule);
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.module.js","sourceRoot":"","sources":["../../src/integrations/integrations.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,yEAAoE;AAEpE,8BAA8B;AAC9B,gEAAoE;AACpE,4EAAuE;AACvE,kFAA6E;AAC7E,iEAA4D;AAC5D,uDAAmD;AACnD,oBAAoB;AACpB,6EAAwE;AACxE,iFAA4E;AAC5E,SAAS;AACT,0DAAsD;AACtD,UAAU;AACV,+DAA2D;AAC3D,WAAW;AACX,yDAAqD;AAErD,iEAAiE;AAqC1D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAnC9B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,wCAAkB;YAClB,iDAAsB;YACtB,WAAW;YACX,wCAAsB;YACtB,2CAAmB;YACnB,iDAAsB;YACtB,MAAM;YACN,qCAAgB;YAChB,4BAAY;YACZ,UAAU;YACV,6CAAoB;YACpB,iDAAsB;YACtB,SAAS;YACT,4BAAY;YACZ,UAAU;YACV,gCAAc;YACd,WAAW;YACX,4BAAY;SACb;QACD,OAAO,EAAE;YACP,wCAAkB;YAClB,gEAAgE;YAChE,wCAAsB;YACtB,2CAAmB;YACnB,iDAAsB;YACtB,4BAAY;YACZ,6CAAoB;YACpB,iDAAsB;YACtB,4BAAY;YACZ,gCAAc;YACd,4BAAY;SACb;KACF,CAAC;GACW,kBAAkB,CAAG"}
1
+ {"version":3,"file":"integrations.module.js","sourceRoot":"","sources":["../../src/integrations/integrations.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,yEAAoE;AAEpE,8BAA8B;AAC9B,gEAAoE;AACpE,4EAAuE;AACvE,kFAA6E;AAC7E,iEAA4D;AAC5D,uDAAmD;AACnD,oBAAoB;AACpB,6EAAwE;AACxE,iFAA4E;AAC5E,SAAS;AACT,0DAAsD;AACtD,UAAU;AACV,+DAA2D;AAC3D,WAAW;AACX,yDAAqD;AACrD,UAAU;AACV,qEAAgE;AAEhE,iEAAiE;AAwC1D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAtC9B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,wCAAkB;YAClB,iDAAsB;YACtB,WAAW;YACX,wCAAsB;YACtB,2CAAmB;YACnB,iDAAsB;YACtB,MAAM;YACN,qCAAgB;YAChB,4BAAY;YACZ,UAAU;YACV,6CAAoB;YACpB,iDAAsB;YACtB,SAAS;YACT,4BAAY;YACZ,UAAU;YACV,gCAAc;YACd,WAAW;YACX,4BAAY;YACZ,UAAU;YACV,qCAAgB;SACjB;QACD,OAAO,EAAE;YACP,wCAAkB;YAClB,gEAAgE;YAChE,wCAAsB;YACtB,2CAAmB;YACnB,iDAAsB;YACtB,4BAAY;YACZ,6CAAoB;YACpB,iDAAsB;YACtB,4BAAY;YACZ,gCAAc;YACd,4BAAY;YACZ,qCAAgB;SACjB;KACF,CAAC;GACW,kBAAkB,CAAG"}
@@ -0,0 +1,72 @@
1
+ import { IntegrationResponse } from '../integration.types';
2
+ import { AzureBlobConfig, AzureBlobUploadTarget, GenerateUploadUrlOptions, IStorageService } from './storage.types';
3
+ /**
4
+ * Azure Blob Storage Service
5
+ *
6
+ * Mints short-lived SAS URLs so a client can upload files (e.g. review photos)
7
+ * directly to Azure Blob Storage, then hand the resulting public read URL to a
8
+ * downstream consumer.
9
+ *
10
+ * Why this shape:
11
+ * - Some downstream providers (e.g. Judge.me) only accept publicly reachable
12
+ * image URLs; they fetch each URL server-side and re-host it. So the client
13
+ * must first put the file somewhere public.
14
+ * - The client uploads bytes straight to Azure (SAS write URL), keeping large
15
+ * binaries off the middleware.
16
+ * - The read URL carries a long-lived read SAS token so the file can be fetched
17
+ * even when the storage account has anonymous public access disabled.
18
+ *
19
+ * Brand-agnostic: configured per brand via `configure()`, mirroring the other
20
+ * integration services (Judge.me, Swish, etc.).
21
+ */
22
+ export declare class AzureBlobService implements IStorageService {
23
+ private config;
24
+ private brand;
25
+ /** Default allowed content types (image uploads) when a caller omits its own. */
26
+ private static readonly DEFAULT_IMAGE_CONTENT_TYPES;
27
+ private static readonly DEFAULT_UPLOAD_TTL_MINUTES;
28
+ private static readonly DEFAULT_READ_TTL_DAYS;
29
+ /**
30
+ * Configure the service for a specific brand.
31
+ *
32
+ * Incomplete config is logged and leaves the service unconfigured (callers get
33
+ * a NOT_CONFIGURED error) rather than throwing at startup.
34
+ */
35
+ configure(brand: string, config: AzureBlobConfig): void;
36
+ /**
37
+ * Check if the service is configured.
38
+ */
39
+ isConfigured(): boolean;
40
+ /**
41
+ * Generate a presigned upload target (SAS write URL) plus the read URL that
42
+ * downstream consumers can fetch.
43
+ *
44
+ * Generic across modules — pass a `pathPrefix` and, if needed, your own
45
+ * `allowedContentTypes`. Synchronous: SAS generation is a local crypto
46
+ * operation, no network I/O.
47
+ *
48
+ * @param options - See {@link GenerateUploadUrlOptions}.
49
+ */
50
+ generateUploadUrl(options: GenerateUploadUrlOptions): IntegrationResponse<AzureBlobUploadTarget>;
51
+ /**
52
+ * Convenience wrapper for review image uploads: stores under
53
+ * `reviews/<brand>/` and accepts the default image content types.
54
+ *
55
+ * @param fileName - Original client file name.
56
+ * @param contentType - Image MIME type.
57
+ */
58
+ generateReviewImageUploadUrl(fileName: string, contentType: string): IntegrationResponse<AzureBlobUploadTarget>;
59
+ /**
60
+ * Resolve the caller's allowed content types into a MIME→extension map.
61
+ * Accepts a MIME list (extension inferred from the subtype), a MIME→extension
62
+ * map, or nothing (defaults to the built-in image set).
63
+ */
64
+ private resolveAllowedTypes;
65
+ /**
66
+ * Normalize a path prefix into a trailing-slash-terminated segment, or "".
67
+ */
68
+ private normalizePrefix;
69
+ private asString;
70
+ private asNumber;
71
+ }
72
+ //# sourceMappingURL=azure-blob.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob.service.d.ts","sourceRoot":"","sources":["../../../src/integrations/storage/azure-blob.service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,KAAK,CAAM;IAEnB,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAMjD;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAM;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAElD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAoCvD;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;;;;OASG;IACH,iBAAiB,CACf,OAAO,EAAE,wBAAwB,GAChC,mBAAmB,CAAC,qBAAqB,CAAC;IAoG7C;;;;;;OAMG;IACH,4BAA4B,CAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAAC,qBAAqB,CAAC;IAQ7C;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,QAAQ;CAQjB"}
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var AzureBlobService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AzureBlobService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const crypto_1 = require("crypto");
7
+ const common_1 = require("@nestjs/common");
8
+ const storage_blob_1 = require("@azure/storage-blob");
9
+ const logger_1 = require("../../common/logger");
10
+ /**
11
+ * Azure Blob Storage Service
12
+ *
13
+ * Mints short-lived SAS URLs so a client can upload files (e.g. review photos)
14
+ * directly to Azure Blob Storage, then hand the resulting public read URL to a
15
+ * downstream consumer.
16
+ *
17
+ * Why this shape:
18
+ * - Some downstream providers (e.g. Judge.me) only accept publicly reachable
19
+ * image URLs; they fetch each URL server-side and re-host it. So the client
20
+ * must first put the file somewhere public.
21
+ * - The client uploads bytes straight to Azure (SAS write URL), keeping large
22
+ * binaries off the middleware.
23
+ * - The read URL carries a long-lived read SAS token so the file can be fetched
24
+ * even when the storage account has anonymous public access disabled.
25
+ *
26
+ * Brand-agnostic: configured per brand via `configure()`, mirroring the other
27
+ * integration services (Judge.me, Swish, etc.).
28
+ */
29
+ let AzureBlobService = class AzureBlobService {
30
+ static { AzureBlobService_1 = this; }
31
+ config = null;
32
+ brand = '';
33
+ /** Default allowed content types (image uploads) when a caller omits its own. */
34
+ static DEFAULT_IMAGE_CONTENT_TYPES = {
35
+ 'image/jpeg': 'jpg',
36
+ 'image/pjpeg': 'jpg',
37
+ 'image/png': 'png',
38
+ 'image/webp': 'webp',
39
+ 'image/gif': 'gif',
40
+ };
41
+ static DEFAULT_UPLOAD_TTL_MINUTES = 15;
42
+ static DEFAULT_READ_TTL_DAYS = 7;
43
+ /**
44
+ * Configure the service for a specific brand.
45
+ *
46
+ * Incomplete config is logged and leaves the service unconfigured (callers get
47
+ * a NOT_CONFIGURED error) rather than throwing at startup.
48
+ */
49
+ configure(brand, config) {
50
+ this.brand = brand;
51
+ const accountName = this.asString(config?.accountName);
52
+ const accountKey = this.asString(config?.accountKey);
53
+ const containerName = this.asString(config?.containerName);
54
+ if (!accountName || !accountKey || !containerName) {
55
+ this.config = null;
56
+ logger_1.logger.warn('Azure Blob storage config incomplete', {
57
+ brand,
58
+ hasAccountName: Boolean(accountName),
59
+ hasAccountKey: Boolean(accountKey),
60
+ hasContainerName: Boolean(containerName),
61
+ });
62
+ return;
63
+ }
64
+ this.config = {
65
+ accountName,
66
+ accountKey,
67
+ containerName,
68
+ uploadUrlTtlMinutes: this.asNumber(config.uploadUrlTtlMinutes) ??
69
+ AzureBlobService_1.DEFAULT_UPLOAD_TTL_MINUTES,
70
+ readUrlTtlDays: this.asNumber(config.readUrlTtlDays) ??
71
+ AzureBlobService_1.DEFAULT_READ_TTL_DAYS,
72
+ };
73
+ logger_1.logger.info('Azure Blob storage service configured', {
74
+ brand,
75
+ container: containerName,
76
+ });
77
+ }
78
+ /**
79
+ * Check if the service is configured.
80
+ */
81
+ isConfigured() {
82
+ return this.config !== null;
83
+ }
84
+ /**
85
+ * Generate a presigned upload target (SAS write URL) plus the read URL that
86
+ * downstream consumers can fetch.
87
+ *
88
+ * Generic across modules — pass a `pathPrefix` and, if needed, your own
89
+ * `allowedContentTypes`. Synchronous: SAS generation is a local crypto
90
+ * operation, no network I/O.
91
+ *
92
+ * @param options - See {@link GenerateUploadUrlOptions}.
93
+ */
94
+ generateUploadUrl(options) {
95
+ if (!this.config) {
96
+ return {
97
+ success: false,
98
+ error: {
99
+ code: 'NOT_CONFIGURED',
100
+ message: 'Azure Blob storage is not configured',
101
+ },
102
+ };
103
+ }
104
+ const { fileName, contentType, pathPrefix } = options;
105
+ const allowed = this.resolveAllowedTypes(options.allowedContentTypes);
106
+ const normalizedType = (contentType || '').trim().toLowerCase();
107
+ const extension = allowed[normalizedType];
108
+ if (!extension) {
109
+ return {
110
+ success: false,
111
+ error: {
112
+ code: 'INVALID_FILE_TYPE',
113
+ message: `Unsupported file type "${contentType}". Allowed: ${Object.keys(allowed).join(', ')}`,
114
+ },
115
+ };
116
+ }
117
+ void fileName; // filename is not trusted for storage; extension comes from MIME
118
+ const { accountName, accountKey, containerName } = this.config;
119
+ // Randomize the stored name — never trust the client path/filename.
120
+ const prefix = this.normalizePrefix(pathPrefix);
121
+ const blobName = `${prefix}${(0, crypto_1.randomUUID)()}.${extension}`;
122
+ const blobUrl = `https://${accountName}.blob.core.windows.net/${containerName}/${encodeURI(blobName)}`;
123
+ const credential = new storage_blob_1.StorageSharedKeyCredential(accountName, accountKey);
124
+ const uploadTtlMinutes = this.asNumber(options.uploadTtlMinutes) ??
125
+ this.config.uploadUrlTtlMinutes;
126
+ const readTtlDays = this.asNumber(options.readTtlDays) ?? this.config.readUrlTtlDays;
127
+ const now = new Date();
128
+ // Backdate start to tolerate client/server clock skew.
129
+ const startsOn = new Date(now.valueOf() - 5 * 60 * 1000);
130
+ const uploadExpiresOn = new Date(now.valueOf() + uploadTtlMinutes * 60 * 1000);
131
+ const readExpiresOn = new Date(now.valueOf() + readTtlDays * 24 * 60 * 60 * 1000);
132
+ // Write SAS: create + write, short-lived, single blob only.
133
+ const uploadSas = (0, storage_blob_1.generateBlobSASQueryParameters)({
134
+ containerName,
135
+ blobName,
136
+ permissions: storage_blob_1.BlobSASPermissions.parse('cw'),
137
+ startsOn,
138
+ expiresOn: uploadExpiresOn,
139
+ protocol: storage_blob_1.SASProtocol.Https,
140
+ contentType: normalizedType,
141
+ }, credential).toString();
142
+ // Read SAS: read-only, long-lived, so downstream consumers can fetch it.
143
+ // The content-type override guarantees the blob is served with its MIME type.
144
+ const readSas = (0, storage_blob_1.generateBlobSASQueryParameters)({
145
+ containerName,
146
+ blobName,
147
+ permissions: storage_blob_1.BlobSASPermissions.parse('r'),
148
+ startsOn,
149
+ expiresOn: readExpiresOn,
150
+ protocol: storage_blob_1.SASProtocol.Https,
151
+ contentType: normalizedType,
152
+ }, credential).toString();
153
+ return {
154
+ success: true,
155
+ data: {
156
+ uploadUrl: `${blobUrl}?${uploadSas}`,
157
+ fileUrl: `${blobUrl}?${readSas}`,
158
+ blobName,
159
+ method: 'PUT',
160
+ headers: {
161
+ 'x-ms-blob-type': 'BlockBlob',
162
+ 'Content-Type': normalizedType,
163
+ },
164
+ expiresAt: readExpiresOn.toISOString(),
165
+ },
166
+ };
167
+ }
168
+ /**
169
+ * Convenience wrapper for review image uploads: stores under
170
+ * `reviews/<brand>/` and accepts the default image content types.
171
+ *
172
+ * @param fileName - Original client file name.
173
+ * @param contentType - Image MIME type.
174
+ */
175
+ generateReviewImageUploadUrl(fileName, contentType) {
176
+ return this.generateUploadUrl({
177
+ fileName,
178
+ contentType,
179
+ pathPrefix: `reviews/${this.brand}`,
180
+ });
181
+ }
182
+ /**
183
+ * Resolve the caller's allowed content types into a MIME→extension map.
184
+ * Accepts a MIME list (extension inferred from the subtype), a MIME→extension
185
+ * map, or nothing (defaults to the built-in image set).
186
+ */
187
+ resolveAllowedTypes(allowed) {
188
+ if (!allowed) {
189
+ return AzureBlobService_1.DEFAULT_IMAGE_CONTENT_TYPES;
190
+ }
191
+ if (Array.isArray(allowed)) {
192
+ const map = {};
193
+ for (const mime of allowed) {
194
+ const normalized = mime.trim().toLowerCase();
195
+ if (!normalized)
196
+ continue;
197
+ // Infer extension from the MIME subtype (e.g. "application/pdf" -> "pdf").
198
+ const subtype = normalized.split('/')[1] || 'bin';
199
+ map[normalized] = subtype.split('+')[0];
200
+ }
201
+ return map;
202
+ }
203
+ // Already a MIME->extension map; normalize keys.
204
+ const map = {};
205
+ for (const [mime, ext] of Object.entries(allowed)) {
206
+ map[mime.trim().toLowerCase()] = ext;
207
+ }
208
+ return map;
209
+ }
210
+ /**
211
+ * Normalize a path prefix into a trailing-slash-terminated segment, or "".
212
+ */
213
+ normalizePrefix(pathPrefix) {
214
+ const trimmed = (pathPrefix || '').trim().replace(/^\/+|\/+$/g, '');
215
+ return trimmed ? `${trimmed}/` : '';
216
+ }
217
+ asString(value) {
218
+ return typeof value === 'string' && value.trim() !== ''
219
+ ? value.trim()
220
+ : undefined;
221
+ }
222
+ asNumber(value) {
223
+ if (typeof value === 'number' && Number.isFinite(value))
224
+ return value;
225
+ if (typeof value === 'string' && value.trim() !== '') {
226
+ const n = Number(value);
227
+ return Number.isFinite(n) ? n : undefined;
228
+ }
229
+ return undefined;
230
+ }
231
+ };
232
+ exports.AzureBlobService = AzureBlobService;
233
+ exports.AzureBlobService = AzureBlobService = AzureBlobService_1 = tslib_1.__decorate([
234
+ (0, common_1.Injectable)()
235
+ ], AzureBlobService);
236
+ //# sourceMappingURL=azure-blob.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob.service.js","sourceRoot":"","sources":["../../../src/integrations/storage/azure-blob.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './storage.types';
2
+ export * from './azure-blob.service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,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("./storage.types"), exports);
5
+ tslib_1.__exportStar(require("./azure-blob.service"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/storage/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,+DAAqC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Storage Integration Types
3
+ *
4
+ * Types for object-storage integrations (e.g. Azure Blob Storage) used for
5
+ * things like direct client uploads via presigned URLs.
6
+ */
7
+ import { IntegrationResponse } from '../integration.types';
8
+ /**
9
+ * Azure Blob Storage configuration for a brand.
10
+ */
11
+ export interface AzureBlobConfig {
12
+ /** Storage account name (e.g. "devtommy"). */
13
+ accountName: string;
14
+ /** Storage account key (base64) used to sign SAS tokens. */
15
+ accountKey: string;
16
+ /** Container name (bucket-level) where blobs are stored. Must already exist. */
17
+ containerName: string;
18
+ /** TTL (minutes) for the SAS write URL the client PUTs to (default 15). */
19
+ uploadUrlTtlMinutes?: number;
20
+ /** TTL (days) for the SAS read URL handed to downstream consumers (default 7). */
21
+ readUrlTtlDays?: number;
22
+ }
23
+ /**
24
+ * Options for generating a presigned upload target.
25
+ *
26
+ * Generic across modules — reviews, returns evidence, support attachments, etc.
27
+ * each pass their own `pathPrefix` and, if needed, `allowedContentTypes`.
28
+ */
29
+ export interface GenerateUploadUrlOptions {
30
+ /** Original client file name — used only to derive a sensible stored extension. */
31
+ fileName: string;
32
+ /** MIME type of the file; must be in `allowedContentTypes`. */
33
+ contentType: string;
34
+ /**
35
+ * Blob path prefix (folder) the file is stored under, e.g. "reviews/tommy"
36
+ * or "returns/evidence". The stored blob name is `${pathPrefix}/${uuid}.${ext}`.
37
+ * Leading/trailing slashes are trimmed. Defaults to "" (container root).
38
+ */
39
+ pathPrefix?: string;
40
+ /**
41
+ * Allowed MIME types for this upload. Provide either a list of MIME strings
42
+ * (extensions are inferred), or a MIME→extension map for full control.
43
+ * Defaults to the built-in image set (jpeg/pjpeg/png/webp/gif).
44
+ */
45
+ allowedContentTypes?: string[] | Record<string, string>;
46
+ /** Override the SAS write URL TTL (minutes) for this call. */
47
+ uploadTtlMinutes?: number;
48
+ /** Override the SAS read URL TTL (days) for this call. */
49
+ readTtlDays?: number;
50
+ }
51
+ /**
52
+ * Result of minting a presigned upload target.
53
+ *
54
+ * Flow for the client:
55
+ * 1. PUT the raw bytes to `uploadUrl` using `method` and `headers`.
56
+ * 2. Use `fileUrl` wherever a publicly reachable URL is needed (e.g. pass it to
57
+ * a reviews provider). `fileUrl` carries a long-lived read SAS token so it can
58
+ * be fetched server-side even when anonymous public access is disabled.
59
+ */
60
+ export interface AzureBlobUploadTarget {
61
+ /** SAS write URL — client PUTs the bytes here. Short-lived. */
62
+ uploadUrl: string;
63
+ /** SAS read URL — publicly fetchable. Long-lived. */
64
+ fileUrl: string;
65
+ /** Server-generated blob name (randomized). */
66
+ blobName: string;
67
+ /** HTTP method to use for the upload. */
68
+ method: 'PUT';
69
+ /** Headers the client must send on the upload request. */
70
+ headers: Record<string, string>;
71
+ /** ISO timestamp when the read URL's access expires. */
72
+ expiresAt: string;
73
+ }
74
+ /**
75
+ * Storage service interface.
76
+ */
77
+ export interface IStorageService {
78
+ configure(brand: string, config: AzureBlobConfig): void;
79
+ isConfigured(): boolean;
80
+ generateUploadUrl(options: GenerateUploadUrlOptions): IntegrationResponse<AzureBlobUploadTarget>;
81
+ }
82
+ //# sourceMappingURL=storage.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.types.d.ts","sourceRoot":"","sources":["../../../src/integrations/storage/storage.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,EAAE,KAAK,CAAC;IACd,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACxD,YAAY,IAAI,OAAO,CAAC;IACxB,iBAAiB,CACf,OAAO,EAAE,wBAAwB,GAChC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;CAC/C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=storage.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.types.js","sourceRoot":"","sources":["../../../src/integrations/storage/storage.types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pvh-afl/core",
3
- "version": "1.1.16",
3
+ "version": "1.1.17",
4
4
  "description": "AFL Core - Shared services for multi-brand commerce platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,6 +24,7 @@
24
24
  "rxjs": "^7.0.0"
25
25
  },
26
26
  "dependencies": {
27
+ "@azure/storage-blob": "^12.33.0",
27
28
  "cheerio": "^1.0.0",
28
29
  "zod": "^3.23.0"
29
30
  },