whole_func_string: function preprocessCartForServer( {
  	coupon,
  	is_coupon_applied,
  	is_coupon_removed,
  	currency,
  	temporary,
  	extra,
  	products,
  	tax,
  } ) {
  	const needsUrlCoupon = ! (
  		coupon ||
  		is_coupon_applied ||
  		is_coupon_removed ||
  		typeof document === 'undefined'
  	);
  	const urlCoupon = needsUrlCoupon ? url.parse( document.URL, true ).query.coupon : '';
  
  	return Object.assign(
  		{
  			coupon,
  			is_coupon_applied,
  			is_coupon_removed,
  			currency,
  			tax,
  			temporary,
  			extra,
  			products: products.map(
  				( { product_id, meta, free_trial, volume, extra: productExtra } ) => ( {
  					product_id,
  					meta,
  					free_trial,
  					volume,
  					extra: productExtra,
  				} )
  			),
  		},
  		needsUrlCoupon &&
  			urlCoupon && {
  				coupon: urlCoupon,
  				is_coupon_applied: false,
  			}
  	);
  }
func_code_string: function preprocessCartForServer( {
  	coupon,
  	is_coupon_applied,
  	is_coupon_removed,
  	currency,
  	temporary,
  	extra,
  	products,
  	tax,
  } ) {
  	const needsUrlCoupon = ! (
  		coupon ||
  		is_coupon_applied ||
  		is_coupon_removed ||
  		typeof document === 'undefined'
  	);
  	const urlCoupon = needsUrlCoupon ? url.parse( document.URL, true ).query.coupon : '';
  
  	return Object.assign(
  		{
  			coupon,
  			is_coupon_applied,
  			is_coupon_removed,
  			currency,
  			tax,
  			temporary,
  			extra,
  			products: products.map(
  				( { product_id, meta, free_trial, volume, extra: productExtra } ) => ( {
  					product_id,
  					meta,
  					free_trial,
  					volume,
  					extra: productExtra,
  				} )
  			),
  		},
  		needsUrlCoupon &&
  			urlCoupon && {
  				coupon: urlCoupon,
  				is_coupon_applied: false,
  			}
  	);
  }
func_documentation_string: Preprocesses cart for server.
  
  @param {Object} cart Cart object.
  @returns {Object} A new cart object.