@savafeed/shopify-driver 1.1.44

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 ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@savafeed/shopify-driver",
3
+ "version": "1.1.44",
4
+ "main": "shopify.driver.cjs.js",
5
+ "module": "shopify.driver.esm.js",
6
+ "umd": "shopify.driver.umd.js",
7
+ "typings": "shopify.driver.d.ts",
8
+ "scripts": {
9
+ "test": "echo \"shopify-driver\""
10
+ },
11
+ "peerDependencies": {},
12
+ "dependencies": {
13
+ "@savafeed/module-manager": "^1.1.3",
14
+ "reflect-metadata": "^0.2.2"
15
+ },
16
+ "author": "Alexander (SavaFeeD) Shachnev",
17
+ "license": "ISC"
18
+ }
@@ -0,0 +1,3 @@
1
+ declare class ShopifyDriver {
2
+ }
3
+ export { ShopifyDriver };
@@ -0,0 +1,218 @@
1
+ 'use strict';
2
+
3
+ var moduleManager = require('@savafeed/module-manager');
4
+
5
+ /******************************************************************************
6
+ Copyright (c) Microsoft Corporation.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ ***************************************************************************** */
19
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
20
+
21
+
22
+ function __decorate(decorators, target, key, desc) {
23
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ }
28
+
29
+ function __param(paramIndex, decorator) {
30
+ return function (target, key) { decorator(target, key, paramIndex); }
31
+ }
32
+
33
+ function __metadata(metadataKey, metadataValue) {
34
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
35
+ }
36
+
37
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
38
+ var e = new Error(message);
39
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
40
+ };
41
+
42
+ var E_MANDATORY_CONTROLLERS;
43
+ (function (E_MANDATORY_CONTROLLERS) {
44
+ E_MANDATORY_CONTROLLERS["LINE_ITEMS"] = "line-items";
45
+ E_MANDATORY_CONTROLLERS["PREVIEW"] = "preview";
46
+ E_MANDATORY_CONTROLLERS["PRICING"] = "pricing";
47
+ E_MANDATORY_CONTROLLERS["RETURN_TO_EDIT"] = "return-to-edit";
48
+ })(E_MANDATORY_CONTROLLERS || (E_MANDATORY_CONTROLLERS = {}));
49
+
50
+ var E_DRIVER_TOKENS;
51
+ (function (E_DRIVER_TOKENS) {
52
+ E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
53
+ })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
54
+
55
+ let CartRepository = class CartRepository {
56
+ constructor() { }
57
+ ;
58
+ _cartData;
59
+ get cartData() {
60
+ return this._cartData;
61
+ }
62
+ ;
63
+ set cartData(value) {
64
+ this._cartData = value;
65
+ }
66
+ ;
67
+ get lineItems() {
68
+ return this._cartData.items;
69
+ }
70
+ };
71
+ CartRepository = __decorate([
72
+ moduleManager.Injectable(),
73
+ __metadata("design:paramtypes", [])
74
+ ], CartRepository);
75
+
76
+ let CartService = class CartService {
77
+ environments;
78
+ cartRepository;
79
+ shopUrl;
80
+ constructor(environments, cartRepository) {
81
+ this.environments = environments;
82
+ this.cartRepository = cartRepository;
83
+ if (!this.environments.eCommerceData?.shopUrl) {
84
+ throw new Error('Shop URL is not defined');
85
+ }
86
+ console.log('[Cart Service] this.cartRepository', this.cartRepository);
87
+ this.shopUrl = this.environments.eCommerceData?.shopUrl;
88
+ }
89
+ ;
90
+ async getCart() {
91
+ const requestUrl = new URL(this.shopUrl);
92
+ requestUrl.pathname = '/cart.js';
93
+ const response = await fetch(requestUrl.href);
94
+ const data = await response.json();
95
+ this.cartRepository.cartData = response;
96
+ return data;
97
+ }
98
+ ;
99
+ async updateCart(cart) {
100
+ const requestUrl = new URL(this.shopUrl);
101
+ requestUrl.pathname = '/cart/update.js';
102
+ const response = await fetch(requestUrl.href, {
103
+ method: 'POST',
104
+ headers: {
105
+ 'Content-Type': 'application/json',
106
+ },
107
+ body: JSON.stringify(cart),
108
+ });
109
+ const data = await response.json();
110
+ this.cartRepository.cartData = data;
111
+ return data;
112
+ }
113
+ ;
114
+ async changeLineItemQuantity(lineItemId, quantity) {
115
+ const requestUrl = new URL(this.shopUrl);
116
+ requestUrl.pathname = '/cart/change.js';
117
+ const response = await fetch(requestUrl.href, {
118
+ method: 'POST',
119
+ headers: {
120
+ 'Content-Type': 'application/json',
121
+ },
122
+ body: JSON.stringify({
123
+ id: lineItemId,
124
+ quantity: quantity,
125
+ }),
126
+ });
127
+ const data = await response.json();
128
+ this.cartRepository.cartData = data;
129
+ return data;
130
+ }
131
+ ;
132
+ async removeLineItem(lineItemId) {
133
+ const data = this.changeLineItemQuantity(lineItemId, 0);
134
+ this.cartRepository.cartData = data;
135
+ return data;
136
+ }
137
+ ;
138
+ };
139
+ CartService = __decorate([
140
+ moduleManager.Injectable(),
141
+ __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
142
+ __metadata("design:paramtypes", [Object, CartRepository])
143
+ ], CartService);
144
+
145
+ let LineItemsController = class LineItemsController {
146
+ cartService;
147
+ constructor(cartService) {
148
+ this.cartService = cartService;
149
+ }
150
+ ;
151
+ async getLineItems() {
152
+ const lineItems = this.cartService.getCart();
153
+ return lineItems;
154
+ }
155
+ };
156
+ LineItemsController = __decorate([
157
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
158
+ __metadata("design:paramtypes", [CartService])
159
+ ], LineItemsController);
160
+
161
+ let PreviewController = class PreviewController {
162
+ constructor() { }
163
+ ;
164
+ async getPreviewLink() {
165
+ return 'https://www.google.com/preview';
166
+ }
167
+ };
168
+ PreviewController = __decorate([
169
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.PREVIEW),
170
+ __metadata("design:paramtypes", [])
171
+ ], PreviewController);
172
+
173
+ let PricingController = class PricingController {
174
+ constructor() { }
175
+ ;
176
+ async getPrice() {
177
+ return 100;
178
+ }
179
+ };
180
+ PricingController = __decorate([
181
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.PRICING),
182
+ __metadata("design:paramtypes", [])
183
+ ], PricingController);
184
+
185
+ let ReturnToEditController = class ReturnToEditController {
186
+ constructor() { }
187
+ ;
188
+ async getReturnToEditLink() {
189
+ return 'https://www.google.com/return-to-edit';
190
+ }
191
+ };
192
+ ReturnToEditController = __decorate([
193
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT),
194
+ __metadata("design:paramtypes", [])
195
+ ], ReturnToEditController);
196
+
197
+ [
198
+ CartRepository,
199
+ CartService,
200
+ ].map((provider) => moduleManager.container.addProviderToPool("injectable" /* E_PROVIDER_TYPES.INJECTABLE */, provider));
201
+ exports.ShopifyDriver = class ShopifyDriver {
202
+ };
203
+ exports.ShopifyDriver = __decorate([
204
+ moduleManager.Module({
205
+ name: 'shopify-driver',
206
+ providers: [
207
+ CartRepository,
208
+ CartService,
209
+ ],
210
+ controllers: [
211
+ LineItemsController,
212
+ PreviewController,
213
+ PricingController,
214
+ ReturnToEditController,
215
+ ],
216
+ })
217
+ ], exports.ShopifyDriver);
218
+ //# sourceMappingURL=shopify.driver.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.driver.cjs.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n private _cartData: any;\r\n\r\n public get cartData() {\r\n return this._cartData;\r\n };\r\n\r\n public set cartData(value: any) {\r\n this._cartData = value;\r\n };\r\n\r\n public get lineItems() {\r\n return this._cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n console.log('[Cart Service] this.cartRepository', this.cartRepository);\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = response;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\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 lineItems = this.cartService.getCart();\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 { container, Module as Driver, E_PROVIDER_TYPES } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n[\r\n CartRepository,\r\n CartService,\r\n].map((provider) => container.addProviderToPool(E_PROVIDER_TYPES.INJECTABLE, provider));\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };"],"names":["Injectable","Inject","Controller","container","ShopifyDriver","Driver"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare class ShopifyDriver {
2
+ }
3
+ export { ShopifyDriver };
@@ -0,0 +1,218 @@
1
+ import { Injectable, Inject, Controller, container, Module } from '@savafeed/module-manager';
2
+
3
+ /******************************************************************************
4
+ Copyright (c) Microsoft Corporation.
5
+
6
+ Permission to use, copy, modify, and/or distribute this software for any
7
+ purpose with or without fee is hereby granted.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
16
+ ***************************************************************************** */
17
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
18
+
19
+
20
+ function __decorate(decorators, target, key, desc) {
21
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
23
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
25
+ }
26
+
27
+ function __param(paramIndex, decorator) {
28
+ return function (target, key) { decorator(target, key, paramIndex); }
29
+ }
30
+
31
+ function __metadata(metadataKey, metadataValue) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
33
+ }
34
+
35
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
36
+ var e = new Error(message);
37
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
38
+ };
39
+
40
+ var E_MANDATORY_CONTROLLERS;
41
+ (function (E_MANDATORY_CONTROLLERS) {
42
+ E_MANDATORY_CONTROLLERS["LINE_ITEMS"] = "line-items";
43
+ E_MANDATORY_CONTROLLERS["PREVIEW"] = "preview";
44
+ E_MANDATORY_CONTROLLERS["PRICING"] = "pricing";
45
+ E_MANDATORY_CONTROLLERS["RETURN_TO_EDIT"] = "return-to-edit";
46
+ })(E_MANDATORY_CONTROLLERS || (E_MANDATORY_CONTROLLERS = {}));
47
+
48
+ var E_DRIVER_TOKENS;
49
+ (function (E_DRIVER_TOKENS) {
50
+ E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
51
+ })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
52
+
53
+ let CartRepository = class CartRepository {
54
+ constructor() { }
55
+ ;
56
+ _cartData;
57
+ get cartData() {
58
+ return this._cartData;
59
+ }
60
+ ;
61
+ set cartData(value) {
62
+ this._cartData = value;
63
+ }
64
+ ;
65
+ get lineItems() {
66
+ return this._cartData.items;
67
+ }
68
+ };
69
+ CartRepository = __decorate([
70
+ Injectable(),
71
+ __metadata("design:paramtypes", [])
72
+ ], CartRepository);
73
+
74
+ let CartService = class CartService {
75
+ environments;
76
+ cartRepository;
77
+ shopUrl;
78
+ constructor(environments, cartRepository) {
79
+ this.environments = environments;
80
+ this.cartRepository = cartRepository;
81
+ if (!this.environments.eCommerceData?.shopUrl) {
82
+ throw new Error('Shop URL is not defined');
83
+ }
84
+ console.log('[Cart Service] this.cartRepository', this.cartRepository);
85
+ this.shopUrl = this.environments.eCommerceData?.shopUrl;
86
+ }
87
+ ;
88
+ async getCart() {
89
+ const requestUrl = new URL(this.shopUrl);
90
+ requestUrl.pathname = '/cart.js';
91
+ const response = await fetch(requestUrl.href);
92
+ const data = await response.json();
93
+ this.cartRepository.cartData = response;
94
+ return data;
95
+ }
96
+ ;
97
+ async updateCart(cart) {
98
+ const requestUrl = new URL(this.shopUrl);
99
+ requestUrl.pathname = '/cart/update.js';
100
+ const response = await fetch(requestUrl.href, {
101
+ method: 'POST',
102
+ headers: {
103
+ 'Content-Type': 'application/json',
104
+ },
105
+ body: JSON.stringify(cart),
106
+ });
107
+ const data = await response.json();
108
+ this.cartRepository.cartData = data;
109
+ return data;
110
+ }
111
+ ;
112
+ async changeLineItemQuantity(lineItemId, quantity) {
113
+ const requestUrl = new URL(this.shopUrl);
114
+ requestUrl.pathname = '/cart/change.js';
115
+ const response = await fetch(requestUrl.href, {
116
+ method: 'POST',
117
+ headers: {
118
+ 'Content-Type': 'application/json',
119
+ },
120
+ body: JSON.stringify({
121
+ id: lineItemId,
122
+ quantity: quantity,
123
+ }),
124
+ });
125
+ const data = await response.json();
126
+ this.cartRepository.cartData = data;
127
+ return data;
128
+ }
129
+ ;
130
+ async removeLineItem(lineItemId) {
131
+ const data = this.changeLineItemQuantity(lineItemId, 0);
132
+ this.cartRepository.cartData = data;
133
+ return data;
134
+ }
135
+ ;
136
+ };
137
+ CartService = __decorate([
138
+ Injectable(),
139
+ __param(0, Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
140
+ __metadata("design:paramtypes", [Object, CartRepository])
141
+ ], CartService);
142
+
143
+ let LineItemsController = class LineItemsController {
144
+ cartService;
145
+ constructor(cartService) {
146
+ this.cartService = cartService;
147
+ }
148
+ ;
149
+ async getLineItems() {
150
+ const lineItems = this.cartService.getCart();
151
+ return lineItems;
152
+ }
153
+ };
154
+ LineItemsController = __decorate([
155
+ Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
156
+ __metadata("design:paramtypes", [CartService])
157
+ ], LineItemsController);
158
+
159
+ let PreviewController = class PreviewController {
160
+ constructor() { }
161
+ ;
162
+ async getPreviewLink() {
163
+ return 'https://www.google.com/preview';
164
+ }
165
+ };
166
+ PreviewController = __decorate([
167
+ Controller(E_MANDATORY_CONTROLLERS.PREVIEW),
168
+ __metadata("design:paramtypes", [])
169
+ ], PreviewController);
170
+
171
+ let PricingController = class PricingController {
172
+ constructor() { }
173
+ ;
174
+ async getPrice() {
175
+ return 100;
176
+ }
177
+ };
178
+ PricingController = __decorate([
179
+ Controller(E_MANDATORY_CONTROLLERS.PRICING),
180
+ __metadata("design:paramtypes", [])
181
+ ], PricingController);
182
+
183
+ let ReturnToEditController = class ReturnToEditController {
184
+ constructor() { }
185
+ ;
186
+ async getReturnToEditLink() {
187
+ return 'https://www.google.com/return-to-edit';
188
+ }
189
+ };
190
+ ReturnToEditController = __decorate([
191
+ Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT),
192
+ __metadata("design:paramtypes", [])
193
+ ], ReturnToEditController);
194
+
195
+ [
196
+ CartRepository,
197
+ CartService,
198
+ ].map((provider) => container.addProviderToPool("injectable" /* E_PROVIDER_TYPES.INJECTABLE */, provider));
199
+ let ShopifyDriver = class ShopifyDriver {
200
+ };
201
+ ShopifyDriver = __decorate([
202
+ Module({
203
+ name: 'shopify-driver',
204
+ providers: [
205
+ CartRepository,
206
+ CartService,
207
+ ],
208
+ controllers: [
209
+ LineItemsController,
210
+ PreviewController,
211
+ PricingController,
212
+ ReturnToEditController,
213
+ ],
214
+ })
215
+ ], ShopifyDriver);
216
+
217
+ export { ShopifyDriver };
218
+ //# sourceMappingURL=shopify.driver.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.driver.esm.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n private _cartData: any;\r\n\r\n public get cartData() {\r\n return this._cartData;\r\n };\r\n\r\n public set cartData(value: any) {\r\n this._cartData = value;\r\n };\r\n\r\n public get lineItems() {\r\n return this._cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n console.log('[Cart Service] this.cartRepository', this.cartRepository);\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = response;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\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 lineItems = this.cartService.getCart();\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 { container, Module as Driver, E_PROVIDER_TYPES } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n[\r\n CartRepository,\r\n CartService,\r\n].map((provider) => container.addProviderToPool(E_PROVIDER_TYPES.INJECTABLE, provider));\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };"],"names":["Driver"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare class ShopifyDriver {
2
+ }
3
+ export { ShopifyDriver };
@@ -0,0 +1,222 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@savafeed/module-manager')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@savafeed/module-manager'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["driver-manager"] = {}, global.iocModuleManager));
5
+ })(this, (function (exports, moduleManager) { 'use strict';
6
+
7
+ /******************************************************************************
8
+ Copyright (c) Microsoft Corporation.
9
+
10
+ Permission to use, copy, modify, and/or distribute this software for any
11
+ purpose with or without fee is hereby granted.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
+ PERFORMANCE OF THIS SOFTWARE.
20
+ ***************************************************************************** */
21
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
22
+
23
+
24
+ function __decorate(decorators, target, key, desc) {
25
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29
+ }
30
+
31
+ function __param(paramIndex, decorator) {
32
+ return function (target, key) { decorator(target, key, paramIndex); }
33
+ }
34
+
35
+ function __metadata(metadataKey, metadataValue) {
36
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
37
+ }
38
+
39
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
40
+ var e = new Error(message);
41
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
42
+ };
43
+
44
+ var E_MANDATORY_CONTROLLERS;
45
+ (function (E_MANDATORY_CONTROLLERS) {
46
+ E_MANDATORY_CONTROLLERS["LINE_ITEMS"] = "line-items";
47
+ E_MANDATORY_CONTROLLERS["PREVIEW"] = "preview";
48
+ E_MANDATORY_CONTROLLERS["PRICING"] = "pricing";
49
+ E_MANDATORY_CONTROLLERS["RETURN_TO_EDIT"] = "return-to-edit";
50
+ })(E_MANDATORY_CONTROLLERS || (E_MANDATORY_CONTROLLERS = {}));
51
+
52
+ var E_DRIVER_TOKENS;
53
+ (function (E_DRIVER_TOKENS) {
54
+ E_DRIVER_TOKENS["ENVIRONMENTS"] = "ENVIRONMENTS";
55
+ })(E_DRIVER_TOKENS || (E_DRIVER_TOKENS = {}));
56
+
57
+ let CartRepository = class CartRepository {
58
+ constructor() { }
59
+ ;
60
+ _cartData;
61
+ get cartData() {
62
+ return this._cartData;
63
+ }
64
+ ;
65
+ set cartData(value) {
66
+ this._cartData = value;
67
+ }
68
+ ;
69
+ get lineItems() {
70
+ return this._cartData.items;
71
+ }
72
+ };
73
+ CartRepository = __decorate([
74
+ moduleManager.Injectable(),
75
+ __metadata("design:paramtypes", [])
76
+ ], CartRepository);
77
+
78
+ let CartService = class CartService {
79
+ environments;
80
+ cartRepository;
81
+ shopUrl;
82
+ constructor(environments, cartRepository) {
83
+ this.environments = environments;
84
+ this.cartRepository = cartRepository;
85
+ if (!this.environments.eCommerceData?.shopUrl) {
86
+ throw new Error('Shop URL is not defined');
87
+ }
88
+ console.log('[Cart Service] this.cartRepository', this.cartRepository);
89
+ this.shopUrl = this.environments.eCommerceData?.shopUrl;
90
+ }
91
+ ;
92
+ async getCart() {
93
+ const requestUrl = new URL(this.shopUrl);
94
+ requestUrl.pathname = '/cart.js';
95
+ const response = await fetch(requestUrl.href);
96
+ const data = await response.json();
97
+ this.cartRepository.cartData = response;
98
+ return data;
99
+ }
100
+ ;
101
+ async updateCart(cart) {
102
+ const requestUrl = new URL(this.shopUrl);
103
+ requestUrl.pathname = '/cart/update.js';
104
+ const response = await fetch(requestUrl.href, {
105
+ method: 'POST',
106
+ headers: {
107
+ 'Content-Type': 'application/json',
108
+ },
109
+ body: JSON.stringify(cart),
110
+ });
111
+ const data = await response.json();
112
+ this.cartRepository.cartData = data;
113
+ return data;
114
+ }
115
+ ;
116
+ async changeLineItemQuantity(lineItemId, quantity) {
117
+ const requestUrl = new URL(this.shopUrl);
118
+ requestUrl.pathname = '/cart/change.js';
119
+ const response = await fetch(requestUrl.href, {
120
+ method: 'POST',
121
+ headers: {
122
+ 'Content-Type': 'application/json',
123
+ },
124
+ body: JSON.stringify({
125
+ id: lineItemId,
126
+ quantity: quantity,
127
+ }),
128
+ });
129
+ const data = await response.json();
130
+ this.cartRepository.cartData = data;
131
+ return data;
132
+ }
133
+ ;
134
+ async removeLineItem(lineItemId) {
135
+ const data = this.changeLineItemQuantity(lineItemId, 0);
136
+ this.cartRepository.cartData = data;
137
+ return data;
138
+ }
139
+ ;
140
+ };
141
+ CartService = __decorate([
142
+ moduleManager.Injectable(),
143
+ __param(0, moduleManager.Inject(E_DRIVER_TOKENS.ENVIRONMENTS)),
144
+ __metadata("design:paramtypes", [Object, CartRepository])
145
+ ], CartService);
146
+
147
+ let LineItemsController = class LineItemsController {
148
+ cartService;
149
+ constructor(cartService) {
150
+ this.cartService = cartService;
151
+ }
152
+ ;
153
+ async getLineItems() {
154
+ const lineItems = this.cartService.getCart();
155
+ return lineItems;
156
+ }
157
+ };
158
+ LineItemsController = __decorate([
159
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.LINE_ITEMS),
160
+ __metadata("design:paramtypes", [CartService])
161
+ ], LineItemsController);
162
+
163
+ let PreviewController = class PreviewController {
164
+ constructor() { }
165
+ ;
166
+ async getPreviewLink() {
167
+ return 'https://www.google.com/preview';
168
+ }
169
+ };
170
+ PreviewController = __decorate([
171
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.PREVIEW),
172
+ __metadata("design:paramtypes", [])
173
+ ], PreviewController);
174
+
175
+ let PricingController = class PricingController {
176
+ constructor() { }
177
+ ;
178
+ async getPrice() {
179
+ return 100;
180
+ }
181
+ };
182
+ PricingController = __decorate([
183
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.PRICING),
184
+ __metadata("design:paramtypes", [])
185
+ ], PricingController);
186
+
187
+ let ReturnToEditController = class ReturnToEditController {
188
+ constructor() { }
189
+ ;
190
+ async getReturnToEditLink() {
191
+ return 'https://www.google.com/return-to-edit';
192
+ }
193
+ };
194
+ ReturnToEditController = __decorate([
195
+ moduleManager.Controller(E_MANDATORY_CONTROLLERS.RETURN_TO_EDIT),
196
+ __metadata("design:paramtypes", [])
197
+ ], ReturnToEditController);
198
+
199
+ [
200
+ CartRepository,
201
+ CartService,
202
+ ].map((provider) => moduleManager.container.addProviderToPool("injectable" /* E_PROVIDER_TYPES.INJECTABLE */, provider));
203
+ exports.ShopifyDriver = class ShopifyDriver {
204
+ };
205
+ exports.ShopifyDriver = __decorate([
206
+ moduleManager.Module({
207
+ name: 'shopify-driver',
208
+ providers: [
209
+ CartRepository,
210
+ CartService,
211
+ ],
212
+ controllers: [
213
+ LineItemsController,
214
+ PreviewController,
215
+ PricingController,
216
+ ReturnToEditController,
217
+ ],
218
+ })
219
+ ], exports.ShopifyDriver);
220
+
221
+ }));
222
+ //# sourceMappingURL=shopify.driver.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.driver.umd.js","sources":["../../src/types/mandatory-controllers.enum.ts","../../src/types/tokens.enum.ts","../../src/drivers/shopify/repositories/cart.repository.ts","../../src/drivers/shopify/services/cart.service.ts","../../src/drivers/shopify/controllers/line-items.controller.ts","../../src/drivers/shopify/controllers/preview.controller.ts","../../src/drivers/shopify/controllers/pricing.controller.ts","../../src/drivers/shopify/controllers/return-to-edit.controller.ts","../../src/drivers/shopify/index.driver.ts"],"sourcesContent":["export enum E_MANDATORY_CONTROLLERS {\r\n LINE_ITEMS = 'line-items',\r\n PREVIEW = 'preview',\r\n PRICING = 'pricing',\r\n RETURN_TO_EDIT = 'return-to-edit',\r\n};","export enum E_DRIVER_TOKENS {\r\n ENVIRONMENTS = 'ENVIRONMENTS',\r\n};","import { Injectable } from \"@savafeed/module-manager\";\r\n\r\n@Injectable()\r\nexport class CartRepository {\r\n\r\n constructor() {};\r\n\r\n private _cartData: any;\r\n\r\n public get cartData() {\r\n return this._cartData;\r\n };\r\n\r\n public set cartData(value: any) {\r\n this._cartData = value;\r\n };\r\n\r\n public get lineItems() {\r\n return this._cartData.items;\r\n }\r\n \r\n};","import { Inject, Injectable } from \"@savafeed/module-manager\";\r\nimport { E_DRIVER_TOKENS } from \"#types/tokens.enum\";\r\nimport { CartRepository } from \"@shopify.driver/repositories/cart.repository\";\r\nimport { IEnvironments } from \"@core/types\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private shopUrl: string;\r\n\r\n constructor(\r\n @Inject(E_DRIVER_TOKENS.ENVIRONMENTS) private environments: IEnvironments,\r\n private cartRepository: CartRepository,\r\n ) {\r\n if (!this.environments.eCommerceData?.shopUrl) {\r\n throw new Error('Shop URL is not defined');\r\n }\r\n console.log('[Cart Service] this.cartRepository', this.cartRepository);\r\n this.shopUrl = this.environments.eCommerceData?.shopUrl;\r\n };\r\n\r\n async getCart() {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart.js';\r\n const response = await fetch(requestUrl.href);\r\n const data = await response.json();\r\n this.cartRepository.cartData = response;\r\n return data;\r\n };\r\n\r\n async updateCart(cart: any) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/update.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async changeLineItemQuantity(lineItemId: string, quantity: number) {\r\n const requestUrl = new URL(this.shopUrl);\r\n requestUrl.pathname = '/cart/change.js';\r\n const response = await fetch(requestUrl.href, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id: lineItemId,\r\n quantity: quantity,\r\n }),\r\n });\r\n const data = await response.json();\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n async removeLineItem(lineItemId: string) {\r\n const data = this.changeLineItemQuantity(lineItemId, 0);\r\n this.cartRepository.cartData = data;\r\n return data;\r\n };\r\n\r\n};","import { Controller } from \"@savafeed/module-manager\";\r\nimport { E_MANDATORY_CONTROLLERS } from \"#types/mandatory-controllers.enum\";\r\nimport { ILineItemsController } from \"#types/abstract-controllers\";\r\nimport { CartService } from \"@shopify.driver/services/cart.service\";\r\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 lineItems = this.cartService.getCart();\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 { container, Module as Driver, E_PROVIDER_TYPES } from '@savafeed/module-manager';\r\nimport { LineItemsController } from '@shopify.driver/controllers/line-items.controller';\r\nimport { PreviewController } from '@shopify.driver/controllers/preview.controller';\r\nimport { PricingController } from '@shopify.driver/controllers/pricing.controller';\r\nimport { ReturnToEditController } from '@shopify.driver/controllers/return-to-edit.controller';\r\nimport { CartRepository } from '@shopify.driver/repositories/cart.repository';\r\nimport { CartService } from '@shopify.driver/services/cart.service';\r\n\r\n[\r\n CartRepository,\r\n CartService,\r\n].map((provider) => container.addProviderToPool(E_PROVIDER_TYPES.INJECTABLE, provider));\r\n\r\n@Driver({\r\n name: 'shopify-driver',\r\n providers: [\r\n CartRepository,\r\n CartService,\r\n ],\r\n controllers: [\r\n LineItemsController,\r\n PreviewController,\r\n PricingController,\r\n ReturnToEditController,\r\n ],\r\n})\r\nexport class ShopifyDriver { };"],"names":["Injectable","Inject","Controller","container","ShopifyDriver","Driver"],"mappings":"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"}