const baseURL = function() {
  switch (process.env.FLYLOCAL_ENV) {
    case "prod":
      return process.env.PROD_ENV;
    case "dev":
      return process.env.DEV_ENV;
    case "local":
      return "http://" + process.env.LOCAL_IP + ":" + process.env.LOCAL_PORT;
    default:
      break;
  }
};

export default {

  env: {
    baseURL: baseURL()
  },

  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: 'FlyLocal',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: 'FlyLocal is the best way to find local airlines that fly throughout the great state of Alaska. Explore the \'Last Frontier\' with FlyLocal.' },
      { name: 'format-detection', content: 'telephone=no' },
      { itemprop: 'name', content: 'Small Planes, Big Experiences' },
      { itemprop: 'description', content: 'FlyLocal is the best way to find local airlines that fly throughout the great state of Alaska. Explore the \'Last Frontier\' with FlyLocal.' },
      { itemprop: 'image', content: baseURL() + '/screenshot.png' },
      { property: 'og:url', content: baseURL() },
      { property: 'og:type', content: 'website' },
      { property: 'og:title', content: 'Small Planes, Big Experiences' },
      { property: 'og:description', content: 'FlyLocal is the best way to find local airlines that fly throughout the great state of Alaska. Explore the \'Last Frontier\' with FlyLocal.' },
      { property: 'og:image', content: baseURL() + '/screenshot.png' },
      { name: 'twitter:card', content: 'summary_large_image' },
      { name: 'twitter:title', content: 'Small Planes, Big Experiences' },
      { name: 'twitter:description', content: 'FlyLocal is the best way to find local airlines that fly throughout the great state of Alaska. Explore the \'Last Frontier\' with FlyLocal.' },
      { name: 'twitter:image', content: baseURL() + '/screenshot.png' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },

  server: (process.env.NODE_ENV !== 'production') ? {
    host: process.env.LOCAL_IP,
    port: process.env.LOCAL_PORT
  } : {},

  serverMiddleware: [
    { path: '/', handler: '~/middleware/redirects.js' },
    { path: '/login', handler: '~/login'},
    { path: '/clickout', handler: '~/middleware/postRequestHandler.js' },
    //{ path: '/flights', handler: '~/middleware/auth-guard.js'}
  ],

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
    '~assets/css/main.css'
  ],

  // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
  plugins: [
    { src: '~/plugins/vue2-leaflet-markercluster.js', mode: 'client' },
    '~plugins/v-mask.js',
    '~plugins/vue-phone-number-input.js',
    '~/plugins/env.js'
  ],

  // Auto import components: https://go.nuxtjs.dev/config-components
  components: true,

  router: {
    middleware: ['auth-guard'],
    extendRoutes (routes, resolve) {
      routes.push(
        // don't need to specify these when there are no params
        {
          name: 'go-orig-dest',
          path: '/go/:o/:d',
          component: resolve(__dirname, 'pages/go.vue')
        },
        {
          name: 'go-orig',
          path: '/go/:o',
          component: resolve(__dirname, 'pages/go.vue')
        },
        {
          name: 'dates-orig-dest',
          path: '/dates/:o/:d',
          component: resolve(__dirname, 'pages/dates.vue')
        },
        {
          name: 'flights-orig-dest-departure-time',
          path: '/flights/:o/:d/:departure/:time',
          component: resolve(__dirname, 'pages/flights.vue')
        },
        {
          name: 'flights-orig-dest-departure',
          path: '/flights/:o/:d/:departure',
          component: resolve(__dirname, 'pages/flights.vue')
        }
      )
    }
  },

  // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
  buildModules: [
    // https://go.nuxtjs.dev/eslint
    //'@nuxtjs/eslint-module',
    // https://go.nuxtjs.dev/stylelint
    '@nuxtjs/stylelint-module',
    // https://go.nuxtjs.dev/tailwindcss
    '@nuxtjs/tailwindcss',
    '@nuxtjs/style-resources',
    '@nuxtjs/dotenv' // (environment variables)
  ],

  styleResources: {
    scss: [
      '~assets/scss/mixins.scss',
      '~assets/scss/variables.scss'
    ]
  },

  // Modules: https://go.nuxtjs.dev/config-modules
  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
    // https://go.nuxtjs.dev/pwa
    '@nuxtjs/pwa',
    'nuxt-leaflet',
    'nuxt-vue-select',
    [
      '@adinvadim/nuxt-segment-analytics', 
      { 
        id: (process.env.FLYLOCAL_ENV === 'prod') ? "QpcGXqVfScXUfRPbAGkbtyst6x5HNpRf" : "9dEbke7oGZjUCbF01hbcycoHxrpLvVBV", 
        useRouter: true 
      }
    ],
    ['cookie-universal-nuxt']
  ],

  // Axios module configuration: https://go.nuxtjs.dev/config-axios
  axios: {},

  // PWA module configuration: https://go.nuxtjs.dev/pwa
  pwa: {
    manifest: {
      lang: 'en'
    }
  },

  // Build Configuration: https://go.nuxtjs.dev/config-build
  build: {
    extend (config, ctx) {
      if (ctx.isDev) {
        config.devtool = ctx.isClient ? 'source-map' : 'inline-source-map'
      }
    },
    loaders: {
      sass: {
        implementation: require('sass')
      },
      scss: {
        implementation: require('sass')
      }
    }
  },

  dev: process.env.NODE_ENV !== 'production'

}
