---
# ===================================================================
# BUILD-TIME CONFIG PROPERTIES
#
# This is multi-env properties file. Keep sensitive data in external
# file that SysOps can source at runtime.
# ===================================================================


# ----------------------------------------
# CORE PROPERTIES
# ----------------------------------------

# build
build:
  src: src
  extras:
    - "src/.htaccess"
    - "src/favicon.ico"
    - "src/robots.txt"
    - "src/**/*.json"
    - "src/**/*.html"
    - "!src/index.html"
    - ".tmp/**/*.css"
  temp: .tmp
  dest: dist

# server
browserSync:
  options:
    logPrefix: "SPA"
    browser: "google chrome"
    notify: true
    logLevel: debug
    server:
      baseDir:
        - ".tmp"
        - "src"
        - "."
      index: "index.html"
      routes:
        "/source": "/src/app"

# http-proxy-middleware
proxy:
  context: "/v1"
  options:
    target: "http://localhost:8050"
    ws: false
    proxyTable:
      "dev.localhost:3000" : "http://localhost:8050"
      "localhost:3000/api" : "http://localhost:8003"

# css
sass:
  src:
    - "src/**/*.scss"
  dest: .tmp
  autoprefixer:
    - "ie >= 10"
    - "ie_mob >= 10"
    - "ff >= 30"
    - "chrome >= 34"
    - "safari >= 7"
    - "opera >= 23"
    - "ios >= 7"
    - "android >= 4.4"
    - "bb >= 10"
  options:
    precision: 10
    outputStyle: "nested"
    errLogToConsole: true

# sourcemaps
sourcemaps:
  dest: .maps
  options:
    sourceRoot: "src"
    includeContent: true

# scripts
scripts:
  src: "src/app/**/*.ts"
  dest: .tmp

# images
images:
  src: "src/assets/images/**/*"
  dest: dist/assets/images
  options:
    optimizationLevel: 3
    progressive: true
    interlaced: true

# fonts
fonts:
  src:
    - "src/assets/fonts/**/*.{eot,svg,ttf,woff,woff2}"
    - "jspm_packages/**/*.{woff,woff2}"
  dest: "dist/assets/fonts"
  options:
    includeParents: 0

# html
html:
  src: "src/index.html"
  dest: dist
  options:
    usePrefix: false
    patterns:
      - match: "jspm_packages/system.js"
        replacement: "build.js"
      - match: "<!-- PROD"
        replacement: ""
      - match: "END -->"
        replacement: ""

# sw-precache
swPrecache:
  dest: .tmp
  options:
    cacheId: "spa-starter-kit"
#    dynamicUrlToDependencies:
#      "dynamic/page1":
#        - "src/app/views/layout.jade"
#        - "src/app/views/page1.jade"
#      "dynamic/page2":
#        - "src/app/views/layout.jade"
#        - "src/app/views/page2.jade"
    handleFetch: false
    staticFileGlobs:
      - "src/assets/fonts/**/*.woff"
      - "src/assets/images/**/*"
      - "src/**/*.css"
      - "src/app/**/*.js"
      - "src/**/*.{html,json}"
    stripPrefix: "src/"
    verbose: true

# Require JS Bundler
buildProfile:
  mainConfigFile: jspm.config.js
  appDir: .tmp
  baseUrl: "."
  removeCombined: true
  findNestedDependencies: true
  dir: dist
  optimizeCss: none
  optimize: none
  modules:
    - name: vendor
      exclude:
        - angular
    - name: bootstrap
      include:
        - requirejs
      exclude:
        - vendor
    - name: common/index
    - name: drug/index
    - name: experiments/index
    - name: grails/index
    - name: home/index
    - name: iprovider/index
    - name: provider/index


# deploy
deploy:
  src: "dist/**/*"

# ----------------------------------------
# TESTING PROPERTIES
# ----------------------------------------

# karma unit testing
karmaCommonConf:
  frameworks:
    - jasmine
    - requirejs
    - traceur
  files:
    - test/test-main.js
    - pattern: "src/app/**/*.js"
      included: false
    - pattern: "test/unit/**/*.js"
      included: false
  exclude:
    - app/bootstrap.js
  proxies:
    /base/di/: /base/bower_components/di/dist/amd/
    /base/assert.js: /base/bower_components/assert/dist/amd/assert.js
    /base/diary.js: /base/bower_components/diary/dist/amd/diary.js
    /base/harmony-reflect.js: /base/bower_components/harmony-reflect/reflect.js
  reporters:
    - progress
  preprocessors:
    "src/app/**/*.js":
      - traceur
    "test/unit/**/*.js":
      - traceur
  browsers:
    - Chrome
  traceurPreprocessor:
    options:
      modules: amd
      atscript: true
      types: true
      typeAssertions: true
      typeAssertionModule: assert
      annotations: true
      memberVariables: true
      asyncFunctions: true
      asyncGenerators: true
      forOn: true
      arrayComprehension: true
      generatorComprehension: true
      experimental: true

