@savafeed/shopify-driver 1.1.80 → 1.1.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/shopify.driver.cjs.js +78 -16
- package/shopify.driver.cjs.js.map +1 -1
- package/shopify.driver.esm.js +78 -16
- package/shopify.driver.esm.js.map +1 -1
- package/shopify.driver.umd.js +78 -16
- package/shopify.driver.umd.js.map +1 -1
package/package.json
CHANGED
package/shopify.driver.cjs.js
CHANGED
|
@@ -52,15 +52,16 @@ var E_DRIVER_TOKENS;
|
|
|
52
52
|
E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
|
|
53
53
|
})(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
|
|
54
54
|
|
|
55
|
-
let
|
|
55
|
+
let ShopifyCartService = class ShopifyCartService {
|
|
56
56
|
environments;
|
|
57
57
|
shopUrl;
|
|
58
58
|
constructor(environments) {
|
|
59
59
|
this.environments = environments;
|
|
60
|
-
|
|
60
|
+
const shopUrl = this.environments.input?.shopUrl;
|
|
61
|
+
if (!shopUrl) {
|
|
61
62
|
throw new Error('Shop URL is not defined');
|
|
62
63
|
}
|
|
63
|
-
this.shopUrl =
|
|
64
|
+
this.shopUrl = shopUrl;
|
|
64
65
|
}
|
|
65
66
|
;
|
|
66
67
|
async getCart() {
|
|
@@ -125,31 +126,91 @@ let CartService = class CartService {
|
|
|
125
126
|
}
|
|
126
127
|
;
|
|
127
128
|
};
|
|
128
|
-
|
|
129
|
+
ShopifyCartService = __decorate([
|
|
129
130
|
moduleManager.Injectable(),
|
|
130
131
|
__param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
131
132
|
__metadata("design:paramtypes", [Object])
|
|
132
|
-
],
|
|
133
|
+
], ShopifyCartService);
|
|
134
|
+
|
|
135
|
+
class LineItemModel {
|
|
136
|
+
rawProject = null;
|
|
137
|
+
origin;
|
|
138
|
+
constructor(item, project) {
|
|
139
|
+
this.origin = item;
|
|
140
|
+
if (!!project) {
|
|
141
|
+
this.rawProject = project;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
get hasProject() {
|
|
145
|
+
return !!this.rawProject;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
let RawProjectService = class RawProjectService {
|
|
150
|
+
environments;
|
|
151
|
+
apiGatewayUrl;
|
|
152
|
+
tenantId;
|
|
153
|
+
constructor(environments) {
|
|
154
|
+
this.environments = environments;
|
|
155
|
+
const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
|
|
156
|
+
const tenantId = this.environments.input.tenantId;
|
|
157
|
+
if (!apiGatewayUrl) {
|
|
158
|
+
throw new Error('Api Gateway URL is not defined');
|
|
159
|
+
}
|
|
160
|
+
if (!tenantId) {
|
|
161
|
+
throw new Error('Tenant ID is not defined');
|
|
162
|
+
}
|
|
163
|
+
this.apiGatewayUrl = apiGatewayUrl;
|
|
164
|
+
this.tenantId = tenantId;
|
|
165
|
+
}
|
|
166
|
+
;
|
|
167
|
+
async getRawProjects(projectId) {
|
|
168
|
+
try {
|
|
169
|
+
const requestUrl = new URL(this.apiGatewayUrl);
|
|
170
|
+
requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
|
|
171
|
+
requestUrl.searchParams.set('tenantId', this.tenantId);
|
|
172
|
+
requestUrl.searchParams.set('id', projectId);
|
|
173
|
+
return await fetch(requestUrl.href).then((res) => res.json());
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
console.error(error);
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
;
|
|
181
|
+
};
|
|
182
|
+
RawProjectService = __decorate([
|
|
183
|
+
moduleManager.Injectable(),
|
|
184
|
+
__param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
185
|
+
__metadata("design:paramtypes", [Object])
|
|
186
|
+
], RawProjectService);
|
|
133
187
|
|
|
134
188
|
let LineItemsController = class LineItemsController {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
189
|
+
shopifyCartService;
|
|
190
|
+
rawProjectService;
|
|
191
|
+
constructor(shopifyCartService, rawProjectService) {
|
|
192
|
+
this.shopifyCartService = shopifyCartService;
|
|
193
|
+
this.rawProjectService = rawProjectService;
|
|
138
194
|
}
|
|
139
195
|
;
|
|
140
196
|
async getLineItems() {
|
|
141
|
-
const cart = await this.
|
|
142
|
-
if (cart)
|
|
143
|
-
return cart.items;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
197
|
+
const cart = await this.shopifyCartService.getCart();
|
|
198
|
+
if (!cart?.items)
|
|
146
199
|
return [];
|
|
200
|
+
const lineItems = [];
|
|
201
|
+
for (let item of cart.items) {
|
|
202
|
+
const projectId = item.properties.projectId;
|
|
203
|
+
const rawProject = await this.rawProjectService.getRawProjects(projectId);
|
|
204
|
+
const lineItem = new LineItemModel(item, rawProject);
|
|
205
|
+
lineItems.push(lineItem);
|
|
147
206
|
}
|
|
207
|
+
return lineItems;
|
|
148
208
|
}
|
|
149
209
|
};
|
|
150
210
|
LineItemsController = __decorate([
|
|
151
211
|
moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
|
|
152
|
-
__metadata("design:paramtypes", [
|
|
212
|
+
__metadata("design:paramtypes", [ShopifyCartService,
|
|
213
|
+
RawProjectService])
|
|
153
214
|
], LineItemsController);
|
|
154
215
|
|
|
155
216
|
let PreviewController = class PreviewController {
|
|
@@ -194,7 +255,8 @@ exports.ShopifyDriver = __decorate([
|
|
|
194
255
|
moduleManager.Module({
|
|
195
256
|
name: 'shopify-driver',
|
|
196
257
|
providers: [
|
|
197
|
-
|
|
258
|
+
ShopifyCartService,
|
|
259
|
+
RawProjectService,
|
|
198
260
|
],
|
|
199
261
|
controllers: [
|
|
200
262
|
LineItemsController,
|
|
@@ -205,6 +267,6 @@ exports.ShopifyDriver = __decorate([
|
|
|
205
267
|
})
|
|
206
268
|
], exports.ShopifyDriver);
|
|
207
269
|
// @ts-ignore
|
|
208
|
-
const VERSION = "1.1.
|
|
270
|
+
const VERSION = "1.1.82";
|
|
209
271
|
console.log('Driver version:', VERSION);
|
|
210
272
|
//# sourceMappingURL=shopify.driver.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = shopUrl;\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\r\n}","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
|
package/shopify.driver.esm.js
CHANGED
|
@@ -50,15 +50,16 @@ var E_DRIVER_TOKENS;
|
|
|
50
50
|
E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
|
|
51
51
|
})(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
|
|
52
52
|
|
|
53
|
-
let
|
|
53
|
+
let ShopifyCartService = class ShopifyCartService {
|
|
54
54
|
environments;
|
|
55
55
|
shopUrl;
|
|
56
56
|
constructor(environments) {
|
|
57
57
|
this.environments = environments;
|
|
58
|
-
|
|
58
|
+
const shopUrl = this.environments.input?.shopUrl;
|
|
59
|
+
if (!shopUrl) {
|
|
59
60
|
throw new Error('Shop URL is not defined');
|
|
60
61
|
}
|
|
61
|
-
this.shopUrl =
|
|
62
|
+
this.shopUrl = shopUrl;
|
|
62
63
|
}
|
|
63
64
|
;
|
|
64
65
|
async getCart() {
|
|
@@ -123,31 +124,91 @@ let CartService = class CartService {
|
|
|
123
124
|
}
|
|
124
125
|
;
|
|
125
126
|
};
|
|
126
|
-
|
|
127
|
+
ShopifyCartService = __decorate([
|
|
127
128
|
Injectable(),
|
|
128
129
|
__param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
129
130
|
__metadata("design:paramtypes", [Object])
|
|
130
|
-
],
|
|
131
|
+
], ShopifyCartService);
|
|
132
|
+
|
|
133
|
+
class LineItemModel {
|
|
134
|
+
rawProject = null;
|
|
135
|
+
origin;
|
|
136
|
+
constructor(item, project) {
|
|
137
|
+
this.origin = item;
|
|
138
|
+
if (!!project) {
|
|
139
|
+
this.rawProject = project;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
get hasProject() {
|
|
143
|
+
return !!this.rawProject;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
let RawProjectService = class RawProjectService {
|
|
148
|
+
environments;
|
|
149
|
+
apiGatewayUrl;
|
|
150
|
+
tenantId;
|
|
151
|
+
constructor(environments) {
|
|
152
|
+
this.environments = environments;
|
|
153
|
+
const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
|
|
154
|
+
const tenantId = this.environments.input.tenantId;
|
|
155
|
+
if (!apiGatewayUrl) {
|
|
156
|
+
throw new Error('Api Gateway URL is not defined');
|
|
157
|
+
}
|
|
158
|
+
if (!tenantId) {
|
|
159
|
+
throw new Error('Tenant ID is not defined');
|
|
160
|
+
}
|
|
161
|
+
this.apiGatewayUrl = apiGatewayUrl;
|
|
162
|
+
this.tenantId = tenantId;
|
|
163
|
+
}
|
|
164
|
+
;
|
|
165
|
+
async getRawProjects(projectId) {
|
|
166
|
+
try {
|
|
167
|
+
const requestUrl = new URL(this.apiGatewayUrl);
|
|
168
|
+
requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
|
|
169
|
+
requestUrl.searchParams.set('tenantId', this.tenantId);
|
|
170
|
+
requestUrl.searchParams.set('id', projectId);
|
|
171
|
+
return await fetch(requestUrl.href).then((res) => res.json());
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
console.error(error);
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
;
|
|
179
|
+
};
|
|
180
|
+
RawProjectService = __decorate([
|
|
181
|
+
Injectable(),
|
|
182
|
+
__param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
183
|
+
__metadata("design:paramtypes", [Object])
|
|
184
|
+
], RawProjectService);
|
|
131
185
|
|
|
132
186
|
let LineItemsController = class LineItemsController {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
187
|
+
shopifyCartService;
|
|
188
|
+
rawProjectService;
|
|
189
|
+
constructor(shopifyCartService, rawProjectService) {
|
|
190
|
+
this.shopifyCartService = shopifyCartService;
|
|
191
|
+
this.rawProjectService = rawProjectService;
|
|
136
192
|
}
|
|
137
193
|
;
|
|
138
194
|
async getLineItems() {
|
|
139
|
-
const cart = await this.
|
|
140
|
-
if (cart)
|
|
141
|
-
return cart.items;
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
195
|
+
const cart = await this.shopifyCartService.getCart();
|
|
196
|
+
if (!cart?.items)
|
|
144
197
|
return [];
|
|
198
|
+
const lineItems = [];
|
|
199
|
+
for (let item of cart.items) {
|
|
200
|
+
const projectId = item.properties.projectId;
|
|
201
|
+
const rawProject = await this.rawProjectService.getRawProjects(projectId);
|
|
202
|
+
const lineItem = new LineItemModel(item, rawProject);
|
|
203
|
+
lineItems.push(lineItem);
|
|
145
204
|
}
|
|
205
|
+
return lineItems;
|
|
146
206
|
}
|
|
147
207
|
};
|
|
148
208
|
LineItemsController = __decorate([
|
|
149
209
|
Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
|
|
150
|
-
__metadata("design:paramtypes", [
|
|
210
|
+
__metadata("design:paramtypes", [ShopifyCartService,
|
|
211
|
+
RawProjectService])
|
|
151
212
|
], LineItemsController);
|
|
152
213
|
|
|
153
214
|
let PreviewController = class PreviewController {
|
|
@@ -192,7 +253,8 @@ ShopifyDriver = __decorate([
|
|
|
192
253
|
Module({
|
|
193
254
|
name: 'shopify-driver',
|
|
194
255
|
providers: [
|
|
195
|
-
|
|
256
|
+
ShopifyCartService,
|
|
257
|
+
RawProjectService,
|
|
196
258
|
],
|
|
197
259
|
controllers: [
|
|
198
260
|
LineItemsController,
|
|
@@ -203,7 +265,7 @@ ShopifyDriver = __decorate([
|
|
|
203
265
|
})
|
|
204
266
|
], ShopifyDriver);
|
|
205
267
|
// @ts-ignore
|
|
206
|
-
const VERSION = "1.1.
|
|
268
|
+
const VERSION = "1.1.82";
|
|
207
269
|
console.log('Driver version:', VERSION);
|
|
208
270
|
|
|
209
271
|
export { ShopifyDriver };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Driver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = shopUrl;\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\r\n}","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Driver"],"mappings":"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"}
|
package/shopify.driver.umd.js
CHANGED
|
@@ -54,15 +54,16 @@
|
|
|
54
54
|
E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
|
|
55
55
|
})(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
|
|
56
56
|
|
|
57
|
-
let
|
|
57
|
+
let ShopifyCartService = class ShopifyCartService {
|
|
58
58
|
environments;
|
|
59
59
|
shopUrl;
|
|
60
60
|
constructor(environments) {
|
|
61
61
|
this.environments = environments;
|
|
62
|
-
|
|
62
|
+
const shopUrl = this.environments.input?.shopUrl;
|
|
63
|
+
if (!shopUrl) {
|
|
63
64
|
throw new Error('Shop URL is not defined');
|
|
64
65
|
}
|
|
65
|
-
this.shopUrl =
|
|
66
|
+
this.shopUrl = shopUrl;
|
|
66
67
|
}
|
|
67
68
|
;
|
|
68
69
|
async getCart() {
|
|
@@ -127,31 +128,91 @@
|
|
|
127
128
|
}
|
|
128
129
|
;
|
|
129
130
|
};
|
|
130
|
-
|
|
131
|
+
ShopifyCartService = __decorate([
|
|
131
132
|
moduleManager.Injectable(),
|
|
132
133
|
__param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
133
134
|
__metadata("design:paramtypes", [Object])
|
|
134
|
-
],
|
|
135
|
+
], ShopifyCartService);
|
|
136
|
+
|
|
137
|
+
class LineItemModel {
|
|
138
|
+
rawProject = null;
|
|
139
|
+
origin;
|
|
140
|
+
constructor(item, project) {
|
|
141
|
+
this.origin = item;
|
|
142
|
+
if (!!project) {
|
|
143
|
+
this.rawProject = project;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
get hasProject() {
|
|
147
|
+
return !!this.rawProject;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let RawProjectService = class RawProjectService {
|
|
152
|
+
environments;
|
|
153
|
+
apiGatewayUrl;
|
|
154
|
+
tenantId;
|
|
155
|
+
constructor(environments) {
|
|
156
|
+
this.environments = environments;
|
|
157
|
+
const apiGatewayUrl = this.environments.input?.apiGatewayUrl;
|
|
158
|
+
const tenantId = this.environments.input.tenantId;
|
|
159
|
+
if (!apiGatewayUrl) {
|
|
160
|
+
throw new Error('Api Gateway URL is not defined');
|
|
161
|
+
}
|
|
162
|
+
if (!tenantId) {
|
|
163
|
+
throw new Error('Tenant ID is not defined');
|
|
164
|
+
}
|
|
165
|
+
this.apiGatewayUrl = apiGatewayUrl;
|
|
166
|
+
this.tenantId = tenantId;
|
|
167
|
+
}
|
|
168
|
+
;
|
|
169
|
+
async getRawProjects(projectId) {
|
|
170
|
+
try {
|
|
171
|
+
const requestUrl = new URL(this.apiGatewayUrl);
|
|
172
|
+
requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';
|
|
173
|
+
requestUrl.searchParams.set('tenantId', this.tenantId);
|
|
174
|
+
requestUrl.searchParams.set('id', projectId);
|
|
175
|
+
return await fetch(requestUrl.href).then((res) => res.json());
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.error(error);
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
;
|
|
183
|
+
};
|
|
184
|
+
RawProjectService = __decorate([
|
|
185
|
+
moduleManager.Injectable(),
|
|
186
|
+
__param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
|
|
187
|
+
__metadata("design:paramtypes", [Object])
|
|
188
|
+
], RawProjectService);
|
|
135
189
|
|
|
136
190
|
let LineItemsController = class LineItemsController {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
191
|
+
shopifyCartService;
|
|
192
|
+
rawProjectService;
|
|
193
|
+
constructor(shopifyCartService, rawProjectService) {
|
|
194
|
+
this.shopifyCartService = shopifyCartService;
|
|
195
|
+
this.rawProjectService = rawProjectService;
|
|
140
196
|
}
|
|
141
197
|
;
|
|
142
198
|
async getLineItems() {
|
|
143
|
-
const cart = await this.
|
|
144
|
-
if (cart)
|
|
145
|
-
return cart.items;
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
199
|
+
const cart = await this.shopifyCartService.getCart();
|
|
200
|
+
if (!cart?.items)
|
|
148
201
|
return [];
|
|
202
|
+
const lineItems = [];
|
|
203
|
+
for (let item of cart.items) {
|
|
204
|
+
const projectId = item.properties.projectId;
|
|
205
|
+
const rawProject = await this.rawProjectService.getRawProjects(projectId);
|
|
206
|
+
const lineItem = new LineItemModel(item, rawProject);
|
|
207
|
+
lineItems.push(lineItem);
|
|
149
208
|
}
|
|
209
|
+
return lineItems;
|
|
150
210
|
}
|
|
151
211
|
};
|
|
152
212
|
LineItemsController = __decorate([
|
|
153
213
|
moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
|
|
154
|
-
__metadata("design:paramtypes", [
|
|
214
|
+
__metadata("design:paramtypes", [ShopifyCartService,
|
|
215
|
+
RawProjectService])
|
|
155
216
|
], LineItemsController);
|
|
156
217
|
|
|
157
218
|
let PreviewController = class PreviewController {
|
|
@@ -196,7 +257,8 @@
|
|
|
196
257
|
moduleManager.Module({
|
|
197
258
|
name: 'shopify-driver',
|
|
198
259
|
providers: [
|
|
199
|
-
|
|
260
|
+
ShopifyCartService,
|
|
261
|
+
RawProjectService,
|
|
200
262
|
],
|
|
201
263
|
controllers: [
|
|
202
264
|
LineItemsController,
|
|
@@ -207,7 +269,7 @@
|
|
|
207
269
|
})
|
|
208
270
|
], exports.ShopifyDriver);
|
|
209
271
|
// @ts-ignore
|
|
210
|
-
const VERSION = "1.1.
|
|
272
|
+
const VERSION = "1.1.82";
|
|
211
273
|
console.log('Driver version:', VERSION);
|
|
212
274
|
|
|
213
275
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = String(this.environments.eCommerceData?.shopUrl);\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@core/drivers/shopify/services/cart.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private CartService: CartService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.CartService.getCart();\r\n if (cart) {\r\n return cart.items;\r\n } else {\r\n return [];\r\n }\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartService } from '@core/drivers/shopify/services/cart.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/services/shopify-cart.service.ts","../../src/drivers/shopify/models/line-item.model.ts","../../src/drivers/shopify/services/raw-project.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Shopify } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class ShopifyCartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const shopUrl = this.environments.input?.shopUrl;\r\n if (!shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n this.shopUrl = shopUrl;\r\n };\r\n\r\n async getCart(): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async updateCart(updates: Record<string, number>): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(updates),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async changeLineItemQuantity(\r\n lineItemId: string,\r\n quantity?: number,\r\n properties?: Record<string, any>\r\n ): Promise<Shopify.Cart | null> {\r\n try {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const body = {\r\n id: lineItemId\r\n };\r\n\r\n if (properties) {\r\n body['properties'] = properties;\r\n }\r\n\r\n if (quantity) {\r\n body['quantity'] = quantity;\r\n }\r\n\r\n return await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n }).then((res) => res.json()) as Promise<Shopify.Cart>;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n return this.changeLineItemQuantity(lineItemId, 0);\r\n };\r\n\r\n};","import { Adapter, Shopify } from \"../types\";\r\n\r\nexport class LineItemModel {\r\n public rawProject: Adapter.RawProjectDto | null = null;\r\n public origin: Shopify.CartItem;\r\n\r\n constructor(\r\n item: Shopify.CartItem,\r\n project?: Adapter.RawProjectDto | null,\r\n ) {\r\n this.origin = item;\r\n if (!!project) {\r\n this.rawProject = project;\r\n }\r\n }\r\n\r\n get hasProject() {\r\n return !!this.rawProject;\r\n }\r\n}","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { IEnvironments } from \"@core/types\";\r\nimport type { Adapter } from \"@shopify.driver/types\";\r\n\r\n\r\n@Injectable()\r\nexport class RawProjectService {\r\n private apiGatewayUrl: string;\r\n private tenantId: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n ) {\r\n const apiGatewayUrl = this.environments.input?.apiGatewayUrl;\r\n const tenantId = this.environments.input.tenantId;\r\n if (!apiGatewayUrl) {\r\n throw new Error('Api Gateway URL is not defined');\r\n }\r\n if (!tenantId) {\r\n throw new Error('Tenant ID is not defined');\r\n }\r\n this.apiGatewayUrl = apiGatewayUrl;\r\n this.tenantId = tenantId;\r\n };\r\n\r\n async getRawProjects(projectId: string): Promise<Adapter.RawProjectDto | null> {\r\n try {\r\n const requestUrl = new URL(this.apiGatewayUrl);\r\n requestUrl.pathname = '/api/shopify-adapter/v1/raw-projects';\r\n requestUrl.searchParams.set('tenantId', this.tenantId);\r\n requestUrl.searchParams.set('id', projectId);\r\n return await fetch(\r\n requestUrl.href\r\n ).then((res) => res.json()) as Adapter.RawProjectDto;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { ShopifyCartService } from \"@core/drivers/shopify/services/shopify-cart.service\";\r\nimport { LineItemModel } from \"../models/line-item.model\";\r\nimport { RawProjectService } from \"../services/raw-project.service\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS)\r\nexport class LineItemsController implements ILineItemsController {\r\n constructor(\r\n private shopifyCartService: ShopifyCartService,\r\n private rawProjectService: RawProjectService,\r\n ) {};\r\n\r\n async getLineItems() {\r\n const cart = await this.shopifyCartService.getCart();\r\n if (!cart?.items) return [];\r\n\r\n const lineItems: LineItemModel[] = [];\r\n \r\n for (let item of cart.items) {\r\n const projectId = item.properties.projectId;\r\n const rawProject = await this.rawProjectService.getRawProjects(projectId);\r\n const lineItem = new LineItemModel(item, rawProject);\r\n lineItems.push(lineItem);\r\n }\r\n\r\n return lineItems;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IPreviewController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PREVIEW)\r\nexport class PreviewController implements IPreviewController {\r\n constructor() {};\r\n\r\n async getPreviewLink() {\r\n return 'https://www.google.com/preview';\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { AbstractPricingController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.PRICING)\r\nexport class PricingController implements AbstractPricingController { \r\n constructor() {};\r\n\r\n async getPrice() {\r\n return 100;\r\n }\r\n}","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { IReturnToEditController } from \"#types/abstract-controllers\";\r\n\r\n@Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT)\r\nexport class ReturnToEditController implements IReturnToEditController {\r\n constructor() {};\r\n\r\n async getReturnToEditLink() {\r\n return 'https://www.google.com/return-to-edit';\r\n }\r\n}","import { Module as Driver } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { ShopifyCartService } from '@core/drivers/shopify/services/shopify-cart.service';\r\nimport { RawProjectService } from './services/raw-project.service';\r\n\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n ShopifyCartService,\r\n RawProjectService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };\r\n// @ts-ignore\r\nconst VERSION: string = __APP_VERSION__;\r\nconsole.log('Driver version:', VERSION);"],"names":["Injectable","Inject","Controller","ShopifyDriver","Driver"],"mappings":"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"}
|