@savafeed/shopify-driver 1.1.78 → 1.1.80

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savafeed/shopify-driver",
3
- "version": "1.1.78",
3
+ "version": "1.1.80",
4
4
  "main": "shopify.driver.cjs.js",
5
5
  "module": "shopify.driver.esm.js",
6
6
  "umd": "shopify.driver.umd.js",
@@ -52,106 +52,104 @@ var E_DRIVER_TOKENS;
52
52
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
53
53
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
54
54
 
55
- let CartRepository = class CartRepository {
56
- constructor() { }
57
- ;
58
- cartData;
59
- get lineItems() {
60
- console.log('this.cartData', this.cartData);
61
- return this.cartData.items;
62
- }
63
- };
64
- CartRepository = __decorate([
65
- moduleManager.Injectable(),
66
- __metadata("design:paramtypes", [])
67
- ], CartRepository);
68
-
69
55
  let CartService = class CartService {
70
56
  environments;
71
- cartRepository;
72
57
  shopUrl;
73
- constructor(environments, cartRepository) {
58
+ constructor(environments) {
74
59
  this.environments = environments;
75
- this.cartRepository = cartRepository;
76
60
  if (!this.environments.eCommerceData?.shopUrl) {
77
61
  throw new Error('Shop URL is not defined');
78
62
  }
79
- this.shopUrl = this.environments.eCommerceData?.shopUrl;
63
+ this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
80
64
  }
81
65
  ;
82
66
  async getCart() {
83
- const requestUrl = new URL(this.shopUrl);
84
- requestUrl.pathname = '/cart.js';
85
- const response = await fetch(requestUrl.href);
86
- const data = await response.json();
87
- this.cartRepository.cartData = data;
88
- return data;
67
+ try {
68
+ const requestUrl = new URL(this.shopUrl);
69
+ requestUrl.pathname = '/cart.js';
70
+ return await fetch(requestUrl.href).then((res) => res.json());
71
+ }
72
+ catch (error) {
73
+ console.error(error);
74
+ return null;
75
+ }
89
76
  }
90
77
  ;
91
- async updateCart(cart) {
92
- const requestUrl = new URL(this.shopUrl);
93
- requestUrl.pathname = '/cart/update.js';
94
- const response = await fetch(requestUrl.href, {
95
- method: 'POST',
96
- headers: {
97
- 'Content-Type': 'application/json',
98
- },
99
- body: JSON.stringify(cart),
100
- });
101
- const data = await response.json();
102
- this.cartRepository.cartData = data;
103
- return data;
78
+ async updateCart(updates) {
79
+ try {
80
+ const requestUrl = new URL(this.shopUrl);
81
+ requestUrl.pathname = '/cart/update.js';
82
+ return await fetch(requestUrl.href, {
83
+ method: 'POST',
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ },
87
+ body: JSON.stringify(updates),
88
+ }).then((res) => res.json());
89
+ }
90
+ catch (error) {
91
+ console.error(error);
92
+ return null;
93
+ }
104
94
  }
105
95
  ;
106
- async changeLineItemQuantity(lineItemId, quantity) {
107
- const requestUrl = new URL(this.shopUrl);
108
- requestUrl.pathname = '/cart/change.js';
109
- const response = await fetch(requestUrl.href, {
110
- method: 'POST',
111
- headers: {
112
- 'Content-Type': 'application/json',
113
- },
114
- body: JSON.stringify({
115
- id: lineItemId,
116
- quantity: quantity,
117
- }),
118
- });
119
- const data = await response.json();
120
- this.cartRepository.cartData = data;
121
- return data;
96
+ async changeLineItemQuantity(lineItemId, quantity, properties) {
97
+ try {
98
+ const requestUrl = new URL(this.shopUrl);
99
+ requestUrl.pathname = '/cart/change.js';
100
+ const body = {
101
+ id: lineItemId
102
+ };
103
+ if (properties) {
104
+ body['properties'] = properties;
105
+ }
106
+ if (quantity) {
107
+ body['quantity'] = quantity;
108
+ }
109
+ return await fetch(requestUrl.href, {
110
+ method: 'POST',
111
+ headers: {
112
+ 'Content-Type': 'application/json',
113
+ },
114
+ body: JSON.stringify(body),
115
+ }).then((res) => res.json());
116
+ }
117
+ catch (error) {
118
+ console.error(error);
119
+ return null;
120
+ }
122
121
  }
123
122
  ;
124
123
  async removeLineItem(lineItemId) {
125
- const data = this.changeLineItemQuantity(lineItemId, 0);
126
- this.cartRepository.cartData = data;
127
- return data;
124
+ return this.changeLineItemQuantity(lineItemId, 0);
128
125
  }
129
126
  ;
130
127
  };
131
128
  CartService = __decorate([
132
129
  moduleManager.Injectable(),
133
130
  __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
134
- __metadata("design:paramtypes", [Object, CartRepository])
131
+ __metadata("design:paramtypes", [Object])
135
132
  ], CartService);
136
133
 
137
134
  let LineItemsController = class LineItemsController {
138
- cartService;
139
- cartRepository;
140
- constructor(cartService, cartRepository) {
141
- this.cartService = cartService;
142
- this.cartRepository = cartRepository;
135
+ CartService;
136
+ constructor(CartService) {
137
+ this.CartService = CartService;
143
138
  }
144
139
  ;
145
140
  async getLineItems() {
146
- await this.cartService.getCart();
147
- console.log('this.cartRepository', this.cartRepository);
148
- return this.cartRepository.lineItems;
141
+ const cart = await this.CartService.getCart();
142
+ if (cart) {
143
+ return cart.items;
144
+ }
145
+ else {
146
+ return [];
147
+ }
149
148
  }
150
149
  };
151
150
  LineItemsController = __decorate([
152
151
  moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
153
- __metadata("design:paramtypes", [CartService,
154
- CartRepository])
152
+ __metadata("design:paramtypes", [CartService])
155
153
  ], LineItemsController);
156
154
 
157
155
  let PreviewController = class PreviewController {
@@ -196,7 +194,6 @@ exports.ShopifyDriver = __decorate([
196
194
  moduleManager.Module({
197
195
  name: 'shopify-driver',
198
196
  providers: [
199
- CartRepository,
200
197
  CartService,
201
198
  ],
202
199
  controllers: [
@@ -208,5 +205,6 @@ exports.ShopifyDriver = __decorate([
208
205
  })
209
206
  ], exports.ShopifyDriver);
210
207
  // @ts-ignore
211
- console.log('Driver version:', "1.1.78");
208
+ const VERSION = "1.1.80";
209
+ console.log('Driver version:', VERSION);
212
210
  //# sourceMappingURL=shopify.driver.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n public cartData: any;\r\n\r\n public get lineItems() {\r\n console.log('this.cartData', this.cartData);\r\n return this.cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\nimport { CartRepository } from \"../repositories/cart.repository\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private cartService: CartService,\r\n private cartRepository: CartRepository,\r\n ) {};\r\n\r\n async getLineItems() {\r\n await this.cartService.getCart();\r\n console.log('this.cartRepository', this.cartRepository);\r\n return this.cartRepository.lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconsole.log('Driver version:', __APP_VERSION__);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
1
+ {"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
@@ -50,106 +50,104 @@ var E_DRIVER_TOKENS;
50
50
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
51
51
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
52
52
 
53
- let CartRepository = class CartRepository {
54
- constructor() { }
55
- ;
56
- cartData;
57
- get lineItems() {
58
- console.log('this.cartData', this.cartData);
59
- return this.cartData.items;
60
- }
61
- };
62
- CartRepository = __decorate([
63
- Injectable(),
64
- __metadata("design:paramtypes", [])
65
- ], CartRepository);
66
-
67
53
  let CartService = class CartService {
68
54
  environments;
69
- cartRepository;
70
55
  shopUrl;
71
- constructor(environments, cartRepository) {
56
+ constructor(environments) {
72
57
  this.environments = environments;
73
- this.cartRepository = cartRepository;
74
58
  if (!this.environments.eCommerceData?.shopUrl) {
75
59
  throw new Error('Shop URL is not defined');
76
60
  }
77
- this.shopUrl = this.environments.eCommerceData?.shopUrl;
61
+ this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
78
62
  }
79
63
  ;
80
64
  async getCart() {
81
- const requestUrl = new URL(this.shopUrl);
82
- requestUrl.pathname = '/cart.js';
83
- const response = await fetch(requestUrl.href);
84
- const data = await response.json();
85
- this.cartRepository.cartData = data;
86
- return data;
65
+ try {
66
+ const requestUrl = new URL(this.shopUrl);
67
+ requestUrl.pathname = '/cart.js';
68
+ return await fetch(requestUrl.href).then((res) => res.json());
69
+ }
70
+ catch (error) {
71
+ console.error(error);
72
+ return null;
73
+ }
87
74
  }
88
75
  ;
89
- async updateCart(cart) {
90
- const requestUrl = new URL(this.shopUrl);
91
- requestUrl.pathname = '/cart/update.js';
92
- const response = await fetch(requestUrl.href, {
93
- method: 'POST',
94
- headers: {
95
- 'Content-Type': 'application/json',
96
- },
97
- body: JSON.stringify(cart),
98
- });
99
- const data = await response.json();
100
- this.cartRepository.cartData = data;
101
- return data;
76
+ async updateCart(updates) {
77
+ try {
78
+ const requestUrl = new URL(this.shopUrl);
79
+ requestUrl.pathname = '/cart/update.js';
80
+ return await fetch(requestUrl.href, {
81
+ method: 'POST',
82
+ headers: {
83
+ 'Content-Type': 'application/json',
84
+ },
85
+ body: JSON.stringify(updates),
86
+ }).then((res) => res.json());
87
+ }
88
+ catch (error) {
89
+ console.error(error);
90
+ return null;
91
+ }
102
92
  }
103
93
  ;
104
- async changeLineItemQuantity(lineItemId, quantity) {
105
- const requestUrl = new URL(this.shopUrl);
106
- requestUrl.pathname = '/cart/change.js';
107
- const response = await fetch(requestUrl.href, {
108
- method: 'POST',
109
- headers: {
110
- 'Content-Type': 'application/json',
111
- },
112
- body: JSON.stringify({
113
- id: lineItemId,
114
- quantity: quantity,
115
- }),
116
- });
117
- const data = await response.json();
118
- this.cartRepository.cartData = data;
119
- return data;
94
+ async changeLineItemQuantity(lineItemId, quantity, properties) {
95
+ try {
96
+ const requestUrl = new URL(this.shopUrl);
97
+ requestUrl.pathname = '/cart/change.js';
98
+ const body = {
99
+ id: lineItemId
100
+ };
101
+ if (properties) {
102
+ body['properties'] = properties;
103
+ }
104
+ if (quantity) {
105
+ body['quantity'] = quantity;
106
+ }
107
+ return await fetch(requestUrl.href, {
108
+ method: 'POST',
109
+ headers: {
110
+ 'Content-Type': 'application/json',
111
+ },
112
+ body: JSON.stringify(body),
113
+ }).then((res) => res.json());
114
+ }
115
+ catch (error) {
116
+ console.error(error);
117
+ return null;
118
+ }
120
119
  }
121
120
  ;
122
121
  async removeLineItem(lineItemId) {
123
- const data = this.changeLineItemQuantity(lineItemId, 0);
124
- this.cartRepository.cartData = data;
125
- return data;
122
+ return this.changeLineItemQuantity(lineItemId, 0);
126
123
  }
127
124
  ;
128
125
  };
129
126
  CartService = __decorate([
130
127
  Injectable(),
131
128
  __param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
132
- __metadata("design:paramtypes", [Object, CartRepository])
129
+ __metadata("design:paramtypes", [Object])
133
130
  ], CartService);
134
131
 
135
132
  let LineItemsController = class LineItemsController {
136
- cartService;
137
- cartRepository;
138
- constructor(cartService, cartRepository) {
139
- this.cartService = cartService;
140
- this.cartRepository = cartRepository;
133
+ CartService;
134
+ constructor(CartService) {
135
+ this.CartService = CartService;
141
136
  }
142
137
  ;
143
138
  async getLineItems() {
144
- await this.cartService.getCart();
145
- console.log('this.cartRepository', this.cartRepository);
146
- return this.cartRepository.lineItems;
139
+ const cart = await this.CartService.getCart();
140
+ if (cart) {
141
+ return cart.items;
142
+ }
143
+ else {
144
+ return [];
145
+ }
147
146
  }
148
147
  };
149
148
  LineItemsController = __decorate([
150
149
  Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
151
- __metadata("design:paramtypes", [CartService,
152
- CartRepository])
150
+ __metadata("design:paramtypes", [CartService])
153
151
  ], LineItemsController);
154
152
 
155
153
  let PreviewController = class PreviewController {
@@ -194,7 +192,6 @@ ShopifyDriver = __decorate([
194
192
  Module({
195
193
  name: 'shopify-driver',
196
194
  providers: [
197
- CartRepository,
198
195
  CartService,
199
196
  ],
200
197
  controllers: [
@@ -206,7 +203,8 @@ ShopifyDriver = __decorate([
206
203
  })
207
204
  ], ShopifyDriver);
208
205
  // @ts-ignore
209
- console.log('Driver version:', "1.1.78");
206
+ const VERSION = "1.1.80";
207
+ console.log('Driver version:', VERSION);
210
208
 
211
209
  export { ShopifyDriver };
212
210
  //# sourceMappingURL=shopify.driver.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n public cartData: any;\r\n\r\n public get lineItems() {\r\n console.log('this.cartData', this.cartData);\r\n return this.cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\nimport { CartRepository } from \"../repositories/cart.repository\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private cartService: CartService,\r\n private cartRepository: CartRepository,\r\n ) {};\r\n\r\n async getLineItems() {\r\n await this.cartService.getCart();\r\n console.log('this.cartRepository', this.cartRepository);\r\n return this.cartRepository.lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconsole.log('Driver version:', __APP_VERSION__);"],"names":["Driver"],"mappings":"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"}
1
+ {"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Driver"],"mappings":"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"}
@@ -54,106 +54,104 @@
54
54
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
55
55
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
56
56
 
57
- let CartRepository = class CartRepository {
58
- constructor() { }
59
- ;
60
- cartData;
61
- get lineItems() {
62
- console.log('this.cartData', this.cartData);
63
- return this.cartData.items;
64
- }
65
- };
66
- CartRepository = __decorate([
67
- moduleManager.Injectable(),
68
- __metadata("design:paramtypes", [])
69
- ], CartRepository);
70
-
71
57
  let CartService = class CartService {
72
58
  environments;
73
- cartRepository;
74
59
  shopUrl;
75
- constructor(environments, cartRepository) {
60
+ constructor(environments) {
76
61
  this.environments = environments;
77
- this.cartRepository = cartRepository;
78
62
  if (!this.environments.eCommerceData?.shopUrl) {
79
63
  throw new Error('Shop URL is not defined');
80
64
  }
81
- this.shopUrl = this.environments.eCommerceData?.shopUrl;
65
+ this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
82
66
  }
83
67
  ;
84
68
  async getCart() {
85
- const requestUrl = new URL(this.shopUrl);
86
- requestUrl.pathname = '/cart.js';
87
- const response = await fetch(requestUrl.href);
88
- const data = await response.json();
89
- this.cartRepository.cartData = data;
90
- return data;
69
+ try {
70
+ const requestUrl = new URL(this.shopUrl);
71
+ requestUrl.pathname = '/cart.js';
72
+ return await fetch(requestUrl.href).then((res) => res.json());
73
+ }
74
+ catch (error) {
75
+ console.error(error);
76
+ return null;
77
+ }
91
78
  }
92
79
  ;
93
- async updateCart(cart) {
94
- const requestUrl = new URL(this.shopUrl);
95
- requestUrl.pathname = '/cart/update.js';
96
- const response = await fetch(requestUrl.href, {
97
- method: 'POST',
98
- headers: {
99
- 'Content-Type': 'application/json',
100
- },
101
- body: JSON.stringify(cart),
102
- });
103
- const data = await response.json();
104
- this.cartRepository.cartData = data;
105
- return data;
80
+ async updateCart(updates) {
81
+ try {
82
+ const requestUrl = new URL(this.shopUrl);
83
+ requestUrl.pathname = '/cart/update.js';
84
+ return await fetch(requestUrl.href, {
85
+ method: 'POST',
86
+ headers: {
87
+ 'Content-Type': 'application/json',
88
+ },
89
+ body: JSON.stringify(updates),
90
+ }).then((res) => res.json());
91
+ }
92
+ catch (error) {
93
+ console.error(error);
94
+ return null;
95
+ }
106
96
  }
107
97
  ;
108
- async changeLineItemQuantity(lineItemId, quantity) {
109
- const requestUrl = new URL(this.shopUrl);
110
- requestUrl.pathname = '/cart/change.js';
111
- const response = await fetch(requestUrl.href, {
112
- method: 'POST',
113
- headers: {
114
- 'Content-Type': 'application/json',
115
- },
116
- body: JSON.stringify({
117
- id: lineItemId,
118
- quantity: quantity,
119
- }),
120
- });
121
- const data = await response.json();
122
- this.cartRepository.cartData = data;
123
- return data;
98
+ async changeLineItemQuantity(lineItemId, quantity, properties) {
99
+ try {
100
+ const requestUrl = new URL(this.shopUrl);
101
+ requestUrl.pathname = '/cart/change.js';
102
+ const body = {
103
+ id: lineItemId
104
+ };
105
+ if (properties) {
106
+ body['properties'] = properties;
107
+ }
108
+ if (quantity) {
109
+ body['quantity'] = quantity;
110
+ }
111
+ return await fetch(requestUrl.href, {
112
+ method: 'POST',
113
+ headers: {
114
+ 'Content-Type': 'application/json',
115
+ },
116
+ body: JSON.stringify(body),
117
+ }).then((res) => res.json());
118
+ }
119
+ catch (error) {
120
+ console.error(error);
121
+ return null;
122
+ }
124
123
  }
125
124
  ;
126
125
  async removeLineItem(lineItemId) {
127
- const data = this.changeLineItemQuantity(lineItemId, 0);
128
- this.cartRepository.cartData = data;
129
- return data;
126
+ return this.changeLineItemQuantity(lineItemId, 0);
130
127
  }
131
128
  ;
132
129
  };
133
130
  CartService = __decorate([
134
131
  moduleManager.Injectable(),
135
132
  __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
136
- __metadata("design:paramtypes", [Object, CartRepository])
133
+ __metadata("design:paramtypes", [Object])
137
134
  ], CartService);
138
135
 
139
136
  let LineItemsController = class LineItemsController {
140
- cartService;
141
- cartRepository;
142
- constructor(cartService, cartRepository) {
143
- this.cartService = cartService;
144
- this.cartRepository = cartRepository;
137
+ CartService;
138
+ constructor(CartService) {
139
+ this.CartService = CartService;
145
140
  }
146
141
  ;
147
142
  async getLineItems() {
148
- await this.cartService.getCart();
149
- console.log('this.cartRepository', this.cartRepository);
150
- return this.cartRepository.lineItems;
143
+ const cart = await this.CartService.getCart();
144
+ if (cart) {
145
+ return cart.items;
146
+ }
147
+ else {
148
+ return [];
149
+ }
151
150
  }
152
151
  };
153
152
  LineItemsController = __decorate([
154
153
  moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
155
- __metadata("design:paramtypes", [CartService,
156
- CartRepository])
154
+ __metadata("design:paramtypes", [CartService])
157
155
  ], LineItemsController);
158
156
 
159
157
  let PreviewController = class PreviewController {
@@ -198,7 +196,6 @@
198
196
  moduleManager.Module({
199
197
  name: 'shopify-driver',
200
198
  providers: [
201
- CartRepository,
202
199
  CartService,
203
200
  ],
204
201
  controllers: [
@@ -210,7 +207,8 @@
210
207
  })
211
208
  ], exports.ShopifyDriver);
212
209
  // @ts-ignore
213
- console.log('Driver version:', "1.1.78");
210
+ const VERSION = "1.1.80";
211
+ console.log('Driver version:', VERSION);
214
212
 
215
213
  }));
216
214
  //# sourceMappingURL=shopify.driver.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n public cartData: any;\r\n\r\n public get lineItems() {\r\n console.log('this.cartData', this.cartData);\r\n return this.cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\nimport { CartRepository } from \"../repositories/cart.repository\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private cartService: CartService,\r\n private cartRepository: CartRepository,\r\n ) {};\r\n\r\n async getLineItems() {\r\n await this.cartService.getCart();\r\n console.log('this.cartRepository', this.cartRepository);\r\n return this.cartRepository.lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconsole.log('Driver version:', __APP_VERSION__);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
1
+ {"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}