@gem-sdk/adapter-shopify 1.0.0 → 1.11.0

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.
Files changed (40) hide show
  1. package/dist/cjs/api/operations/add-to-cart.js +26 -23
  2. package/dist/cjs/api/operations/cart-discount-codes-update.js +22 -20
  3. package/dist/cjs/api/operations/cart-note-update.js +22 -19
  4. package/dist/cjs/api/operations/create-cart.js +27 -24
  5. package/dist/cjs/api/operations/get-cart.js +21 -18
  6. package/dist/cjs/api/operations/remove-cart-item.js +24 -19
  7. package/dist/cjs/api/operations/update-cart-line.js +28 -25
  8. package/dist/cjs/graphql/fragments/cart-line.generated.js +2 -2
  9. package/dist/cjs/graphql/fragments/cart-user-error.generated.js +1 -1
  10. package/dist/cjs/graphql/fragments/cart.generated.js +1 -1
  11. package/dist/cjs/graphql/fragments/country.generated.js +1 -1
  12. package/dist/cjs/graphql/fragments/currency.generated.js +1 -1
  13. package/dist/cjs/graphql/fragments/image.generated.js +1 -1
  14. package/dist/cjs/graphql/fragments/language.generated.js +10 -0
  15. package/dist/cjs/graphql/fragments/money-v2.generated.js +1 -1
  16. package/dist/cjs/graphql/fragments/product.generated.js +1 -1
  17. package/dist/cjs/graphql/queries/shop-meta.generated.js +6 -1
  18. package/dist/cjs/helpers/common.js +10 -10
  19. package/dist/cjs/helpers/normalize.js +53 -53
  20. package/dist/esm/api/operations/add-to-cart.js +26 -23
  21. package/dist/esm/api/operations/cart-discount-codes-update.js +22 -20
  22. package/dist/esm/api/operations/cart-note-update.js +22 -19
  23. package/dist/esm/api/operations/create-cart.js +27 -24
  24. package/dist/esm/api/operations/get-cart.js +21 -18
  25. package/dist/esm/api/operations/remove-cart-item.js +24 -19
  26. package/dist/esm/api/operations/update-cart-line.js +28 -25
  27. package/dist/esm/graphql/fragments/cart-line.generated.js +2 -2
  28. package/dist/esm/graphql/fragments/cart-user-error.generated.js +1 -1
  29. package/dist/esm/graphql/fragments/cart.generated.js +1 -1
  30. package/dist/esm/graphql/fragments/country.generated.js +1 -1
  31. package/dist/esm/graphql/fragments/currency.generated.js +1 -1
  32. package/dist/esm/graphql/fragments/image.generated.js +1 -1
  33. package/dist/esm/graphql/fragments/language.generated.js +8 -0
  34. package/dist/esm/graphql/fragments/money-v2.generated.js +1 -1
  35. package/dist/esm/graphql/fragments/product.generated.js +1 -1
  36. package/dist/esm/graphql/queries/shop-meta.generated.js +6 -1
  37. package/dist/esm/helpers/common.js +10 -10
  38. package/dist/esm/helpers/normalize.js +53 -53
  39. package/dist/types/index.d.ts +3649 -3648
  40. package/package.json +1 -1
@@ -4,29 +4,32 @@ var cartLinesAdd_generated = require('../../graphql/mutations/cart-lines-add.gen
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const addToCartOperation = (config) => {
8
- const addToCart = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- cartId: input.cartId,
14
- lines: input.lines.map((v) => ({
15
- merchandiseId: v.variantId,
16
- quantity: v.quantity,
17
- attributes: v.attributes,
18
- })),
19
- };
20
- const res = await fetch(config.storefrontUrl, {
21
- ...common.composeRequest(config),
22
- body: JSON.stringify({ query: cartLinesAdd_generated.CartLinesAddDocument, variables }),
23
- }).then((res) => res.json());
24
- if (res.data?.cartLinesAdd?.userErrors.length || !res.data?.cartLinesAdd?.cart) {
25
- throw res.data?.cartLinesAdd?.userErrors;
26
- }
27
- return normalize.normalizeCart(res.data.cartLinesAdd.cart);
28
- };
29
- return addToCart;
7
+ const addToCartOperation = (config)=>{
8
+ const addToCart = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ cartId: input.cartId,
14
+ lines: input.lines.map((v)=>({
15
+ merchandiseId: v.variantId,
16
+ quantity: v.quantity,
17
+ attributes: v.attributes
18
+ }))
19
+ };
20
+ const res = await fetch(config.storefrontUrl, {
21
+ ...common.composeRequest(config),
22
+ body: JSON.stringify({
23
+ query: cartLinesAdd_generated.CartLinesAddDocument,
24
+ variables
25
+ })
26
+ }).then((res)=>res.json());
27
+ if (res.data?.cartLinesAdd?.userErrors.length || !res.data?.cartLinesAdd?.cart) {
28
+ throw res.data?.cartLinesAdd?.userErrors;
29
+ }
30
+ return normalize.normalizeCart(res.data.cartLinesAdd.cart);
31
+ };
32
+ return addToCart;
30
33
  };
31
34
 
32
35
  exports.addToCartOperation = addToCartOperation;
@@ -4,26 +4,28 @@ var cartDiscountCodesUpdate_generated = require('../../graphql/mutations/cart-di
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const cartDiscountCodesUpdateOperation = (config) => {
8
- const cartNoteUpdate = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- cartId: input.cartId,
14
- discountCodes: input.discountCodes,
15
- };
16
- const res = await fetch(config.storefrontUrl, {
17
- ...common.composeRequest(config),
18
- body: JSON.stringify({ query: cartDiscountCodesUpdate_generated.CartDiscountCodesUpdateDocument, variables }),
19
- }).then((res) => res.json());
20
- if (res.data?.cartDiscountCodesUpdate?.userErrors.length ||
21
- !res.data?.cartDiscountCodesUpdate?.cart) {
22
- throw res.data?.cartDiscountCodesUpdate?.userErrors;
23
- }
24
- return normalize.normalizeCart(res.data.cartDiscountCodesUpdate.cart);
25
- };
26
- return cartNoteUpdate;
7
+ const cartDiscountCodesUpdateOperation = (config)=>{
8
+ const cartNoteUpdate = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ cartId: input.cartId,
14
+ discountCodes: input.discountCodes
15
+ };
16
+ const res = await fetch(config.storefrontUrl, {
17
+ ...common.composeRequest(config),
18
+ body: JSON.stringify({
19
+ query: cartDiscountCodesUpdate_generated.CartDiscountCodesUpdateDocument,
20
+ variables
21
+ })
22
+ }).then((res)=>res.json());
23
+ if (res.data?.cartDiscountCodesUpdate?.userErrors.length || !res.data?.cartDiscountCodesUpdate?.cart) {
24
+ throw res.data?.cartDiscountCodesUpdate?.userErrors;
25
+ }
26
+ return normalize.normalizeCart(res.data.cartDiscountCodesUpdate.cart);
27
+ };
28
+ return cartNoteUpdate;
27
29
  };
28
30
 
29
31
  exports.cartDiscountCodesUpdateOperation = cartDiscountCodesUpdateOperation;
@@ -4,25 +4,28 @@ var cartNoteUpdate_generated = require('../../graphql/mutations/cart-note-update
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const cartNoteUpdateOperation = (config) => {
8
- const cartNoteUpdate = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- cartId: input.cartId,
14
- note: input.note,
15
- };
16
- const res = await fetch(config.storefrontUrl, {
17
- ...common.composeRequest(config),
18
- body: JSON.stringify({ query: cartNoteUpdate_generated.CartNoteUpdateDocument, variables }),
19
- }).then((res) => res.json());
20
- if (res.data?.cartNoteUpdate?.userErrors.length || !res.data?.cartNoteUpdate?.cart) {
21
- throw res.data?.cartNoteUpdate?.userErrors;
22
- }
23
- return normalize.normalizeCart(res.data.cartNoteUpdate.cart);
24
- };
25
- return cartNoteUpdate;
7
+ const cartNoteUpdateOperation = (config)=>{
8
+ const cartNoteUpdate = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ cartId: input.cartId,
14
+ note: input.note
15
+ };
16
+ const res = await fetch(config.storefrontUrl, {
17
+ ...common.composeRequest(config),
18
+ body: JSON.stringify({
19
+ query: cartNoteUpdate_generated.CartNoteUpdateDocument,
20
+ variables
21
+ })
22
+ }).then((res)=>res.json());
23
+ if (res.data?.cartNoteUpdate?.userErrors.length || !res.data?.cartNoteUpdate?.cart) {
24
+ throw res.data?.cartNoteUpdate?.userErrors;
25
+ }
26
+ return normalize.normalizeCart(res.data.cartNoteUpdate.cart);
27
+ };
28
+ return cartNoteUpdate;
26
29
  };
27
30
 
28
31
  exports.cartNoteUpdateOperation = cartNoteUpdateOperation;
@@ -4,30 +4,33 @@ var cartCreate_generated = require('../../graphql/mutations/cart-create.generate
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const createCartOperation = (config) => {
8
- const createCart = async (args) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- input: {
14
- lines: args.items.map((v) => ({
15
- merchandiseId: v.variantId,
16
- quantity: v.quantity,
17
- attributes: v.attributes,
18
- })),
19
- },
20
- };
21
- const res = await fetch(config.storefrontUrl, {
22
- ...common.composeRequest(config),
23
- body: JSON.stringify({ query: cartCreate_generated.CartCreateDocument, variables }),
24
- }).then((res) => res.json());
25
- if (res.data?.cartCreate?.userErrors.length || !res.data?.cartCreate?.cart) {
26
- throw res.data?.cartCreate?.userErrors;
27
- }
28
- return normalize.normalizeCart(res.data.cartCreate.cart);
29
- };
30
- return createCart;
7
+ const createCartOperation = (config)=>{
8
+ const createCart = async (args)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ input: {
14
+ lines: args.items.map((v)=>({
15
+ merchandiseId: v.variantId,
16
+ quantity: v.quantity,
17
+ attributes: v.attributes
18
+ }))
19
+ }
20
+ };
21
+ const res = await fetch(config.storefrontUrl, {
22
+ ...common.composeRequest(config),
23
+ body: JSON.stringify({
24
+ query: cartCreate_generated.CartCreateDocument,
25
+ variables
26
+ })
27
+ }).then((res)=>res.json());
28
+ if (res.data?.cartCreate?.userErrors.length || !res.data?.cartCreate?.cart) {
29
+ throw res.data?.cartCreate?.userErrors;
30
+ }
31
+ return normalize.normalizeCart(res.data.cartCreate.cart);
32
+ };
33
+ return createCart;
31
34
  };
32
35
 
33
36
  exports.createCartOperation = createCartOperation;
@@ -4,24 +4,27 @@ var cart_generated = require('../../graphql/queries/cart.generated.js');
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const getCartOperation = (config) => {
8
- const getCart = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- id: input.cartId,
14
- };
15
- const res = await fetch(config.storefrontUrl, {
16
- ...common.composeRequest(config),
17
- body: JSON.stringify({ query: cart_generated.CartDocument, variables }),
18
- }).then((res) => res.json());
19
- if (!res.data?.cart) {
20
- return undefined;
21
- }
22
- return normalize.normalizeCart(res.data.cart);
23
- };
24
- return getCart;
7
+ const getCartOperation = (config)=>{
8
+ const getCart = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ id: input.cartId
14
+ };
15
+ const res = await fetch(config.storefrontUrl, {
16
+ ...common.composeRequest(config),
17
+ body: JSON.stringify({
18
+ query: cart_generated.CartDocument,
19
+ variables
20
+ })
21
+ }).then((res)=>res.json());
22
+ if (!res.data?.cart) {
23
+ return undefined;
24
+ }
25
+ return normalize.normalizeCart(res.data.cart);
26
+ };
27
+ return getCart;
25
28
  };
26
29
 
27
30
  exports.getCartOperation = getCartOperation;
@@ -4,25 +4,30 @@ var cartLinesRemove_generated = require('../../graphql/mutations/cart-lines-remo
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const removeCartItemOperation = (config) => {
8
- const removeCartItem = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- cartId: input.cartId,
14
- lineIds: [input.lineId],
15
- };
16
- const res = await fetch(config.storefrontUrl, {
17
- ...common.composeRequest(config),
18
- body: JSON.stringify({ query: cartLinesRemove_generated.CartLinesRemoveDocument, variables }),
19
- }).then((res) => res.json());
20
- if (res.data?.cartLinesRemove?.userErrors.length || !res.data?.cartLinesRemove?.cart) {
21
- throw res.data?.cartLinesRemove?.userErrors;
22
- }
23
- return normalize.normalizeCart(res.data.cartLinesRemove.cart);
24
- };
25
- return removeCartItem;
7
+ const removeCartItemOperation = (config)=>{
8
+ const removeCartItem = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ cartId: input.cartId,
14
+ lineIds: [
15
+ input.lineId
16
+ ]
17
+ };
18
+ const res = await fetch(config.storefrontUrl, {
19
+ ...common.composeRequest(config),
20
+ body: JSON.stringify({
21
+ query: cartLinesRemove_generated.CartLinesRemoveDocument,
22
+ variables
23
+ })
24
+ }).then((res)=>res.json());
25
+ if (res.data?.cartLinesRemove?.userErrors.length || !res.data?.cartLinesRemove?.cart) {
26
+ throw res.data?.cartLinesRemove?.userErrors;
27
+ }
28
+ return normalize.normalizeCart(res.data.cartLinesRemove.cart);
29
+ };
30
+ return removeCartItem;
26
31
  };
27
32
 
28
33
  exports.removeCartItemOperation = removeCartItemOperation;
@@ -4,31 +4,34 @@ var cartLinesUpdate_generated = require('../../graphql/mutations/cart-lines-upda
4
4
  var common = require('../../helpers/common.js');
5
5
  var normalize = require('../../helpers/normalize.js');
6
6
 
7
- const updateCartLineOperation = (config) => {
8
- const updateCartLine = async (input) => {
9
- if (!config.storefrontUrl) {
10
- throw new Error('Shop is not connected');
11
- }
12
- const variables = {
13
- cartId: input.cartId,
14
- lines: [
15
- {
16
- id: input.line.id,
17
- merchandiseId: input.line.variantId,
18
- quantity: input.line.quantity,
19
- },
20
- ],
21
- };
22
- const res = await fetch(config.storefrontUrl, {
23
- ...common.composeRequest(config),
24
- body: JSON.stringify({ query: cartLinesUpdate_generated.CartLinesUpdateDocument, variables }),
25
- }).then((res) => res.json());
26
- if (res.data?.cartLinesUpdate?.userErrors.length || !res.data?.cartLinesUpdate?.cart) {
27
- throw res.data?.cartLinesUpdate?.userErrors;
28
- }
29
- return normalize.normalizeCart(res.data?.cartLinesUpdate.cart);
30
- };
31
- return updateCartLine;
7
+ const updateCartLineOperation = (config)=>{
8
+ const updateCartLine = async (input)=>{
9
+ if (!config.storefrontUrl) {
10
+ throw new Error('Shop is not connected');
11
+ }
12
+ const variables = {
13
+ cartId: input.cartId,
14
+ lines: [
15
+ {
16
+ id: input.line.id,
17
+ merchandiseId: input.line.variantId,
18
+ quantity: input.line.quantity
19
+ }
20
+ ]
21
+ };
22
+ const res = await fetch(config.storefrontUrl, {
23
+ ...common.composeRequest(config),
24
+ body: JSON.stringify({
25
+ query: cartLinesUpdate_generated.CartLinesUpdateDocument,
26
+ variables
27
+ })
28
+ }).then((res)=>res.json());
29
+ if (res.data?.cartLinesUpdate?.userErrors.length || !res.data?.cartLinesUpdate?.cart) {
30
+ throw res.data?.cartLinesUpdate?.userErrors;
31
+ }
32
+ return normalize.normalizeCart(res.data?.cartLinesUpdate.cart);
33
+ };
34
+ return updateCartLine;
32
35
  };
33
36
 
34
37
  exports.updateCartLineOperation = updateCartLineOperation;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CartProductVariantSelect = `
3
+ /* eslint-disable */ const CartProductVariantSelect = `
4
4
  fragment CartProductVariantSelect on ProductVariant {
5
5
  id
6
6
  title
@@ -33,7 +33,7 @@ const CartProductVariantSelect = `
33
33
  weight
34
34
  weightUnit
35
35
  }
36
- `;
36
+ `;
37
37
  const CartLineSelect = `
38
38
  fragment CartLineSelect on CartLine {
39
39
  id
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CartUserErrorSelect = `
3
+ /* eslint-disable */ const CartUserErrorSelect = `
4
4
  fragment CartUserErrorSelect on CartUserError {
5
5
  code
6
6
  field
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CartSelect = `
3
+ /* eslint-disable */ const CartSelect = `
4
4
  fragment CartSelect on Cart {
5
5
  attributes {
6
6
  key
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CountrySelect = `
3
+ /* eslint-disable */ const CountrySelect = `
4
4
  fragment CountrySelect on Country {
5
5
  isoCode
6
6
  name
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const CurrencySelect = `
3
+ /* eslint-disable */ const CurrencySelect = `
4
4
  fragment CurrencySelect on Currency {
5
5
  isoCode
6
6
  name
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const ImageSelect = `
3
+ /* eslint-disable */ const ImageSelect = `
4
4
  fragment ImageSelect on Image {
5
5
  id
6
6
  altText
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ /* eslint-disable */ const LanguageSelect = `
4
+ fragment LanguageSelect on Language {
5
+ isoCode
6
+ name
7
+ }
8
+ `;
9
+
10
+ exports.LanguageSelect = LanguageSelect;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const MoneyV2Select = `
3
+ /* eslint-disable */ const MoneyV2Select = `
4
4
  fragment MoneyV2Select on MoneyV2 {
5
5
  amount
6
6
  currencyCode
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const ProductSelect = `
3
+ /* eslint-disable */ const ProductSelect = `
4
4
  fragment ProductSelect on Product {
5
5
  availableForSale
6
6
  compareAtPriceRange {
@@ -2,6 +2,7 @@
2
2
 
3
3
  var country_generated = require('../fragments/country.generated.js');
4
4
  var currency_generated = require('../fragments/currency.generated.js');
5
+ var language_generated = require('../fragments/language.generated.js');
5
6
 
6
7
  const ShopMetaDocument = `
7
8
  query shopMeta {
@@ -9,6 +10,9 @@ const ShopMetaDocument = `
9
10
  country {
10
11
  ...CountrySelect
11
12
  }
13
+ language {
14
+ ...LanguageSelect
15
+ }
12
16
  }
13
17
  shop {
14
18
  name
@@ -16,6 +20,7 @@ const ShopMetaDocument = `
16
20
  }
17
21
  }
18
22
  ${country_generated.CountrySelect}
19
- ${currency_generated.CurrencySelect}`;
23
+ ${currency_generated.CurrencySelect}
24
+ ${language_generated.LanguageSelect}`;
20
25
 
21
26
  exports.ShopMetaDocument = ShopMetaDocument;
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- const composeRequest = (config) => {
4
- return {
5
- method: 'POST',
6
- headers: {
7
- 'Content-Type': 'application/json',
8
- ...(config.storefrontToken
9
- ? { 'X-Shopify-Storefront-Access-Token': config.storefrontToken }
10
- : {}),
11
- },
12
- };
3
+ const composeRequest = (config)=>{
4
+ return {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ ...config.storefrontToken ? {
9
+ 'X-Shopify-Storefront-Access-Token': config.storefrontToken
10
+ } : {}
11
+ }
12
+ };
13
13
  };
14
14
 
15
15
  exports.composeRequest = composeRequest;
@@ -1,58 +1,58 @@
1
1
  'use strict';
2
2
 
3
- const normalizeCartProductVariant = (variant) => {
4
- const { compareAtPriceV2, priceV2, weight, weightUnit, id, sku, image } = variant;
5
- return {
6
- id,
7
- requiresShipping: variant.requiresShipping,
8
- availableForSale: variant.availableForSale,
9
- sku: sku ?? id,
10
- name: variant.title,
11
- listPrice: compareAtPriceV2?.amount ? +compareAtPriceV2?.amount : 0,
12
- price: +priceV2.amount,
13
- weight: {
14
- value: weight ?? 0,
15
- unit: weightUnit,
16
- },
17
- image,
18
- };
19
- };
20
- const normalizeLineItem = (lineItem) => {
21
- const { quantity, id, merchandise } = lineItem;
22
- const variant = normalizeCartProductVariant(merchandise);
23
- return {
24
- id,
25
- quantity,
26
- variant,
27
- attributes: lineItem.attributes,
28
- variantId: variant.id,
29
- name: variant.name,
30
- productTitle: merchandise.product.title,
31
- productId: variant.id,
32
- path: merchandise.product.handle,
33
- discounts: [],
34
- };
35
- };
36
- const normalizeCart = (cart) => {
37
- const { cost } = cart;
38
- return {
39
- createdAt: cart.createdAt,
40
- id: cart.id,
41
- lineItems: cart.lines.nodes.map(normalizeLineItem),
42
- subtotalPrice: +cost.subtotalAmount.amount,
43
- totalPrice: +cost.totalAmount.amount,
44
- currency: {
45
- code: cost.totalAmount.currencyCode,
46
- },
47
- taxesIncluded: true,
48
- lineItemsSubtotalPrice: +cost.subtotalAmount.amount,
49
- checkoutUrl: cart.checkoutUrl,
50
- note: cart.note,
51
- discounts: cart.discountCodes.map((v) => ({
52
- code: v.code,
53
- applicable: v.applicable,
54
- })),
55
- };
3
+ const normalizeCartProductVariant = (variant)=>{
4
+ const { compareAtPriceV2 , priceV2 , weight , weightUnit , id , sku , image } = variant;
5
+ return {
6
+ id,
7
+ requiresShipping: variant.requiresShipping,
8
+ availableForSale: variant.availableForSale,
9
+ sku: sku ?? id,
10
+ name: variant.title,
11
+ listPrice: compareAtPriceV2?.amount ? +compareAtPriceV2?.amount : 0,
12
+ price: +priceV2.amount,
13
+ weight: {
14
+ value: weight ?? 0,
15
+ unit: weightUnit
16
+ },
17
+ image
18
+ };
19
+ };
20
+ const normalizeLineItem = (lineItem)=>{
21
+ const { quantity , id , merchandise } = lineItem;
22
+ const variant = normalizeCartProductVariant(merchandise);
23
+ return {
24
+ id,
25
+ quantity,
26
+ variant,
27
+ attributes: lineItem.attributes,
28
+ variantId: variant.id,
29
+ name: variant.name,
30
+ productTitle: merchandise.product.title,
31
+ productId: variant.id,
32
+ path: merchandise.product.handle,
33
+ discounts: []
34
+ };
35
+ };
36
+ const normalizeCart = (cart)=>{
37
+ const { cost } = cart;
38
+ return {
39
+ createdAt: cart.createdAt,
40
+ id: cart.id,
41
+ lineItems: cart.lines.nodes.map(normalizeLineItem),
42
+ subtotalPrice: +cost.subtotalAmount.amount,
43
+ totalPrice: +cost.totalAmount.amount,
44
+ currency: {
45
+ code: cost.totalAmount.currencyCode
46
+ },
47
+ taxesIncluded: true,
48
+ lineItemsSubtotalPrice: +cost.subtotalAmount.amount,
49
+ checkoutUrl: cart.checkoutUrl,
50
+ note: cart.note,
51
+ discounts: cart.discountCodes.map((v)=>({
52
+ code: v.code,
53
+ applicable: v.applicable
54
+ }))
55
+ };
56
56
  };
57
57
 
58
58
  exports.normalizeCart = normalizeCart;