@savafeed/shopify-driver 1.1.80 → 1.1.82

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.80",
3
+ "version": "1.1.82",
4
4
  "main": "shopify.driver.cjs.js",
5
5
  "module": "shopify.driver.esm.js",
6
6
  "umd": "shopify.driver.umd.js",
@@ -52,15 +52,16 @@ var E_DRIVER_TOKENS;
52
52
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
53
53
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
54
54
 
55
- let CartService = class CartService {
55
+ let ShopifyCartService = class ShopifyCartService {
56
56
  environments;
57
57
  shopUrl;
58
58
  constructor(environments) {
59
59
  this.environments = environments;
60
- if (!this.environments.eCommerceData?.shopUrl) {
60
+ const shopUrl = this.environments.input?.shopUrl;
61
+ if (!shopUrl) {
61
62
  throw new Error('Shop URL is not defined');
62
63
  }
63
- this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
64
+ this.shopUrl = shopUrl;
64
65
  }
65
66
  ;
66
67
  async getCart() {
@@ -125,31 +126,91 @@ let CartService = class CartService {
125
126
  }
126
127
  ;
127
128
  };
128
- CartService = __decorate([
129
+ ShopifyCartService = __decorate([
129
130
  moduleManager.Injectable(),
130
131
  __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
131
132
  __metadata("design:paramtypes", [Object])
132
- ], CartService);
133
+ ], ShopifyCartService);
134
+
135
+ class LineItemModel {
136
+ rawProject = null;
137
+ origin;
138
+ constructor(item, project) {
139
+ this.origin = item;
140
+ if (!!project) {
141
+ this.rawProject = project;
142
+ }
143
+ }
144
+ get hasProject() {
145
+ return !!this.rawProject;
146
+ }
147
+ }
148
+
149
+ let RawProjectService = class RawProjectService {
150
+ environments;
151
+ apiGatewayUrl;
152
+ tenantId;
153
+ constructor(environments) {
154
+ this.environments = environments;
155
+ const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
156
+ const tenantId = this.environments.input.tenantId;
157
+ if (!apiGatewayUrl) {
158
+ throw new Error('Api Gateway URL is not defined');
159
+ }
160
+ if (!tenantId) {
161
+ throw new Error('Tenant ID is not defined');
162
+ }
163
+ this.apiGatewayUrl = apiGatewayUrl;
164
+ this.tenantId = tenantId;
165
+ }
166
+ ;
167
+ async getRawProjects(projectId) {
168
+ try {
169
+ const requestUrl = new URL(this.apiGatewayUrl);
170
+ requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
171
+ requestUrl.searchParams.set('tenantId', this.tenantId);
172
+ requestUrl.searchParams.set('id', projectId);
173
+ return await fetch(requestUrl.href).then((res) => res.json());
174
+ }
175
+ catch (error) {
176
+ console.error(error);
177
+ return null;
178
+ }
179
+ }
180
+ ;
181
+ };
182
+ RawProjectService = __decorate([
183
+ moduleManager.Injectable(),
184
+ __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
185
+ __metadata("design:paramtypes", [Object])
186
+ ], RawProjectService);
133
187
 
134
188
  let LineItemsController = class LineItemsController {
135
- CartService;
136
- constructor(CartService) {
137
- this.CartService = CartService;
189
+ shopifyCartService;
190
+ rawProjectService;
191
+ constructor(shopifyCartService, rawProjectService) {
192
+ this.shopifyCartService = shopifyCartService;
193
+ this.rawProjectService = rawProjectService;
138
194
  }
139
195
  ;
140
196
  async getLineItems() {
141
- const cart = await this.CartService.getCart();
142
- if (cart) {
143
- return cart.items;
144
- }
145
- else {
197
+ const cart = await this.shopifyCartService.getCart();
198
+ if (!cart?.items)
146
199
  return [];
200
+ const lineItems = [];
201
+ for (let item of cart.items) {
202
+ const projectId = item.properties.projectId;
203
+ const rawProject = await this.rawProjectService.getRawProjects(projectId);
204
+ const lineItem = new LineItemModel(item, rawProject);
205
+ lineItems.push(lineItem);
147
206
  }
207
+ return lineItems;
148
208
  }
149
209
  };
150
210
  LineItemsController = __decorate([
151
211
  moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
152
- __metadata("design:paramtypes", [CartService])
212
+ __metadata("design:paramtypes", [ShopifyCartService,
213
+ RawProjectService])
153
214
  ], LineItemsController);
154
215
 
155
216
  let PreviewController = class PreviewController {
@@ -194,7 +255,8 @@ exports.ShopifyDriver = __decorate([
194
255
  moduleManager.Module({
195
256
  name: 'shopify-driver',
196
257
  providers: [
197
- CartService,
258
+ ShopifyCartService,
259
+ RawProjectService,
198
260
  ],
199
261
  controllers: [
200
262
  LineItemsController,
@@ -205,6 +267,6 @@ exports.ShopifyDriver = __decorate([
205
267
  })
206
268
  ], exports.ShopifyDriver);
207
269
  // @ts-ignore
208
- const VERSION = "1.1.80";
270
+ const VERSION = "1.1.82";
209
271
  console.log('Driver version:', VERSION);
210
272
  //# 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/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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"}
1
+ {"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.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 ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = 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 { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\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 { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\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 { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return 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 { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\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,15 +50,16 @@ var E_DRIVER_TOKENS;
50
50
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
51
51
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
52
52
 
53
- let CartService = class CartService {
53
+ let ShopifyCartService = class ShopifyCartService {
54
54
  environments;
55
55
  shopUrl;
56
56
  constructor(environments) {
57
57
  this.environments = environments;
58
- if (!this.environments.eCommerceData?.shopUrl) {
58
+ const shopUrl = this.environments.input?.shopUrl;
59
+ if (!shopUrl) {
59
60
  throw new Error('Shop URL is not defined');
60
61
  }
61
- this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
62
+ this.shopUrl = shopUrl;
62
63
  }
63
64
  ;
64
65
  async getCart() {
@@ -123,31 +124,91 @@ let CartService = class CartService {
123
124
  }
124
125
  ;
125
126
  };
126
- CartService = __decorate([
127
+ ShopifyCartService = __decorate([
127
128
  Injectable(),
128
129
  __param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
129
130
  __metadata("design:paramtypes", [Object])
130
- ], CartService);
131
+ ], ShopifyCartService);
132
+
133
+ class LineItemModel {
134
+ rawProject = null;
135
+ origin;
136
+ constructor(item, project) {
137
+ this.origin = item;
138
+ if (!!project) {
139
+ this.rawProject = project;
140
+ }
141
+ }
142
+ get hasProject() {
143
+ return !!this.rawProject;
144
+ }
145
+ }
146
+
147
+ let RawProjectService = class RawProjectService {
148
+ environments;
149
+ apiGatewayUrl;
150
+ tenantId;
151
+ constructor(environments) {
152
+ this.environments = environments;
153
+ const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
154
+ const tenantId = this.environments.input.tenantId;
155
+ if (!apiGatewayUrl) {
156
+ throw new Error('Api Gateway URL is not defined');
157
+ }
158
+ if (!tenantId) {
159
+ throw new Error('Tenant ID is not defined');
160
+ }
161
+ this.apiGatewayUrl = apiGatewayUrl;
162
+ this.tenantId = tenantId;
163
+ }
164
+ ;
165
+ async getRawProjects(projectId) {
166
+ try {
167
+ const requestUrl = new URL(this.apiGatewayUrl);
168
+ requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
169
+ requestUrl.searchParams.set('tenantId', this.tenantId);
170
+ requestUrl.searchParams.set('id', projectId);
171
+ return await fetch(requestUrl.href).then((res) => res.json());
172
+ }
173
+ catch (error) {
174
+ console.error(error);
175
+ return null;
176
+ }
177
+ }
178
+ ;
179
+ };
180
+ RawProjectService = __decorate([
181
+ Injectable(),
182
+ __param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
183
+ __metadata("design:paramtypes", [Object])
184
+ ], RawProjectService);
131
185
 
132
186
  let LineItemsController = class LineItemsController {
133
- CartService;
134
- constructor(CartService) {
135
- this.CartService = CartService;
187
+ shopifyCartService;
188
+ rawProjectService;
189
+ constructor(shopifyCartService, rawProjectService) {
190
+ this.shopifyCartService = shopifyCartService;
191
+ this.rawProjectService = rawProjectService;
136
192
  }
137
193
  ;
138
194
  async getLineItems() {
139
- const cart = await this.CartService.getCart();
140
- if (cart) {
141
- return cart.items;
142
- }
143
- else {
195
+ const cart = await this.shopifyCartService.getCart();
196
+ if (!cart?.items)
144
197
  return [];
198
+ const lineItems = [];
199
+ for (let item of cart.items) {
200
+ const projectId = item.properties.projectId;
201
+ const rawProject = await this.rawProjectService.getRawProjects(projectId);
202
+ const lineItem = new LineItemModel(item, rawProject);
203
+ lineItems.push(lineItem);
145
204
  }
205
+ return lineItems;
146
206
  }
147
207
  };
148
208
  LineItemsController = __decorate([
149
209
  Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
150
- __metadata("design:paramtypes", [CartService])
210
+ __metadata("design:paramtypes", [ShopifyCartService,
211
+ RawProjectService])
151
212
  ], LineItemsController);
152
213
 
153
214
  let PreviewController = class PreviewController {
@@ -192,7 +253,8 @@ ShopifyDriver = __decorate([
192
253
  Module({
193
254
  name: 'shopify-driver',
194
255
  providers: [
195
- CartService,
256
+ ShopifyCartService,
257
+ RawProjectService,
196
258
  ],
197
259
  controllers: [
198
260
  LineItemsController,
@@ -203,7 +265,7 @@ ShopifyDriver = __decorate([
203
265
  })
204
266
  ], ShopifyDriver);
205
267
  // @ts-ignore
206
- const VERSION = "1.1.80";
268
+ const VERSION = "1.1.82";
207
269
  console.log('Driver version:', VERSION);
208
270
 
209
271
  export { ShopifyDriver };
@@ -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/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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"}
1
+ {"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.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 ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = 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 { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\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 { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\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 { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return 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 { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\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,15 +54,16 @@
54
54
  E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
55
55
  })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
56
56
 
57
- let CartService = class CartService {
57
+ let ShopifyCartService = class ShopifyCartService {
58
58
  environments;
59
59
  shopUrl;
60
60
  constructor(environments) {
61
61
  this.environments = environments;
62
- if (!this.environments.eCommerceData?.shopUrl) {
62
+ const shopUrl = this.environments.input?.shopUrl;
63
+ if (!shopUrl) {
63
64
  throw new Error('Shop URL is not defined');
64
65
  }
65
- this.shopUrl = String(this.environments.eCommerceData?.shopUrl);
66
+ this.shopUrl = shopUrl;
66
67
  }
67
68
  ;
68
69
  async getCart() {
@@ -127,31 +128,91 @@
127
128
  }
128
129
  ;
129
130
  };
130
- CartService = __decorate([
131
+ ShopifyCartService = __decorate([
131
132
  moduleManager.Injectable(),
132
133
  __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
133
134
  __metadata("design:paramtypes", [Object])
134
- ], CartService);
135
+ ], ShopifyCartService);
136
+
137
+ class LineItemModel {
138
+ rawProject = null;
139
+ origin;
140
+ constructor(item, project) {
141
+ this.origin = item;
142
+ if (!!project) {
143
+ this.rawProject = project;
144
+ }
145
+ }
146
+ get hasProject() {
147
+ return !!this.rawProject;
148
+ }
149
+ }
150
+
151
+ let RawProjectService = class RawProjectService {
152
+ environments;
153
+ apiGatewayUrl;
154
+ tenantId;
155
+ constructor(environments) {
156
+ this.environments = environments;
157
+ const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
158
+ const tenantId = this.environments.input.tenantId;
159
+ if (!apiGatewayUrl) {
160
+ throw new Error('Api Gateway URL is not defined');
161
+ }
162
+ if (!tenantId) {
163
+ throw new Error('Tenant ID is not defined');
164
+ }
165
+ this.apiGatewayUrl = apiGatewayUrl;
166
+ this.tenantId = tenantId;
167
+ }
168
+ ;
169
+ async getRawProjects(projectId) {
170
+ try {
171
+ const requestUrl = new URL(this.apiGatewayUrl);
172
+ requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
173
+ requestUrl.searchParams.set('tenantId', this.tenantId);
174
+ requestUrl.searchParams.set('id', projectId);
175
+ return await fetch(requestUrl.href).then((res) => res.json());
176
+ }
177
+ catch (error) {
178
+ console.error(error);
179
+ return null;
180
+ }
181
+ }
182
+ ;
183
+ };
184
+ RawProjectService = __decorate([
185
+ moduleManager.Injectable(),
186
+ __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
187
+ __metadata("design:paramtypes", [Object])
188
+ ], RawProjectService);
135
189
 
136
190
  let LineItemsController = class LineItemsController {
137
- CartService;
138
- constructor(CartService) {
139
- this.CartService = CartService;
191
+ shopifyCartService;
192
+ rawProjectService;
193
+ constructor(shopifyCartService, rawProjectService) {
194
+ this.shopifyCartService = shopifyCartService;
195
+ this.rawProjectService = rawProjectService;
140
196
  }
141
197
  ;
142
198
  async getLineItems() {
143
- const cart = await this.CartService.getCart();
144
- if (cart) {
145
- return cart.items;
146
- }
147
- else {
199
+ const cart = await this.shopifyCartService.getCart();
200
+ if (!cart?.items)
148
201
  return [];
202
+ const lineItems = [];
203
+ for (let item of cart.items) {
204
+ const projectId = item.properties.projectId;
205
+ const rawProject = await this.rawProjectService.getRawProjects(projectId);
206
+ const lineItem = new LineItemModel(item, rawProject);
207
+ lineItems.push(lineItem);
149
208
  }
209
+ return lineItems;
150
210
  }
151
211
  };
152
212
  LineItemsController = __decorate([
153
213
  moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
154
- __metadata("design:paramtypes", [CartService])
214
+ __metadata("design:paramtypes", [ShopifyCartService,
215
+ RawProjectService])
155
216
  ], LineItemsController);
156
217
 
157
218
  let PreviewController = class PreviewController {
@@ -196,7 +257,8 @@
196
257
  moduleManager.Module({
197
258
  name: 'shopify-driver',
198
259
  providers: [
199
- CartService,
260
+ ShopifyCartService,
261
+ RawProjectService,
200
262
  ],
201
263
  controllers: [
202
264
  LineItemsController,
@@ -207,7 +269,7 @@
207
269
  })
208
270
  ], exports.ShopifyDriver);
209
271
  // @ts-ignore
210
- const VERSION = "1.1.80";
272
+ const VERSION = "1.1.82";
211
273
  console.log('Driver version:', VERSION);
212
274
 
213
275
  }));
@@ -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/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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"}
1
+ {"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.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 ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = 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 { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\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 { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\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 { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return 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 { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\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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"}