@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 +1 -1
- package/shopify.driver.cjs.d.ts +202 -1
- package/shopify.driver.cjs.js +3 -1
- package/shopify.driver.cjs.js.map +1 -1
- package/shopify.driver.esm.d.ts +202 -1
- package/shopify.driver.esm.js +2 -2
- package/shopify.driver.esm.js.map +1 -1
- package/shopify.driver.umd.d.ts +202 -1
- package/shopify.driver.umd.js +3 -1
- package/shopify.driver.umd.js.map +1 -1
package/package.json
CHANGED
package/shopify.driver.cjs.d.ts
CHANGED
|
@@ -1,3 +1,204 @@
|
|
|
1
1
|
declare class ShopifyDriver {
|
|
2
2
|
}
|
|
3
|
-
|
|
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 };
|
package/shopify.driver.cjs.js
CHANGED
|
@@ -267,6 +267,8 @@ exports.ShopifyDriver = __decorate([
|
|
|
267
267
|
})
|
|
268
268
|
], exports.ShopifyDriver);
|
|
269
269
|
// @ts-ignore
|
|
270
|
-
const VERSION = "1.1.
|
|
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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"}
|
package/shopify.driver.esm.d.ts
CHANGED
|
@@ -1,3 +1,204 @@
|
|
|
1
1
|
declare class ShopifyDriver {
|
|
2
2
|
}
|
|
3
|
-
|
|
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 };
|
package/shopify.driver.esm.js
CHANGED
|
@@ -265,8 +265,8 @@ ShopifyDriver = __decorate([
|
|
|
265
265
|
})
|
|
266
266
|
], ShopifyDriver);
|
|
267
267
|
// @ts-ignore
|
|
268
|
-
const VERSION = "1.1.
|
|
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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"}
|
package/shopify.driver.umd.d.ts
CHANGED
|
@@ -1,3 +1,204 @@
|
|
|
1
1
|
declare class ShopifyDriver {
|
|
2
2
|
}
|
|
3
|
-
|
|
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 };
|
package/shopify.driver.umd.js
CHANGED
|
@@ -269,8 +269,10 @@
|
|
|
269
269
|
})
|
|
270
270
|
], exports.ShopifyDriver);
|
|
271
271
|
// @ts-ignore
|
|
272
|
-
const VERSION = "1.1.
|
|
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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"}
|