@savafeed/shopify-driver 1.1.83 → 1.1.85

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.83",
3
+ "version": "1.1.85",
4
4
  "main": "shopify.driver.cjs.js",
5
5
  "module": "shopify.driver.esm.js",
6
6
  "umd": "shopify.driver.umd.js",
@@ -1,3 +1,204 @@
1
1
  declare class ShopifyDriver {
2
2
  }
3
- export { ShopifyDriver };
3
+ declare class LineItemModel {
4
+ rawProject: Adapter.RawProjectDto | null;
5
+ origin: Shopify.CartItem;
6
+ constructor(item: Shopify.CartItem, project?: Adapter.RawProjectDto | null);
7
+ get hasProject(): boolean;
8
+ }
9
+ declare namespace Shopify {
10
+ interface Cart {
11
+ token: string;
12
+ note: string;
13
+ attributes: Record<string, string>;
14
+ original_total_price: number;
15
+ total_price: number;
16
+ total_discount: number;
17
+ total_weight: number;
18
+ item_count: number;
19
+ items: CartItem[];
20
+ requires_shipping: boolean;
21
+ currency: string;
22
+ items_subtotal_price: number;
23
+ cart_level_discount_applications: DiscountApplication[];
24
+ }
25
+ interface CartItem {
26
+ id: number;
27
+ properties: Record<string, any>;
28
+ quantity: number;
29
+ variant_id: number;
30
+ key: string;
31
+ title: string;
32
+ price: number;
33
+ original_price: number;
34
+ discounted_price: number;
35
+ line_price: number;
36
+ original_line_price: number;
37
+ total_discount: number;
38
+ discounts: Discount[];
39
+ sku: string;
40
+ grams: number;
41
+ vendor: string;
42
+ taxable: boolean;
43
+ product_id: number;
44
+ product_has_only_default_variant: boolean;
45
+ gift_card: boolean;
46
+ final_price: number;
47
+ final_line_price: number;
48
+ url: string;
49
+ featured_image: Image;
50
+ image: string;
51
+ handle: string;
52
+ requires_shipping: boolean;
53
+ product_type: string;
54
+ product_title: string;
55
+ product_description: string;
56
+ variant_title: string | null;
57
+ variant_options: string[];
58
+ options_with_values: OptionWithValue[];
59
+ line_level_discount_allocations: LineLevelDiscountAllocation[];
60
+ line_level_total_discount: number;
61
+ quantity_rule: QuantityRule;
62
+ has_components: boolean;
63
+ selling_plan_allocation?: SellingPlanAllocation;
64
+ unit_price?: number;
65
+ unit_price_measurement?: UnitPriceMeasurement;
66
+ }
67
+ interface LineLevelDiscountAllocation {
68
+ amount: number;
69
+ discount_application: DiscountApplication;
70
+ }
71
+ interface Discount {
72
+ amount: number;
73
+ title: string;
74
+ }
75
+ interface DiscountApplication {
76
+ type: string;
77
+ key: string;
78
+ title: string;
79
+ description: string | null;
80
+ value: string;
81
+ created_at: string;
82
+ value_type: string;
83
+ allocation_method: string;
84
+ target_selection: string;
85
+ target_type: string;
86
+ total_allocated_amount: number;
87
+ }
88
+ interface Image {
89
+ aspect_ratio: number;
90
+ alt: string;
91
+ height: number;
92
+ url: string;
93
+ width: number;
94
+ }
95
+ interface OptionWithValue {
96
+ name: string;
97
+ value: string;
98
+ }
99
+ interface QuantityRule {
100
+ min: number;
101
+ max: number | null;
102
+ increment: number;
103
+ }
104
+ interface SellingPlanAllocation {
105
+ price_adjustments: PriceAdjustment[];
106
+ price: number;
107
+ compare_at_price: number;
108
+ per_delivery_price: number;
109
+ selling_plan: SellingPlan;
110
+ }
111
+ interface PriceAdjustment {
112
+ position: number;
113
+ price: number;
114
+ }
115
+ interface SellingPlan {
116
+ id: number;
117
+ name: string;
118
+ description: string | null;
119
+ options: SellingPlanOption[];
120
+ recurring_deliveries: boolean;
121
+ fixed_selling_plan: boolean;
122
+ price_adjustments: SellingPlanPriceAdjustment[];
123
+ }
124
+ interface SellingPlanOption {
125
+ name: string;
126
+ position: number;
127
+ value: string;
128
+ }
129
+ interface SellingPlanPriceAdjustment {
130
+ order_count: number | null;
131
+ position: number;
132
+ value_type: string;
133
+ value: string | number;
134
+ }
135
+ interface UnitPriceMeasurement {
136
+ measured_type: string;
137
+ quantity_value: string;
138
+ quantity_unit: string;
139
+ reference_value: number;
140
+ reference_unit: string;
141
+ }
142
+ }
143
+ declare namespace Adapter {
144
+ interface RawProjectDto {
145
+ /** Unique identifier. */
146
+ id?: string;
147
+ /** Tenant ID. */
148
+ tenantId?: number;
149
+ /** Items of raw project. */
150
+ items?: RawProjectItemDto[] | null;
151
+ /** Creation date. */
152
+ createdDate?: string;
153
+ }
154
+ interface RawProjectItemDto {
155
+ /** Unique key. */
156
+ key?: string | null;
157
+ /** Quantity. */
158
+ quantity?: number;
159
+ /** User ID. */
160
+ userId?: string | null;
161
+ /** Design file IDs. */
162
+ designIds?: string[] | null;
163
+ /** Visible fields. */
164
+ fields?: {
165
+ [key: string]: string;
166
+ } | null;
167
+ /** Hidden data. */
168
+ hidden?: string | null;
169
+ /**
170
+ * External resources descriptions.
171
+ * External resources may be needed for some irregular workflows
172
+ * (e.g. project has pre-rendered print files instead of private states).
173
+ **/
174
+ resources?: RawProjectItemResourceDto[] | null;
175
+ /** Information about PIM product variant */
176
+ pimProductVariantInfo?: PimProductVariantInfoDto | null;
177
+ /** Custom parameters. */
178
+ customParameters?: {
179
+ [key: string]: string;
180
+ } | null;
181
+ }
182
+ interface RawProjectItemResourceDto {
183
+ /** Resource identifier */
184
+ id?: string | null;
185
+ /** Resource type. */
186
+ type?: ProjectProductResourceType;
187
+ /** Resource file name. */
188
+ name?: string | null;
189
+ /** Resource URL. */
190
+ url?: string | null;
191
+ }
192
+ interface PimProductVariantInfoDto {
193
+ productId?: number;
194
+ productVariantId?: number;
195
+ productVersionId?: number;
196
+ }
197
+ enum ProjectProductResourceType {
198
+ General = "General",
199
+ Preview = "Preview",
200
+ HiRes = "HiRes"
201
+ }
202
+ }
203
+ export { ShopifyDriver, LineItemModel };
204
+ export type { Shopify, Adapter };
@@ -267,6 +267,8 @@ exports.ShopifyDriver = __decorate([
267
267
  })
268
268
  ], exports.ShopifyDriver);
269
269
  // @ts-ignore
270
- const VERSION = "1.1.83";
270
+ const VERSION = "1.1.85";
271
271
  console.log('Driver version:', VERSION);
272
+
273
+ exports.LineItemModel = LineItemModel;
272
274
  //# 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/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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"}
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\nexport * from '@shopify.driver/types';\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,3 +1,204 @@
1
1
  declare class ShopifyDriver {
2
2
  }
3
- export { ShopifyDriver };
3
+ declare class LineItemModel {
4
+ rawProject: Adapter.RawProjectDto | null;
5
+ origin: Shopify.CartItem;
6
+ constructor(item: Shopify.CartItem, project?: Adapter.RawProjectDto | null);
7
+ get hasProject(): boolean;
8
+ }
9
+ declare namespace Shopify {
10
+ interface Cart {
11
+ token: string;
12
+ note: string;
13
+ attributes: Record<string, string>;
14
+ original_total_price: number;
15
+ total_price: number;
16
+ total_discount: number;
17
+ total_weight: number;
18
+ item_count: number;
19
+ items: CartItem[];
20
+ requires_shipping: boolean;
21
+ currency: string;
22
+ items_subtotal_price: number;
23
+ cart_level_discount_applications: DiscountApplication[];
24
+ }
25
+ interface CartItem {
26
+ id: number;
27
+ properties: Record<string, any>;
28
+ quantity: number;
29
+ variant_id: number;
30
+ key: string;
31
+ title: string;
32
+ price: number;
33
+ original_price: number;
34
+ discounted_price: number;
35
+ line_price: number;
36
+ original_line_price: number;
37
+ total_discount: number;
38
+ discounts: Discount[];
39
+ sku: string;
40
+ grams: number;
41
+ vendor: string;
42
+ taxable: boolean;
43
+ product_id: number;
44
+ product_has_only_default_variant: boolean;
45
+ gift_card: boolean;
46
+ final_price: number;
47
+ final_line_price: number;
48
+ url: string;
49
+ featured_image: Image;
50
+ image: string;
51
+ handle: string;
52
+ requires_shipping: boolean;
53
+ product_type: string;
54
+ product_title: string;
55
+ product_description: string;
56
+ variant_title: string | null;
57
+ variant_options: string[];
58
+ options_with_values: OptionWithValue[];
59
+ line_level_discount_allocations: LineLevelDiscountAllocation[];
60
+ line_level_total_discount: number;
61
+ quantity_rule: QuantityRule;
62
+ has_components: boolean;
63
+ selling_plan_allocation?: SellingPlanAllocation;
64
+ unit_price?: number;
65
+ unit_price_measurement?: UnitPriceMeasurement;
66
+ }
67
+ interface LineLevelDiscountAllocation {
68
+ amount: number;
69
+ discount_application: DiscountApplication;
70
+ }
71
+ interface Discount {
72
+ amount: number;
73
+ title: string;
74
+ }
75
+ interface DiscountApplication {
76
+ type: string;
77
+ key: string;
78
+ title: string;
79
+ description: string | null;
80
+ value: string;
81
+ created_at: string;
82
+ value_type: string;
83
+ allocation_method: string;
84
+ target_selection: string;
85
+ target_type: string;
86
+ total_allocated_amount: number;
87
+ }
88
+ interface Image {
89
+ aspect_ratio: number;
90
+ alt: string;
91
+ height: number;
92
+ url: string;
93
+ width: number;
94
+ }
95
+ interface OptionWithValue {
96
+ name: string;
97
+ value: string;
98
+ }
99
+ interface QuantityRule {
100
+ min: number;
101
+ max: number | null;
102
+ increment: number;
103
+ }
104
+ interface SellingPlanAllocation {
105
+ price_adjustments: PriceAdjustment[];
106
+ price: number;
107
+ compare_at_price: number;
108
+ per_delivery_price: number;
109
+ selling_plan: SellingPlan;
110
+ }
111
+ interface PriceAdjustment {
112
+ position: number;
113
+ price: number;
114
+ }
115
+ interface SellingPlan {
116
+ id: number;
117
+ name: string;
118
+ description: string | null;
119
+ options: SellingPlanOption[];
120
+ recurring_deliveries: boolean;
121
+ fixed_selling_plan: boolean;
122
+ price_adjustments: SellingPlanPriceAdjustment[];
123
+ }
124
+ interface SellingPlanOption {
125
+ name: string;
126
+ position: number;
127
+ value: string;
128
+ }
129
+ interface SellingPlanPriceAdjustment {
130
+ order_count: number | null;
131
+ position: number;
132
+ value_type: string;
133
+ value: string | number;
134
+ }
135
+ interface UnitPriceMeasurement {
136
+ measured_type: string;
137
+ quantity_value: string;
138
+ quantity_unit: string;
139
+ reference_value: number;
140
+ reference_unit: string;
141
+ }
142
+ }
143
+ declare namespace Adapter {
144
+ interface RawProjectDto {
145
+ /** Unique identifier. */
146
+ id?: string;
147
+ /** Tenant ID. */
148
+ tenantId?: number;
149
+ /** Items of raw project. */
150
+ items?: RawProjectItemDto[] | null;
151
+ /** Creation date. */
152
+ createdDate?: string;
153
+ }
154
+ interface RawProjectItemDto {
155
+ /** Unique key. */
156
+ key?: string | null;
157
+ /** Quantity. */
158
+ quantity?: number;
159
+ /** User ID. */
160
+ userId?: string | null;
161
+ /** Design file IDs. */
162
+ designIds?: string[] | null;
163
+ /** Visible fields. */
164
+ fields?: {
165
+ [key: string]: string;
166
+ } | null;
167
+ /** Hidden data. */
168
+ hidden?: string | null;
169
+ /**
170
+ * External resources descriptions.
171
+ * External resources may be needed for some irregular workflows
172
+ * (e.g. project has pre-rendered print files instead of private states).
173
+ **/
174
+ resources?: RawProjectItemResourceDto[] | null;
175
+ /** Information about PIM product variant */
176
+ pimProductVariantInfo?: PimProductVariantInfoDto | null;
177
+ /** Custom parameters. */
178
+ customParameters?: {
179
+ [key: string]: string;
180
+ } | null;
181
+ }
182
+ interface RawProjectItemResourceDto {
183
+ /** Resource identifier */
184
+ id?: string | null;
185
+ /** Resource type. */
186
+ type?: ProjectProductResourceType;
187
+ /** Resource file name. */
188
+ name?: string | null;
189
+ /** Resource URL. */
190
+ url?: string | null;
191
+ }
192
+ interface PimProductVariantInfoDto {
193
+ productId?: number;
194
+ productVariantId?: number;
195
+ productVersionId?: number;
196
+ }
197
+ enum ProjectProductResourceType {
198
+ General = "General",
199
+ Preview = "Preview",
200
+ HiRes = "HiRes"
201
+ }
202
+ }
203
+ export { ShopifyDriver, LineItemModel };
204
+ export type { Shopify, Adapter };
@@ -265,8 +265,8 @@ ShopifyDriver = __decorate([
265
265
  })
266
266
  ], ShopifyDriver);
267
267
  // @ts-ignore
268
- const VERSION = "1.1.83";
268
+ const VERSION = "1.1.85";
269
269
  console.log('Driver version:', VERSION);
270
270
 
271
- export { ShopifyDriver };
271
+ export { LineItemModel, ShopifyDriver };
272
272
  //# 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/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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"}
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\nexport * from '@shopify.driver/types';\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Driver"],"mappings":"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"}
@@ -1,3 +1,204 @@
1
1
  declare class ShopifyDriver {
2
2
  }
3
- export { ShopifyDriver };
3
+ declare class LineItemModel {
4
+ rawProject: Adapter.RawProjectDto | null;
5
+ origin: Shopify.CartItem;
6
+ constructor(item: Shopify.CartItem, project?: Adapter.RawProjectDto | null);
7
+ get hasProject(): boolean;
8
+ }
9
+ declare namespace Shopify {
10
+ interface Cart {
11
+ token: string;
12
+ note: string;
13
+ attributes: Record<string, string>;
14
+ original_total_price: number;
15
+ total_price: number;
16
+ total_discount: number;
17
+ total_weight: number;
18
+ item_count: number;
19
+ items: CartItem[];
20
+ requires_shipping: boolean;
21
+ currency: string;
22
+ items_subtotal_price: number;
23
+ cart_level_discount_applications: DiscountApplication[];
24
+ }
25
+ interface CartItem {
26
+ id: number;
27
+ properties: Record<string, any>;
28
+ quantity: number;
29
+ variant_id: number;
30
+ key: string;
31
+ title: string;
32
+ price: number;
33
+ original_price: number;
34
+ discounted_price: number;
35
+ line_price: number;
36
+ original_line_price: number;
37
+ total_discount: number;
38
+ discounts: Discount[];
39
+ sku: string;
40
+ grams: number;
41
+ vendor: string;
42
+ taxable: boolean;
43
+ product_id: number;
44
+ product_has_only_default_variant: boolean;
45
+ gift_card: boolean;
46
+ final_price: number;
47
+ final_line_price: number;
48
+ url: string;
49
+ featured_image: Image;
50
+ image: string;
51
+ handle: string;
52
+ requires_shipping: boolean;
53
+ product_type: string;
54
+ product_title: string;
55
+ product_description: string;
56
+ variant_title: string | null;
57
+ variant_options: string[];
58
+ options_with_values: OptionWithValue[];
59
+ line_level_discount_allocations: LineLevelDiscountAllocation[];
60
+ line_level_total_discount: number;
61
+ quantity_rule: QuantityRule;
62
+ has_components: boolean;
63
+ selling_plan_allocation?: SellingPlanAllocation;
64
+ unit_price?: number;
65
+ unit_price_measurement?: UnitPriceMeasurement;
66
+ }
67
+ interface LineLevelDiscountAllocation {
68
+ amount: number;
69
+ discount_application: DiscountApplication;
70
+ }
71
+ interface Discount {
72
+ amount: number;
73
+ title: string;
74
+ }
75
+ interface DiscountApplication {
76
+ type: string;
77
+ key: string;
78
+ title: string;
79
+ description: string | null;
80
+ value: string;
81
+ created_at: string;
82
+ value_type: string;
83
+ allocation_method: string;
84
+ target_selection: string;
85
+ target_type: string;
86
+ total_allocated_amount: number;
87
+ }
88
+ interface Image {
89
+ aspect_ratio: number;
90
+ alt: string;
91
+ height: number;
92
+ url: string;
93
+ width: number;
94
+ }
95
+ interface OptionWithValue {
96
+ name: string;
97
+ value: string;
98
+ }
99
+ interface QuantityRule {
100
+ min: number;
101
+ max: number | null;
102
+ increment: number;
103
+ }
104
+ interface SellingPlanAllocation {
105
+ price_adjustments: PriceAdjustment[];
106
+ price: number;
107
+ compare_at_price: number;
108
+ per_delivery_price: number;
109
+ selling_plan: SellingPlan;
110
+ }
111
+ interface PriceAdjustment {
112
+ position: number;
113
+ price: number;
114
+ }
115
+ interface SellingPlan {
116
+ id: number;
117
+ name: string;
118
+ description: string | null;
119
+ options: SellingPlanOption[];
120
+ recurring_deliveries: boolean;
121
+ fixed_selling_plan: boolean;
122
+ price_adjustments: SellingPlanPriceAdjustment[];
123
+ }
124
+ interface SellingPlanOption {
125
+ name: string;
126
+ position: number;
127
+ value: string;
128
+ }
129
+ interface SellingPlanPriceAdjustment {
130
+ order_count: number | null;
131
+ position: number;
132
+ value_type: string;
133
+ value: string | number;
134
+ }
135
+ interface UnitPriceMeasurement {
136
+ measured_type: string;
137
+ quantity_value: string;
138
+ quantity_unit: string;
139
+ reference_value: number;
140
+ reference_unit: string;
141
+ }
142
+ }
143
+ declare namespace Adapter {
144
+ interface RawProjectDto {
145
+ /** Unique identifier. */
146
+ id?: string;
147
+ /** Tenant ID. */
148
+ tenantId?: number;
149
+ /** Items of raw project. */
150
+ items?: RawProjectItemDto[] | null;
151
+ /** Creation date. */
152
+ createdDate?: string;
153
+ }
154
+ interface RawProjectItemDto {
155
+ /** Unique key. */
156
+ key?: string | null;
157
+ /** Quantity. */
158
+ quantity?: number;
159
+ /** User ID. */
160
+ userId?: string | null;
161
+ /** Design file IDs. */
162
+ designIds?: string[] | null;
163
+ /** Visible fields. */
164
+ fields?: {
165
+ [key: string]: string;
166
+ } | null;
167
+ /** Hidden data. */
168
+ hidden?: string | null;
169
+ /**
170
+ * External resources descriptions.
171
+ * External resources may be needed for some irregular workflows
172
+ * (e.g. project has pre-rendered print files instead of private states).
173
+ **/
174
+ resources?: RawProjectItemResourceDto[] | null;
175
+ /** Information about PIM product variant */
176
+ pimProductVariantInfo?: PimProductVariantInfoDto | null;
177
+ /** Custom parameters. */
178
+ customParameters?: {
179
+ [key: string]: string;
180
+ } | null;
181
+ }
182
+ interface RawProjectItemResourceDto {
183
+ /** Resource identifier */
184
+ id?: string | null;
185
+ /** Resource type. */
186
+ type?: ProjectProductResourceType;
187
+ /** Resource file name. */
188
+ name?: string | null;
189
+ /** Resource URL. */
190
+ url?: string | null;
191
+ }
192
+ interface PimProductVariantInfoDto {
193
+ productId?: number;
194
+ productVariantId?: number;
195
+ productVersionId?: number;
196
+ }
197
+ enum ProjectProductResourceType {
198
+ General = "General",
199
+ Preview = "Preview",
200
+ HiRes = "HiRes"
201
+ }
202
+ }
203
+ export { ShopifyDriver, LineItemModel };
204
+ export type { Shopify, Adapter };
@@ -269,8 +269,10 @@
269
269
  })
270
270
  ], exports.ShopifyDriver);
271
271
  // @ts-ignore
272
- const VERSION = "1.1.83";
272
+ const VERSION = "1.1.85";
273
273
  console.log('Driver version:', VERSION);
274
274
 
275
+ exports.LineItemModel = LineItemModel;
276
+
275
277
  }));
276
278
  //# 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/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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"}
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\nexport * from '@shopify.driver/types';\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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"}