@nuskin/ns-product-lib 2.13.2-cx24-511910.4 → 2.13.3-cx24-5694.1

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuskin/ns-product-lib",
3
- "version": "2.13.2-cx24-511910.4",
3
+ "version": "2.13.3-cx24-5694.1",
4
4
  "description": "This project contains shared Product models and code between the backend and frontend.",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -0,0 +1,13 @@
1
+
2
+ const wholesalePrice = require('./wholesalePrice');
3
+ const retailPrice = require('./retailPrice');
4
+ const retailSubscriptionPrice = require('./retailSubscriptionPrice')
5
+ const wholesaleSubscriptionPrice = require('./wholesaleSubscriptionPrice')
6
+
7
+
8
+ module.exports = {
9
+ mapWholesalePrice: wholesalePrice,
10
+ mapRetailPrice: retailPrice,
11
+ mapRetailSubscriptionPrice: retailSubscriptionPrice,
12
+ mapWholesaleSubscriptionPrice: wholesaleSubscriptionPrice
13
+ }
@@ -0,0 +1,22 @@
1
+
2
+
3
+ /**
4
+ * Map retail price
5
+ * Map retailSales if it has sales/promotions
6
+ * @param {obj} product
7
+ * @return {number} retailPrice
8
+ */
9
+ function retailPrice(product) {
10
+ const { price, totalPrice } = product;
11
+ const productPrice = totalPrice ? totalPrice : price;
12
+
13
+ if (productPrice.retailSales) {
14
+
15
+ return productPrice.retailSales;
16
+ }
17
+
18
+ return productPrice.retail;
19
+
20
+ }
21
+
22
+ module.exports = retailPrice;
@@ -0,0 +1,22 @@
1
+
2
+
3
+ /**
4
+ * Map retail subscription price
5
+ * Map retailSales if it has sales/promotions
6
+ * @param {obj} product
7
+ * @return {number} retail subscpription price
8
+ */
9
+ function retailSubscriptionPrice(product) {
10
+ const { price, totalPrice } = product;
11
+ const productPrice = totalPrice ? totalPrice : price;
12
+
13
+ if (productPrice.retailSales) {
14
+
15
+ return productPrice.retailSales;
16
+ }
17
+
18
+ return productPrice.retailSubscription;
19
+
20
+ }
21
+
22
+ module.exports = retailSubscriptionPrice;
@@ -0,0 +1,20 @@
1
+
2
+
3
+ /**
4
+ * Map wholesale price
5
+ * Map wholesaleSales if it has sales/promotions
6
+ * @param {*} product
7
+ * @return {number} wholesalePrice
8
+ */
9
+ function wholeSalePrice(product) {
10
+ const { price, totalPrice } = product;
11
+ const productPrice = totalPrice ? totalPrice : price;
12
+
13
+ if (productPrice.wholesaleSales) {
14
+ return productPrice.wholesaleSales;
15
+ }
16
+
17
+ return productPrice.wholesale;
18
+ }
19
+
20
+ module.exports = wholeSalePrice;
@@ -0,0 +1,22 @@
1
+
2
+
3
+ /**
4
+ * Map wholesale subscription price
5
+ * Map wholesaleSales if it has sales/promotions
6
+ * @param {obj} product
7
+ * @return {number} wholesale subscription price
8
+ */
9
+ function wholesaleSubscriptionPrice(product) {
10
+ const { price, totalPrice } = product;
11
+ const productPrice = totalPrice ? totalPrice : price;
12
+
13
+ if (productPrice.wholesaleSales) {
14
+
15
+ return productPrice.wholesaleSales;
16
+ }
17
+
18
+ return productPrice.wholesaleSubscription;
19
+
20
+ }
21
+
22
+ module.exports = wholesaleSubscriptionPrice;
@@ -3,6 +3,11 @@ const { getProductByIdQuery } = require('./query');
3
3
  const ProductStatus = require("../models/productStatus");
4
4
  const CustomerTypes = require('./customerTypes');
5
5
  const Product = require("../product");
6
+ const {
7
+ mapWholesalePrice,
8
+ mapRetailPrice,
9
+ mapRetailSubscriptionPrice,
10
+ mapWholesaleSubscriptionPrice } = require('./mappers');
6
11
 
7
12
  const defaultPayload = {
8
13
  operationName: "getProduct",
@@ -42,7 +47,12 @@ async function getProduct(id, market, locale, config) {
42
47
  const payload = {
43
48
  ...defaultPayload,
44
49
  query: getProductByIdQuery,
45
- variables: { id, market, locale }
50
+ variables: {
51
+ id,
52
+ market,
53
+ locale,
54
+ quantity: 1 // set defaul to 1
55
+ }
46
56
  }
47
57
 
48
58
  try {
@@ -119,15 +129,15 @@ function mapProduct(product, market, locale, config) {
119
129
  "cv": (defaultVariant.points) ? defaultVariant.points.wholesale.cv : 0,
120
130
  "pv": (defaultVariant.points) ? defaultVariant.points.wholesale.pv : 0,
121
131
  "priceType": "WRTL",
122
- "price": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.retail : defaultVariant.price.retail,
132
+ "price": mapRetailPrice(defaultVariant),
123
133
  "priceMap": {
124
- "WRTL": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.retail : defaultVariant.price.retail,
125
- "WADW-WRTL": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.retailSubscription : defaultVariant.price.retail,
126
- "WADR": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.retailSubscription : defaultVariant.price.retailSubscription, //retail ADR (subscription) price
127
- "RTL": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.retail : defaultVariant.price.retail,
128
- "WWHL": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.wholesale : defaultVariant.price.wholesale,
129
- "WADW": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.wholesaleSubscription : defaultVariant.price.wholesaleSubscription,//wholesale ADR (subscription price)
130
- "WHL": (defaultVariant.totalPrice) ? defaultVariant.totalPrice.wholesale : defaultVariant.price.wholesale
134
+ "WRTL": mapRetailPrice(defaultVariant),
135
+ "WADW-WRTL": mapRetailSubscriptionPrice(defaultVariant),
136
+ "WADR": mapRetailSubscriptionPrice(defaultVariant), //retail ADR (subscription) price
137
+ "RTL": mapRetailPrice(defaultVariant),
138
+ "WWHL": mapWholesalePrice(defaultVariant),
139
+ "WADW": mapWholesaleSubscriptionPrice(defaultVariant),//wholesale ADR (subscription price)
140
+ "WHL": mapWholesalePrice(defaultVariant)
131
141
  },
132
142
  "cvMap": {
133
143
  "WWHL": (defaultVariant.points) ? defaultVariant.points.wholesale.cv : 0,
@@ -229,15 +239,15 @@ function mapVariants(product) {
229
239
  "cv": (variant.points) ? variant.points.wholesale.cv : 0,
230
240
  "pv": (variant.points) ? variant.points.wholesale.pv : 0,
231
241
  "priceType": "WRTL",
232
- "price": (variant.totalPrice) ? variant.totalPrice.retail : variant.price.retail,
242
+ "price": mapRetailPrice(variant),
233
243
  "priceMap": {
234
- "WRTL": (variant.totalPrice) ? variant.totalPrice.retail : variant.price.retail,
235
- "WADW-WRTL": (variant.totalPrice) ? variant.totalPrice.retailSubscription : variant.price.retail,
236
- "WADR": (variant.totalPrice) ? variant.totalPrice.retailSubscription : variant.price.retailSubscription, //retail ADR (subscription) price
237
- "RTL": (variant.totalPrice) ? variant.totalPrice.retail : variant.price.retail,
238
- "WWHL": (variant.totalPrice) ? variant.totalPrice.wholesale : variant.price.wholesale,
239
- "WADW": (variant.totalPrice) ? variant.totalPrice.wholesaleSubscription : variant.price.wholesaleSubscription,//wholesale ADR (subscription price)
240
- "WHL": (variant.totalPrice) ? variant.totalPrice.wholesale : variant.price.wholesale
244
+ "WRTL": mapRetailPrice(variant),
245
+ "WADW-WRTL": mapRetailSubscriptionPrice(variant),
246
+ "WADR": mapRetailSubscriptionPrice(variant), //retail ADR (subscription) price
247
+ "RTL": mapRetailPrice(variant),
248
+ "WWHL": mapWholesalePrice(variant),
249
+ "WADW": mapWholesaleSubscriptionPrice(variant),//wholesale ADR (subscription price)
250
+ "WHL": mapWholesalePrice(variant)
241
251
  },
242
252
  "cvMap": {
243
253
  "WWHL": (variant.points) ? variant.points.wholesale.cv : 0,
@@ -0,0 +1,534 @@
1
+ "use strict";
2
+
3
+ // eslint-disable-next-line max-len
4
+ const getProductByIdQuery = `query getProduct($id: String!, $market: String, $language: String, $useContentSource: String, $okta: String, $quantity: Int) {
5
+ productById(
6
+ id: $id
7
+ market: $market
8
+ language: $language
9
+ useContentSource: $useContentSource
10
+ okta: $okta
11
+ quantity: $quantity
12
+ ) {
13
+ ...Product
14
+ bundle {
15
+ ...Kit
16
+ __typename
17
+ }
18
+ __typename
19
+ }
20
+ }
21
+
22
+ fragment Product on Product {
23
+ id
24
+ slug
25
+ title
26
+ secondaryTitle
27
+ productImages {
28
+ url
29
+ alt
30
+ thumbnail
31
+ __typename
32
+ }
33
+ salesLabel
34
+ salesText
35
+ description
36
+ salesDisclaimer
37
+ variantSelectLabel
38
+ variants {
39
+ ...Variant
40
+ __typename
41
+ }
42
+ features {
43
+ image {
44
+ url
45
+ alt
46
+ thumbnail
47
+ __typename
48
+ }
49
+ subtitle
50
+ features
51
+ backgroundColor
52
+ textColor
53
+ __typename
54
+ }
55
+ productDetails {
56
+ description
57
+ includedItems
58
+ highlights {
59
+ iconUrl
60
+ label
61
+ __typename
62
+ }
63
+ originCountry
64
+ importer
65
+ warnings
66
+ __typename
67
+ }
68
+ benefits {
69
+ benefits
70
+ image {
71
+ url
72
+ alt
73
+ thumbnail
74
+ __typename
75
+ }
76
+ youTubeVideoId
77
+ __typename
78
+ }
79
+ results {
80
+ summary
81
+ results {
82
+ percentage
83
+ text
84
+ __typename
85
+ }
86
+ report {
87
+ url
88
+ text
89
+ __typename
90
+ }
91
+ image {
92
+ url
93
+ alt
94
+ thumbnail
95
+ __typename
96
+ }
97
+ youTubeVideoId
98
+ __typename
99
+ }
100
+ sustainability {
101
+ youTubeVideoId
102
+ image {
103
+ url
104
+ __typename
105
+ }
106
+ description
107
+ highlights {
108
+ image {
109
+ url
110
+ __typename
111
+ }
112
+ description
113
+ __typename
114
+ }
115
+ __typename
116
+ }
117
+ usage {
118
+ steps
119
+ recommendations
120
+ warnings
121
+ additionalText
122
+ image {
123
+ url
124
+ alt
125
+ thumbnail
126
+ __typename
127
+ }
128
+ youTubeVideoId
129
+ markdown
130
+ __typename
131
+ }
132
+ resources {
133
+ title
134
+ url
135
+ image {
136
+ url
137
+ alt
138
+ thumbnail
139
+ __typename
140
+ }
141
+ __typename
142
+ }
143
+ warranty
144
+ faqs {
145
+ question
146
+ answers
147
+ __typename
148
+ }
149
+ ingredients {
150
+ productName
151
+ allIngredients
152
+ otherIngredients
153
+ activeIngredients
154
+ inactiveIngredients
155
+ ingredientDisclaimers
156
+ markdown
157
+ keyIngredients {
158
+ image {
159
+ url
160
+ alt
161
+ thumbnail
162
+ __typename
163
+ }
164
+ name
165
+ description
166
+ __typename
167
+ }
168
+ nutritionInformationImage {
169
+ url
170
+ alt
171
+ __typename
172
+ }
173
+ __typename
174
+ }
175
+ disclaimers
176
+ disclaimerWarnings {
177
+ icon {
178
+ url
179
+ alt
180
+ __typename
181
+ }
182
+ markdown
183
+ __typename
184
+ }
185
+ seoInformation {
186
+ metaDescription
187
+ metaTitle
188
+ canonicalURL
189
+ ogImage {
190
+ url
191
+ alt
192
+ __typename
193
+ }
194
+ __typename
195
+ }
196
+ thirdPartyScripts
197
+ productDataSource {
198
+ source
199
+ webBaseUrl
200
+ apiBaseUrl
201
+ storeId
202
+ __typename
203
+ }
204
+ error {
205
+ name
206
+ errors
207
+ lines
208
+ message
209
+ status
210
+ __typename
211
+ }
212
+ upSellProductIds
213
+ crossProductIds
214
+ __typename
215
+ }
216
+
217
+ fragment Variant on Variant {
218
+ sku
219
+ globalId
220
+ slug
221
+ variantLabel
222
+ variantColor
223
+ availableChannels
224
+ availableQuantity
225
+ customerTypes
226
+ maxQuantity
227
+ title
228
+ size
229
+ productImages {
230
+ url
231
+ alt
232
+ thumbnail
233
+ __typename
234
+ }
235
+ salesLabel
236
+ salesText
237
+ description
238
+ salesDisclaimer
239
+ nettoWeight
240
+ features {
241
+ image {
242
+ url
243
+ alt
244
+ thumbnail
245
+ __typename
246
+ }
247
+ subtitle
248
+ features
249
+ backgroundColor
250
+ textColor
251
+ __typename
252
+ }
253
+ productDetails {
254
+ description
255
+ includedItems
256
+ highlights {
257
+ iconUrl
258
+ label
259
+ __typename
260
+ }
261
+ originCountry
262
+ importer
263
+ warnings
264
+ __typename
265
+ }
266
+ benefits {
267
+ benefits
268
+ image {
269
+ url
270
+ alt
271
+ thumbnail
272
+ __typename
273
+ }
274
+ youTubeVideoId
275
+ __typename
276
+ }
277
+ results {
278
+ summary
279
+ results {
280
+ percentage
281
+ text
282
+ __typename
283
+ }
284
+ report {
285
+ url
286
+ text
287
+ __typename
288
+ }
289
+ image {
290
+ url
291
+ alt
292
+ thumbnail
293
+ __typename
294
+ }
295
+ youTubeVideoId
296
+ __typename
297
+ }
298
+ usage {
299
+ steps
300
+ recommendations
301
+ warnings
302
+ additionalText
303
+ image {
304
+ url
305
+ alt
306
+ thumbnail
307
+ __typename
308
+ }
309
+ youTubeVideoId
310
+ markdown
311
+ __typename
312
+ }
313
+ resources {
314
+ title
315
+ url
316
+ image {
317
+ url
318
+ alt
319
+ thumbnail
320
+ __typename
321
+ }
322
+ __typename
323
+ }
324
+ faqs {
325
+ question
326
+ answers
327
+ __typename
328
+ }
329
+ ingredients {
330
+ productName
331
+ allIngredients
332
+ otherIngredients
333
+ activeIngredients
334
+ inactiveIngredients
335
+ ingredientDisclaimers
336
+ markdown
337
+ keyIngredients {
338
+ image {
339
+ url
340
+ alt
341
+ thumbnail
342
+ __typename
343
+ }
344
+ name
345
+ description
346
+ __typename
347
+ }
348
+ nutritionInformationImage {
349
+ url
350
+ alt
351
+ __typename
352
+ }
353
+ __typename
354
+ }
355
+ isExclusive
356
+ price {
357
+ retail
358
+ wholesale
359
+ retailSales
360
+ wholesaleSales
361
+ retailSubscription
362
+ wholesaleSubscription
363
+ currencyCode
364
+ __typename
365
+ }
366
+ totalPrice {
367
+ retail
368
+ wholesale
369
+ retailSales
370
+ wholesaleSales
371
+ retailSubscription
372
+ wholesaleSubscription
373
+ currencyCode
374
+ __typename
375
+ }
376
+ points {
377
+ wholesale {
378
+ cv
379
+ pv
380
+ __typename
381
+ }
382
+ subscription {
383
+ cv
384
+ pv
385
+ __typename
386
+ }
387
+ __typename
388
+ }
389
+ totalPoints {
390
+ wholesale {
391
+ cv
392
+ pv
393
+ __typename
394
+ }
395
+ subscription {
396
+ cv
397
+ pv
398
+ __typename
399
+ }
400
+ __typename
401
+ }
402
+ pricingJson
403
+ availableQuantity
404
+ maxQuantity
405
+ status {
406
+ isBackordered
407
+ backorderedAvailableDate
408
+ status
409
+ __typename
410
+ }
411
+ purchaseTypes {
412
+ buyOnce
413
+ subscription
414
+ __typename
415
+ }
416
+ marketAttributes {
417
+ redeem
418
+ earn
419
+ __typename
420
+ }
421
+ disclaimers
422
+ disclaimerWarnings {
423
+ icon {
424
+ url
425
+ alt
426
+ __typename
427
+ }
428
+ markdown
429
+ __typename
430
+ }
431
+ restrictedMarkets
432
+ matchingVariant
433
+ shadeable
434
+ productType
435
+ primaryBrand
436
+ brandFamily
437
+ __typename
438
+ }
439
+
440
+ fragment Kit on Kit {
441
+ id
442
+ type
443
+ price {
444
+ currencyCode
445
+ retail
446
+ wholesale
447
+ retailSales
448
+ wholesaleSales
449
+ retailSubscription
450
+ wholesaleSubscription
451
+ __typename
452
+ }
453
+ totalPrice {
454
+ currencyCode
455
+ retail
456
+ wholesale
457
+ retailSales
458
+ wholesaleSales
459
+ retailSubscription
460
+ wholesaleSubscription
461
+ __typename
462
+ }
463
+ points {
464
+ wholesale {
465
+ cv
466
+ pv
467
+ __typename
468
+ }
469
+ subscription {
470
+ cv
471
+ pv
472
+ __typename
473
+ }
474
+ __typename
475
+ }
476
+ totalPoints {
477
+ wholesale {
478
+ cv
479
+ pv
480
+ __typename
481
+ }
482
+ subscription {
483
+ cv
484
+ pv
485
+ __typename
486
+ }
487
+ __typename
488
+ }
489
+ retailDiscount
490
+ wholesaleDiscount
491
+ pvDiscount
492
+ cvDiscount
493
+ sbDiscount
494
+ grpDiscount
495
+ availableChannels
496
+ customerTypes
497
+ purchaseTypes {
498
+ buyOnce
499
+ subscription
500
+ __typename
501
+ }
502
+ status {
503
+ status
504
+ isBackordered
505
+ backorderedAvailableDate
506
+ __typename
507
+ }
508
+ availableQuantity
509
+ chargeShipping
510
+ dangerousGoods
511
+ excludeFromSearch
512
+ isExclusive
513
+ marketAttributes {
514
+ discount
515
+ redeem
516
+ earn
517
+ __typename
518
+ }
519
+ restrictedMarkets
520
+ scanQualifiedCount
521
+ kitProducts {
522
+ quantity
523
+ isMandatory
524
+ product {
525
+ ...Product
526
+ __typename
527
+ }
528
+ __typename
529
+ }
530
+ __typename
531
+ }`
532
+
533
+
534
+ module.exports = getProductByIdQuery;
@@ -0,0 +1,535 @@
1
+ "use strict";
2
+
3
+ // eslint-disable-next-line max-len
4
+ const getProductsByIdQuery = `query getProducts($id: String!, $market: String, $language: String, $useContentSource: String, $okta: String, quantity: Int) {
5
+ productsById(
6
+ id: $id
7
+ market: $market
8
+ language: $language
9
+ useContentSource: $useContentSource
10
+ okta: $okta
11
+ quantity: $quantity
12
+ ) {
13
+ products {
14
+ ...Product
15
+ __typename
16
+ }
17
+ skip
18
+ totalCount
19
+ validCount
20
+ }
21
+ }
22
+
23
+ fragment Product on Product {
24
+ id
25
+ slug
26
+ title
27
+ secondaryTitle
28
+ productImages {
29
+ url
30
+ alt
31
+ thumbnail
32
+ __typename
33
+ }
34
+ salesLabel
35
+ salesText
36
+ description
37
+ salesDisclaimer
38
+ variantSelectLabel
39
+ variants {
40
+ ...Variant
41
+ __typename
42
+ }
43
+ features {
44
+ image {
45
+ url
46
+ alt
47
+ thumbnail
48
+ __typename
49
+ }
50
+ subtitle
51
+ features
52
+ backgroundColor
53
+ textColor
54
+ __typename
55
+ }
56
+ productDetails {
57
+ description
58
+ includedItems
59
+ highlights {
60
+ iconUrl
61
+ label
62
+ __typename
63
+ }
64
+ originCountry
65
+ importer
66
+ warnings
67
+ __typename
68
+ }
69
+ benefits {
70
+ benefits
71
+ image {
72
+ url
73
+ alt
74
+ thumbnail
75
+ __typename
76
+ }
77
+ youTubeVideoId
78
+ __typename
79
+ }
80
+ results {
81
+ summary
82
+ results {
83
+ percentage
84
+ text
85
+ __typename
86
+ }
87
+ report {
88
+ url
89
+ text
90
+ __typename
91
+ }
92
+ image {
93
+ url
94
+ alt
95
+ thumbnail
96
+ __typename
97
+ }
98
+ youTubeVideoId
99
+ __typename
100
+ }
101
+ sustainability {
102
+ youTubeVideoId
103
+ image {
104
+ url
105
+ __typename
106
+ }
107
+ description
108
+ highlights {
109
+ image {
110
+ url
111
+ __typename
112
+ }
113
+ description
114
+ __typename
115
+ }
116
+ __typename
117
+ }
118
+ usage {
119
+ steps
120
+ recommendations
121
+ warnings
122
+ additionalText
123
+ image {
124
+ url
125
+ alt
126
+ thumbnail
127
+ __typename
128
+ }
129
+ youTubeVideoId
130
+ markdown
131
+ __typename
132
+ }
133
+ resources {
134
+ title
135
+ url
136
+ image {
137
+ url
138
+ alt
139
+ thumbnail
140
+ __typename
141
+ }
142
+ __typename
143
+ }
144
+ warranty
145
+ faqs {
146
+ question
147
+ answers
148
+ __typename
149
+ }
150
+ ingredients {
151
+ productName
152
+ allIngredients
153
+ otherIngredients
154
+ activeIngredients
155
+ inactiveIngredients
156
+ ingredientDisclaimers
157
+ markdown
158
+ keyIngredients {
159
+ image {
160
+ url
161
+ alt
162
+ thumbnail
163
+ __typename
164
+ }
165
+ name
166
+ description
167
+ __typename
168
+ }
169
+ nutritionInformationImage {
170
+ url
171
+ alt
172
+ __typename
173
+ }
174
+ __typename
175
+ }
176
+ disclaimers
177
+ disclaimerWarnings {
178
+ icon {
179
+ url
180
+ alt
181
+ __typename
182
+ }
183
+ markdown
184
+ __typename
185
+ }
186
+ seoInformation {
187
+ metaDescription
188
+ metaTitle
189
+ canonicalURL
190
+ ogImage {
191
+ url
192
+ alt
193
+ __typename
194
+ }
195
+ __typename
196
+ }
197
+ thirdPartyScripts
198
+ productDataSource {
199
+ source
200
+ webBaseUrl
201
+ apiBaseUrl
202
+ storeId
203
+ __typename
204
+ }
205
+ error {
206
+ name
207
+ errors
208
+ lines
209
+ message
210
+ status
211
+ __typename
212
+ }
213
+ upSellProductIds
214
+ crossProductIds
215
+ __typename
216
+ }
217
+
218
+ fragment Variant on Variant {
219
+ sku
220
+ globalId
221
+ slug
222
+ variantLabel
223
+ variantColor
224
+ availableChannels
225
+ availableQuantity
226
+ customerTypes
227
+ maxQuantity
228
+ title
229
+ size
230
+ productImages {
231
+ url
232
+ alt
233
+ thumbnail
234
+ __typename
235
+ }
236
+ salesLabel
237
+ salesText
238
+ description
239
+ salesDisclaimer
240
+ nettoWeight
241
+ features {
242
+ image {
243
+ url
244
+ alt
245
+ thumbnail
246
+ __typename
247
+ }
248
+ subtitle
249
+ features
250
+ backgroundColor
251
+ textColor
252
+ __typename
253
+ }
254
+ productDetails {
255
+ description
256
+ includedItems
257
+ highlights {
258
+ iconUrl
259
+ label
260
+ __typename
261
+ }
262
+ originCountry
263
+ importer
264
+ warnings
265
+ __typename
266
+ }
267
+ benefits {
268
+ benefits
269
+ image {
270
+ url
271
+ alt
272
+ thumbnail
273
+ __typename
274
+ }
275
+ youTubeVideoId
276
+ __typename
277
+ }
278
+ results {
279
+ summary
280
+ results {
281
+ percentage
282
+ text
283
+ __typename
284
+ }
285
+ report {
286
+ url
287
+ text
288
+ __typename
289
+ }
290
+ image {
291
+ url
292
+ alt
293
+ thumbnail
294
+ __typename
295
+ }
296
+ youTubeVideoId
297
+ __typename
298
+ }
299
+ usage {
300
+ steps
301
+ recommendations
302
+ warnings
303
+ additionalText
304
+ image {
305
+ url
306
+ alt
307
+ thumbnail
308
+ __typename
309
+ }
310
+ youTubeVideoId
311
+ markdown
312
+ __typename
313
+ }
314
+ resources {
315
+ title
316
+ url
317
+ image {
318
+ url
319
+ alt
320
+ thumbnail
321
+ __typename
322
+ }
323
+ __typename
324
+ }
325
+ faqs {
326
+ question
327
+ answers
328
+ __typename
329
+ }
330
+ ingredients {
331
+ productName
332
+ allIngredients
333
+ otherIngredients
334
+ activeIngredients
335
+ inactiveIngredients
336
+ ingredientDisclaimers
337
+ markdown
338
+ keyIngredients {
339
+ image {
340
+ url
341
+ alt
342
+ thumbnail
343
+ __typename
344
+ }
345
+ name
346
+ description
347
+ __typename
348
+ }
349
+ nutritionInformationImage {
350
+ url
351
+ alt
352
+ __typename
353
+ }
354
+ __typename
355
+ }
356
+ isExclusive
357
+ price {
358
+ retail
359
+ wholesale
360
+ retailSales
361
+ wholesaleSales
362
+ retailSubscription
363
+ wholesaleSubscription
364
+ currencyCode
365
+ __typename
366
+ }
367
+ totalPrice {
368
+ retail
369
+ wholesale
370
+ retailSales
371
+ wholesaleSales
372
+ retailSubscription
373
+ wholesaleSubscription
374
+ currencyCode
375
+ __typename
376
+ }
377
+ points {
378
+ wholesale {
379
+ cv
380
+ pv
381
+ __typename
382
+ }
383
+ subscription {
384
+ cv
385
+ pv
386
+ __typename
387
+ }
388
+ __typename
389
+ }
390
+ totalPoints {
391
+ wholesale {
392
+ cv
393
+ pv
394
+ __typename
395
+ }
396
+ subscription {
397
+ cv
398
+ pv
399
+ __typename
400
+ }
401
+ __typename
402
+ }
403
+ pricingJson
404
+ availableQuantity
405
+ maxQuantity
406
+ status {
407
+ isBackordered
408
+ backorderedAvailableDate
409
+ status
410
+ __typename
411
+ }
412
+ purchaseTypes {
413
+ buyOnce
414
+ subscription
415
+ __typename
416
+ }
417
+ marketAttributes {
418
+ redeem
419
+ earn
420
+ __typename
421
+ }
422
+ disclaimers
423
+ disclaimerWarnings {
424
+ icon {
425
+ url
426
+ alt
427
+ __typename
428
+ }
429
+ markdown
430
+ __typename
431
+ }
432
+ restrictedMarkets
433
+ matchingVariant
434
+ shadeable
435
+ productType
436
+ primaryBrand
437
+ brandFamily
438
+ __typename
439
+ }
440
+
441
+ fragment Kit on Kit {
442
+ id
443
+ type
444
+ price {
445
+ currencyCode
446
+ retail
447
+ wholesale
448
+ retailSales
449
+ wholesaleSales
450
+ retailSubscription
451
+ wholesaleSubscription
452
+ __typename
453
+ }
454
+ totalPrice {
455
+ currencyCode
456
+ retail
457
+ wholesale
458
+ retailSales
459
+ wholesaleSales
460
+ retailSubscription
461
+ wholesaleSubscription
462
+ __typename
463
+ }
464
+ points {
465
+ wholesale {
466
+ cv
467
+ pv
468
+ __typename
469
+ }
470
+ subscription {
471
+ cv
472
+ pv
473
+ __typename
474
+ }
475
+ __typename
476
+ }
477
+ totalPoints {
478
+ wholesale {
479
+ cv
480
+ pv
481
+ __typename
482
+ }
483
+ subscription {
484
+ cv
485
+ pv
486
+ __typename
487
+ }
488
+ __typename
489
+ }
490
+ retailDiscount
491
+ wholesaleDiscount
492
+ pvDiscount
493
+ cvDiscount
494
+ sbDiscount
495
+ grpDiscount
496
+ availableChannels
497
+ customerTypes
498
+ purchaseTypes {
499
+ buyOnce
500
+ subscription
501
+ __typename
502
+ }
503
+ status {
504
+ status
505
+ isBackordered
506
+ backorderedAvailableDate
507
+ __typename
508
+ }
509
+ availableQuantity
510
+ chargeShipping
511
+ dangerousGoods
512
+ excludeFromSearch
513
+ isExclusive
514
+ marketAttributes {
515
+ discount
516
+ redeem
517
+ earn
518
+ __typename
519
+ }
520
+ restrictedMarkets
521
+ scanQualifiedCount
522
+ kitProducts {
523
+ quantity
524
+ isMandatory
525
+ product {
526
+ ...Product
527
+ __typename
528
+ }
529
+ __typename
530
+ }
531
+ __typename
532
+ }`
533
+
534
+
535
+ module.exports = getProductsByIdQuery;
@@ -0,0 +1,5 @@
1
+ const getProductByIdQuery = require('./getProductById');
2
+
3
+ module.exports = {
4
+ getProductById: getProductByIdQuery
5
+ }