{"version":3,"sources":["../../src/types/api.ts","../../src/app/_lib/cleverTapShared.ts","../../src/api/shop/lib/zipToState.ts"],"sourcesContent":["import type { sortOptions } from '~/api/shop/catalogItems/indexing'\nimport type { BeerDetailsRow } from '~/api/shop/catalogItems/utils'\nimport type { GoogleMapsComponentsConfig } from '~/api/shop/integrations/integration'\nimport type { SizeIconValues } from '~/api/shop/integrations/integrationHelpers'\nimport type {\n  ut_catalog_items_type,\n  ut_shop_categories_category_type,\n  ut_shop_vendors_name,\n} from '~/prismaInterfaces'\nimport type { GetCatalogItemResponse } from './apiV2'\n\nexport type AlgoliaCatalogItemType =\n  | 'Beer'\n  | 'Box'\n  | 'Merch'\n  | 'SubscriptionBox'\n\nexport interface AlgoliaCatalogItem {\n  objectID: string\n  id: number\n  type: AlgoliaCatalogItemType\n  name: string\n  beer_name: string | null\n  brewery_name: string | null\n  brewery_state: string | null\n  style: string | null\n  product_image: string\n  vendor: ut_shop_vendors_name\n  categories: string[]\n  admin_categories: string[]\n  untappd_id: number | null\n  untappd_rating: number | null\n  product_image_dominant_color?: string | null\n  merchant_name?: string\n  merchant_image?: string\n  description?: string\n  vendor_item_id: string\n  has_variants: boolean\n  variants: CatalogItemVariant[]\n  variants_in_stock: CatalogItemVariant[]\n  lowest_price_variant?: CatalogItemVariant\n  filter_type: CatalogItemType\n  status: 'enabled' | 'disabled' | 'unknown'\n  synced_at?: Date\n  created_at?: Date\n  updated_at?: Date\n  is_out_of_stock?: boolean\n  is_hidden?: boolean\n  abv?: number\n  ibu?: number\n  'styles.lvl0'?: string\n  'styles.lvl1'?: string\n  has_community_award: boolean\n  locations?: string[]\n  pre_sale_date?: Date | string | null\n}\n\nexport function isAlgoliaCatalogItem(\n  item: CatalogItemResponse | AlgoliaCatalogItem\n): item is AlgoliaCatalogItem {\n  return (item as AlgoliaCatalogItem).objectID !== undefined\n}\n\nexport interface CatalogItemResponse {\n  id: number\n  type: CatalogItemType\n  vendor: ut_shop_vendors_name\n  vendor_item_id: string\n  name: string\n  merchant_name: string\n  description: string\n  product_image: string\n  product_images: string[]\n  product_image_dominant_color: string | null\n  product_image_url: string // The url we have cached in database\n  updated_at: Date\n  created_at: Date\n  status: 'enabled' | 'disabled' | 'unknown'\n  variants: CatalogItemVariant[]\n  item_details:\n    | CatalogItemBeerDetails\n    | CatalogItemBoxDetails\n    | CatalogItemMerchDetails\n  category?: string\n  is_out_of_stock?: boolean\n  is_hidden?: boolean\n  item_is_on_current_catalog?: boolean // Deprecated: v2 API (multi-cart) app will not use this\n  similar_items?: AlgoliaCatalogItem[]\n  availability_description?: string\n  parent_id?: number\n  is_available_for_sale?: boolean\n  is_mystery_box?: boolean\n  pre_sale_date: Date | null\n}\n\nexport interface CatalogResponseItem {\n  name: string\n  items: AlgoliaCatalogItem[]\n  catalog_items_count: number\n  filter_type: CatalogItemType\n  category_type?: ut_shop_categories_category_type\n  bids?: number[]\n}\n\nexport type CatalogItemType =\n  | 'CatalogItem::Beer'\n  | 'CatalogItem::Box'\n  | 'CatalogItem::Merch'\n  | 'CatalogItem::SubscriptionBox'\n\nexport interface BoxBeer extends BeerDetailsRow {\n  allergen?: string\n  brewery_name: string\n}\n\nexport interface CatalogItemVariant {\n  id: number | string\n  name: string\n  status: string\n  sku: string\n  price: number\n  sale_price: number\n  original_price: number\n  type_id: string\n  price_formatted: string\n  sale_price_formatted: string\n  original_price_formatted: string\n  icon_url?: string\n  icon?: SizeIconValues\n  size: string\n  is_personalized_box_eligible: boolean\n  is_out_of_stock: boolean\n  is_on_sale?: boolean\n  quantity?: number\n  min_qty?: number\n}\n\nexport interface CatalogItemBeerDetails {\n  beer?: BeerDetailsRow\n}\n\nexport interface CatalogItemBoxDetails {\n  beers: BoxBeer[]\n  description?: string\n  /**\n   * @deprecated Use top-level pre_sale_date. Kept for legacy app versions.\n   */\n  shipping_date?: string\n  curated_by?: string\n  curated_by_image?: string\n}\n\nexport interface CatalogItemMerchDetails {\n  category: string\n  is_untappd_exclusive: boolean\n  untappd_exclusive_image_url: string\n}\n\nexport type CatalogItemBeer = GetCatalogItemResponse & {\n  type: 'CatalogItem::Beer'\n  item_details: CatalogItemBeerDetails\n}\n\nexport type CatalogItemBox = GetCatalogItemResponse & {\n  type: 'CatalogItem::Box'\n  item_details: CatalogItemBoxDetails\n}\n\nexport type CatalogItemMerch = GetCatalogItemResponse & {\n  type: 'CatalogItem::Merch'\n  item_details: CatalogItemMerchDetails\n}\n\nexport interface CartItemResponse {\n  catalogItemId: number\n  id: number | string\n  is_qty_in_stock: boolean\n  /**\n   * For beer this is the brewery name\n   */\n  merchant_name: string\n  name: string\n  price: number // lowest price\n  discount_price?: number\n  price_formatted: string\n  discount_price_formatted?: string\n  sale_price: number\n  sale_price_formatted: string\n  original_price: number\n  original_price_formatted: string\n  total_price: number // price * qty\n  total_price_formatted: string\n  total_price_without_deposit_formatted?: string\n  product_image_dominant_color?: string | null\n  product_image: string\n  qty: number\n  sku: string\n  size: string\n  source: 'shop' | 'personalized_box'\n  custom_attributes?: {\n    product_id?: number\n  }\n  catalog_item?: Pick<CatalogItemResponse, 'id' | 'type' | 'vendor_item_id'> & {\n    beer_id?: number\n    beer_name?: string\n    brewery_name?: string\n    beer_style?: string\n  }\n  deposit?: {\n    name: string\n    price: number\n    price_formatted: string\n  }\n  icon?: SizeIconValues\n  inventory_quantity?: number\n}\n\nexport interface CartInfo {\n  message?: string\n  sku: string\n  available?: boolean\n}\n\nexport interface CreditCard {\n  id: string\n  last4: string\n  type: string\n}\n\nexport type SortingOptionValues = keyof typeof sortOptions\n\nexport interface State {\n  name: string\n  code: string\n}\n\nexport interface CheckoutSummaryResponse {\n  cart_id: string\n  cart: Record<string, CartInfo>\n  items: CartItemResponse[]\n  grand_total: number\n  grand_total_formatted: string\n  subtotal: number\n  subtotal_formatted: string\n  tax_amount: number\n  tax_amount_formatted: string\n  subtotal_incl_tax: number\n  subtotal_incl_tax_formatted: string\n  shipping_amount: number\n  shipping_amount_formatted: string\n  small_order_fee: number\n  small_order_fee_formatted: string\n  vendor_callout: string\n  vendor_name: string\n  vendor_email: string\n  vendor_phone: string | undefined\n  vendor_shipping_information: string\n  vendor_logo_url: string\n  discount?: { code: string; amount: number; amountFormatted: string }\n  segments: { title: string; value: number; valueFormatted: string }[]\n  stock_issue?: string\n}\n\nexport const isCatalogItemBeer = (\n  item: CatalogItemResponse | GetCatalogItemResponse\n): item is CatalogItemBeer => {\n  return item.type === 'CatalogItem::Beer'\n}\n\nexport const isCatalogItemBox = (\n  item: CatalogItemResponse | GetCatalogItemResponse\n): item is CatalogItemBox => {\n  return item.type === 'CatalogItem::Box'\n}\n\nexport const isCatalogItemMerch = (\n  item: CatalogItemResponse | GetCatalogItemResponse\n): item is CatalogItemMerch => {\n  return item.type === 'CatalogItem::Merch'\n}\n\nexport interface Refund {\n  id: number\n  amount_refunded: number\n  amount_refunded_formatted: string\n  created_at: string\n  updated_at: string\n}\n\nexport interface OrderResponse {\n  id: number\n  vendor_order_id: string | null\n  vendor_order_number: string | null\n  created_at: Date\n  url: string\n  total_formatted?: string\n  status_text: string\n  items?: CartItemResponse[]\n  shipping_address?: {\n    email: string\n    address_1: string\n    address_2: string\n    city: string\n    country: string\n    first_name: string\n    last_name: string\n    phone: string\n    state: string\n    zip_code: string\n  }\n  refunds: Refund[]\n  metadata: unknown\n}\n\nexport interface OrderExtendedResponse extends OrderResponse {\n  card_type: string\n  last4: string\n  card_image: string\n  subtotal_formatted: string\n  discount?: {\n    amount: number\n    amount_formatted: string\n  }\n  tax_amount_formatted: string\n  shipping_amount: number\n  shipping_amount_formatted: string\n  vendor_name: string\n  vendor_shipping_information: string\n  small_order_fee_formatted: string\n  status_url?: string\n  ship_tracking_url?: string\n}\n\nexport interface InitResponse {\n  algolia_app_id: string\n  algolia_index_name_prefix: string\n  algolia_index_name: string\n  algolia_key: string\n  algolia_key_v2: string\n  current_vendor: ut_shop_vendors_name // Deprecated\n  environment: string\n  catalog_item_ratings: Record<string, number>\n  vendor_name: string // Deprecated\n  vendor_email: string // Deprecated\n  vendor_phone: string | undefined // Deprecated\n  needs_accept_terms: boolean\n  personalized_box_enabled: boolean\n  personalized_box_image_url: string\n  merchant_country_code: string // Deprecated\n  currency_code: string\n  currency_symbol: string\n  min_version: string\n  google_maps_components_config: GoogleMapsComponentsConfig\n  category_visibility: Record<ut_catalog_items_type, boolean>\n  minimum_order_value?: number // Deprecated\n  minimum_order_value_formatted?: string // Deprecated\n  free_shipping_threshold?: number // Deprecated\n  free_shipping_threshold_formatted?: string // Deprecated\n  small_order_fee?: {\n    // Deprecated\n    amount: number\n    amount_formatted: string\n    threshold: number\n    threshold_formatted: string\n  }\n  key_image_setting?: {\n    image_url?: string\n    url?: string\n  }\n  vendor_id: number\n  is_managed_checkout?: boolean // Deprecated\n  address_management_enabled: boolean\n  payment_management_enabled: boolean\n  supported_countries: {\n    code: string\n    name: string\n    country_id: number\n  }[]\n}\n\nexport interface ShopApiError {\n  error?: string\n  meta?: unknown\n  type?: string\n}\n\nexport interface CoreApiError {\n  error: string\n  meta?: unknown\n  type?: string\n}\n\nexport interface AddressResponse {\n  address_1: string\n  address_2: string | null\n  city: string\n  country: string\n  created_at: string\n  first_name: string\n  id: number\n  is_default: boolean\n  last_name: string\n  phone: string | null\n  special_instructions: string | null\n  state: string\n  updated_at: string\n  zip_code: string\n  user_id: number\n}\n\nexport interface CartResponse {\n  id: number\n  vendor_cart_id: string\n  count: number\n  items: CartItemResponse[]\n  qty: number\n  subtotal: number\n  subtotal_formatted: string\n  subtotal_without_deposits?: number\n  subtotal_without_deposits_formatted?: string\n  free_shipping_without_deposits_threshold?: number\n  free_shipping_without_deposits_threshold_formatted?: string\n  discount?: {\n    code: string\n    amount: number\n    amountFormatted: string\n  }\n  estimated_shipping_formatted?: string\n  estimated_total_formatted?: string\n  vendor_shipping_information: string\n  shipping_address: {\n    first_name?: string\n    last_name?: string\n    address_1: string\n    address_2?: string\n    city: string\n    state: string\n    country: string\n    zip_code: string\n    phone: string\n    email: string\n  }\n  type: ut_shop_vendors_name | 'Shop__Cart__HalfTime'\n  debug?: unknown\n  checkout_url?: string\n}\n\nexport interface AddToCartResponse {\n  item_id: number | string\n  name: string\n  price: number\n  qty: number\n  sku: string\n  qty_requested_not_in_stock?: boolean\n}\n\nexport interface BulkAddToCartResponse {\n  success: number\n  error: number\n}\n\nexport type PersonalizedBoxRecommendation = AlgoliaCatalogItem & {\n  sku: string\n  price: number\n  price_formatted: string\n  size: string\n}\n\nexport interface StripeSetupIntentResponse {\n  setup_intent_id: string\n  setup_intent: string | null\n  ephemeral_key?: string\n  customer_id: string\n  publishable_key: string\n  merchant_country_code: string\n  currency_code: string\n}\n\nexport interface SubmitOrderResponse {\n  order: {\n    id: string\n    status: string\n    vendor_order_id: string\n    metadata: {\n      items: CartItemResponse[]\n    }\n  }\n}\n\nexport interface BrewerySearch {\n  objectID: number\n  brewery_id: number\n  brewery_name: string\n  brewery_index: string\n  brewery_alias: string[]\n  brewery_beer_count: number\n  brewery_image: string\n  brewery_page_url: string\n  brewery_country: string\n  brewery_popularity: number\n  brewery_out_of_business: number\n  brewery_city: string\n  brewery_state: string\n  brewery_type_id: number\n  brewery_name_sort: string\n  brewery_homebrewery: number\n  brewery_name_exact: string\n  _geoloc: {\n    lat: number\n    lng: number\n  }\n}\n\nexport interface BeerSearch {\n  objectID: number\n  bid: number\n  beer_abv: number\n  beer_name: string\n  beer_index: string\n  brewery_label: string\n  brewery_name: string\n  brewery_id: number\n  type_name: string\n  type_id: number\n  parent_style_id?: number\n  parent_style_is_beer?: number\n  thc_mg?: number | null\n  cbd_mg?: number | null\n  homebrew: number\n  in_production: number\n  popularity: number\n  beer_slug?: string\n  alias_alt: string[]\n  spelling_alt: string[]\n  brewery_alias: string[]\n  beer_label: string\n  beer_label_hd: string | null\n  beer_index_short: string\n  beer_name_sort: string\n  brewery_name_sort: string\n  rating_score: number\n  rating_count: number\n  brewery_beer_name: string\n  _geoloc: {\n    lat: number\n    lng: number\n  }\n  index_date: string\n}\n\nexport interface VendorSelectResponse {\n  vendor: ut_shop_vendors_name\n  country_id: number\n  shipping_to_text: string\n  is_beer_available: boolean\n}\n","import type { AlgoliaCatalogItem, CatalogItemResponse } from '~/types/api'\nimport { isAlgoliaCatalogItem, isCatalogItemBeer } from '~/types/api'\n\ntype DrinkCreationEvents =\n  | 'create_drink_opened'\n  | 'parent_style_selected'\n  | 'sub_style_selected'\n  | 'producer_chosen'\n  | 'create_drink_submitted'\n  | 'create_drink_succeeded'\n  | 'create_drink_failed'\n\nexport type CleverTapEvent =\n  | 'Charged' // https://developer.clevertap.com/docs/events#what-makes-charged-a-special-event\n  | 'onboarding_complete'\n  | 'checkin'\n  | 'venue_subscribe'\n  | 'view_shop_screen'\n  | 'view_product_details'\n  | 'view_settings'\n  | 'add_to_cart'\n  | 'remove_from_cart'\n  | 'clear_cart'\n  | 'view_cart'\n  | 'begin_checkout'\n  | 'search'\n  | 'share_product'\n  | 'discover_shop_tap'\n  | 'checkout_summary_loaded'\n  | 'checkout_summary_error'\n  | 'checkout_add_payment_info'\n  | 'checkout_pay_now_press'\n  | 'advocacy_link_tap'\n  | 'insider_purchase'\n  | 'shop_web_page_view'\n  | 'shop_web_age_verification'\n  | 'shop_web_zip_entered_success'\n  | 'shop_web_zip_entered_failure'\n  | 'shop_web_continue_to_payment_click'\n  | 'shop_web_delivery_address_added'\n  | 'oznr_pickup_list_view'\n  | 'oznr_merchant_tap'\n  | 'shop_web_state_entered_success'\n  | 'brewery_portal_flag_clicked'\n  | 'brewery_portal_flag_submitted'\n  | 'brewery_portal_upload_started'\n  | 'brewery_portal_upload_success'\n  | 'brewery_portal_upload_failed'\n  | 'brewery_portal_match_success'\n  | 'brewery_portal_match_failed'\n  | 'brewery_portal_manual_reassignment'\n  | 'brewery_portal_confirm_match'\n  | 'brewery_portal_item_match_confirmed_clicked'\n  | 'brewery_portal_item_beer_external_clicked'\n  | 'brewery_portal_item_collapsed_toggled'\n  | 'brewery_portal_item_image_change_requested'\n  | 'brewery_portal_upload_guidelines_viewed'\n  | 'brewery_portal_viewed'\n  | 'brewery_portal_tab_clicked'\n  | 'brewery_portal_item_clicked'\n  | 'beverage_preference_toggled'\n  | DrinkCreationEvents\n\nexport type CleverTapUserProfileKey =\n  | 'brewery_portal_needs_action_count'\n  | 'current_cart_skus'\n  | 'current_catalog_selection'\n  | 'current_shop_state'\n  | 'category-unsubscribe' // Reserved key: https://developer.clevertap.com/docs/upload-user-profiles-api\n  | 'category-resubscribe' // Reserved key: https://developer.clevertap.com/docs/upload-user-profiles-api\n  | 'Email'\n  | 'Country'\n  | 'Region'\n  | 'is_anonymous'\n  | 'Language'\n  | 'last_checkin_beer'\n  | 'last_checkin_category'\n  | 'oznr_merchant_count'\n  | 'personalized_box_purchased'\n  | 'push_enabled_back_in_stock'\n  | 'push_enabled_beer_offers'\n  | 'push_enabled_merch_offers'\n  | 'push_enabled_product_announcements'\n  | 'push_enabled_wishlist_beers'\n  | 'push_enabled_year_in_beer'\n  | 'shippable_for_beer'\n  | 'shop_notify_me_state'\n  | 'subscription_status'\n\n// Copied from node_modules/@types/clevertap-web-sdk/clevertap.d.ts\ninterface SiteData {\n  Name?: string\n  Identity?: string | number\n  Gender?: 'M' | 'F'\n  Employed?: 'Y' | 'N'\n  Married?: 'Y' | 'N'\n  Education?: 'School' | 'College' | 'Graduate'\n  Age?: string | number\n  DOB?: string | number | Date\n  Phone?: string | number\n}\n\nexport type CleverTapUserProfileKeyValues = SiteData &\n  Partial<Record<CleverTapUserProfileKey, unknown>>\n\n// CleverTap does not allow SKUs with periods when we upload our catalog to them, so\n// we replace with underscores. Therefore in order to match CleverTap analytics events to our\n// catalog we need to make sure the app is santizing SKUs in the same way.\nexport const cleverTapSanitizeSku = (sku: string) => {\n  return sku.replaceAll('.', '_')\n}\n\nconst getBeerMetadata = (\n  catalogItem: CatalogItemResponse | AlgoliaCatalogItem\n): Record<string, unknown> => {\n  if (isAlgoliaCatalogItem(catalogItem)) {\n    if (catalogItem.type === 'Beer') {\n      return {\n        beerId: catalogItem.untappd_id,\n        beerName: catalogItem.beer_name,\n        breweryName: catalogItem.brewery_name,\n        beerStyle: catalogItem.style,\n      }\n    }\n  } else {\n    if (isCatalogItemBeer(catalogItem)) {\n      return {\n        beerId: catalogItem.item_details.beer?.untappd_id,\n        beerName: catalogItem.item_details.beer?.name,\n        breweryName: catalogItem.item_details.beer?.brewery_name,\n        beerStyle: catalogItem.item_details.beer?.style,\n      }\n    }\n  }\n  return {}\n}\n\nexport const getCleverTapCatalogItemParams = (\n  catalogItem: CatalogItemResponse | AlgoliaCatalogItem\n): Record<string, unknown> => {\n  const beerMetadata = getBeerMetadata(catalogItem)\n\n  if (isAlgoliaCatalogItem(catalogItem)) {\n    return {\n      catalogItemId: catalogItem.objectID,\n      itemType: catalogItem.type,\n      ...beerMetadata,\n    }\n  } else {\n    return {\n      catalogItemId: catalogItem.id,\n      itemType: catalogItem.type.replace('CatalogItem::', ''),\n      ...beerMetadata,\n    }\n  }\n}\n","/* eslint-disable unicorn/numeric-separators-style */\r\n\r\nexport function zipToState(zip: string) {\r\n  if (zip.length !== 5) {\r\n    return\r\n  }\r\n\r\n  /* Ensure we don't parse strings starting with 0 as octal values */\r\n  const zipcode = Number.parseInt(zip, 10)\r\n\r\n  let st\r\n  let state\r\n\r\n  /* Code cases alphabetized by state */\r\n  if (zipcode >= 35000 && zipcode <= 36999) {\r\n    st = 'AL'\r\n    state = 'Alabama'\r\n  } else if (zipcode >= 99500 && zipcode <= 99999) {\r\n    st = 'AK'\r\n    state = 'Alaska'\r\n  } else if (zipcode >= 85000 && zipcode <= 86999) {\r\n    st = 'AZ'\r\n    state = 'Arizona'\r\n  } else if (zipcode >= 71600 && zipcode <= 72999) {\r\n    st = 'AR'\r\n    state = 'Arkansas'\r\n  } else if (zipcode >= 90000 && zipcode <= 96699) {\r\n    st = 'CA'\r\n    state = 'California'\r\n  } else if (zipcode >= 80000 && zipcode <= 81999) {\r\n    st = 'CO'\r\n    state = 'Colorado'\r\n  } else if (\r\n    (zipcode >= 6000 && zipcode <= 6389) ||\r\n    (zipcode >= 6391 && zipcode <= 6999)\r\n  ) {\r\n    st = 'CT'\r\n    state = 'Connecticut'\r\n  } else if (zipcode >= 19700 && zipcode <= 19999) {\r\n    st = 'DE'\r\n    state = 'Delaware'\r\n  } else if (zipcode >= 32000 && zipcode <= 34999) {\r\n    st = 'FL'\r\n    state = 'Florida'\r\n  } else if (\r\n    (zipcode >= 30000 && zipcode <= 31999) ||\r\n    (zipcode >= 39800 && zipcode <= 39999)\r\n  ) {\r\n    st = 'GA'\r\n    state = 'Georgia'\r\n  } else if (zipcode >= 96700 && zipcode <= 96999) {\r\n    st = 'HI'\r\n    state = 'Hawaii'\r\n  } else if (zipcode >= 83200 && zipcode <= 83999 && zipcode !== 83414) {\r\n    st = 'ID'\r\n    state = 'Idaho'\r\n  } else if (zipcode >= 60000 && zipcode <= 62999) {\r\n    st = 'IL'\r\n    state = 'Illinois'\r\n  } else if (zipcode >= 46000 && zipcode <= 47999) {\r\n    st = 'IN'\r\n    state = 'Indiana'\r\n  } else if (zipcode >= 50000 && zipcode <= 52999) {\r\n    st = 'IA'\r\n    state = 'Iowa'\r\n  } else if (zipcode >= 66000 && zipcode <= 67999) {\r\n    st = 'KS'\r\n    state = 'Kansas'\r\n  } else if (zipcode >= 40000 && zipcode <= 42999) {\r\n    st = 'KY'\r\n    state = 'Kentucky'\r\n  } else if (zipcode >= 70000 && zipcode <= 71599) {\r\n    st = 'LA'\r\n    state = 'Louisiana'\r\n  } else if (zipcode >= 3900 && zipcode <= 4999) {\r\n    st = 'ME'\r\n    state = 'Maine'\r\n  } else if (zipcode >= 20600 && zipcode <= 21999) {\r\n    st = 'MD'\r\n    state = 'Maryland'\r\n  } else if (\r\n    (zipcode >= 1000 && zipcode <= 2799) ||\r\n    zipcode === 5501 ||\r\n    zipcode === 5544\r\n  ) {\r\n    st = 'MA'\r\n    state = 'Massachusetts'\r\n  } else if (zipcode >= 48000 && zipcode <= 49999) {\r\n    st = 'MI'\r\n    state = 'Michigan'\r\n  } else if (zipcode >= 55000 && zipcode <= 56899) {\r\n    st = 'MN'\r\n    state = 'Minnesota'\r\n  } else if (zipcode >= 38600 && zipcode <= 39999) {\r\n    st = 'MS'\r\n    state = 'Mississippi'\r\n  } else if (zipcode >= 63000 && zipcode <= 65999) {\r\n    st = 'MO'\r\n    state = 'Missouri'\r\n  } else if (zipcode >= 59000 && zipcode <= 59999) {\r\n    st = 'MT'\r\n    state = 'Montana'\r\n  } else if (zipcode >= 27000 && zipcode <= 28999) {\r\n    st = 'NC'\r\n    state = 'North Carolina'\r\n  } else if (zipcode >= 58000 && zipcode <= 58999) {\r\n    st = 'ND'\r\n    state = 'North Dakota'\r\n  } else if (zipcode >= 68000 && zipcode <= 69999) {\r\n    st = 'NE'\r\n    state = 'Nebraska'\r\n  } else if (zipcode >= 88900 && zipcode <= 89999) {\r\n    st = 'NV'\r\n    state = 'Nevada'\r\n  } else if (zipcode >= 3000 && zipcode <= 3899) {\r\n    st = 'NH'\r\n    state = 'New Hampshire'\r\n  } else if (zipcode >= 7000 && zipcode <= 8999) {\r\n    st = 'NJ'\r\n    state = 'New Jersey'\r\n  } else if (zipcode >= 87000 && zipcode <= 88499) {\r\n    st = 'NM'\r\n    state = 'New Mexico'\r\n  } else if (\r\n    (zipcode >= 10000 && zipcode <= 14999) ||\r\n    zipcode === 6390 ||\r\n    zipcode === 501 ||\r\n    zipcode === 544\r\n  ) {\r\n    st = 'NY'\r\n    state = 'New York'\r\n  } else if (zipcode >= 43000 && zipcode <= 45999) {\r\n    st = 'OH'\r\n    state = 'Ohio'\r\n  } else if (\r\n    (zipcode >= 73000 && zipcode <= 73199) ||\r\n    (zipcode >= 73400 && zipcode <= 74999)\r\n  ) {\r\n    st = 'OK'\r\n    state = 'Oklahoma'\r\n  } else if (zipcode >= 97000 && zipcode <= 97999) {\r\n    st = 'OR'\r\n    state = 'Oregon'\r\n  } else if (zipcode >= 15000 && zipcode <= 19699) {\r\n    st = 'PA'\r\n    state = 'Pennsylvania'\r\n  } else if (zipcode >= 300 && zipcode <= 999) {\r\n    st = 'PR'\r\n    state = 'Puerto Rico'\r\n  } else if (zipcode >= 2800 && zipcode <= 2999) {\r\n    st = 'RI'\r\n    state = 'Rhode Island'\r\n  } else if (zipcode >= 29000 && zipcode <= 29999) {\r\n    st = 'SC'\r\n    state = 'South Carolina'\r\n  } else if (zipcode >= 57000 && zipcode <= 57999) {\r\n    st = 'SD'\r\n    state = 'South Dakota'\r\n  } else if (zipcode >= 37000 && zipcode <= 38599) {\r\n    st = 'TN'\r\n    state = 'Tennessee'\r\n  } else if (\r\n    (zipcode >= 75000 && zipcode <= 79999) ||\r\n    (zipcode >= 73301 && zipcode <= 73399) ||\r\n    (zipcode >= 88500 && zipcode <= 88599)\r\n  ) {\r\n    st = 'TX'\r\n    state = 'Texas'\r\n  } else if (zipcode >= 84000 && zipcode <= 84999) {\r\n    st = 'UT'\r\n    state = 'Utah'\r\n  } else if (zipcode >= 5000 && zipcode <= 5999) {\r\n    st = 'VT'\r\n    state = 'Vermont'\r\n  } else if (\r\n    (zipcode >= 20100 && zipcode <= 20199) ||\r\n    (zipcode >= 22000 && zipcode <= 24699) ||\r\n    zipcode === 20598\r\n  ) {\r\n    st = 'VA'\r\n    state = 'Virginia'\r\n  } else if (\r\n    (zipcode >= 20000 && zipcode <= 20099) ||\r\n    (zipcode >= 20200 && zipcode <= 20599) ||\r\n    (zipcode >= 56900 && zipcode <= 56999)\r\n  ) {\r\n    st = 'DC'\r\n    state = 'Washington DC'\r\n  } else if (zipcode >= 98000 && zipcode <= 99499) {\r\n    st = 'WA'\r\n    state = 'Washington'\r\n  } else if (zipcode >= 24700 && zipcode <= 26999) {\r\n    st = 'WV'\r\n    state = 'West Virginia'\r\n  } else if (zipcode >= 53000 && zipcode <= 54999) {\r\n    st = 'WI'\r\n    state = 'Wisconsin'\r\n  } else if ((zipcode >= 82000 && zipcode <= 83199) || zipcode === 83414) {\r\n    st = 'WY'\r\n    state = 'Wyoming'\r\n  } else {\r\n    return\r\n  }\r\n\r\n  return {\r\n    state,\r\n    twoLetter: st,\r\n  }\r\n}\r\n"],"mappings":"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","names":["isAlgoliaCatalogItem","item","objectID","undefined","isCatalogItemBeer","type","isCatalogItemBox","isCatalogItemMerch","cleverTapSanitizeSku","sku","replaceAll","getBeerMetadata","catalogItem","isAlgoliaCatalogItem","type","beerId","untappd_id","beerName","beer_name","breweryName","brewery_name","beerStyle","style","isCatalogItemBeer","item_details","beer","name","getCleverTapCatalogItemParams","beerMetadata","catalogItemId","objectID","itemType","id","replace","zipToState","zip","length","zipcode","Number","parseInt","st","state","twoLetter"]}