language: node_js

jobs:
  fast_finish: true
  allow_failures:
    - stage: security scan 🔐

  include:
    - stage: unit tests 👩🏽‍💻
      script: npm run test:unit
      node_js: lts/*

    - stage: spec tests 👩🏽‍💻
      script: npm run test:specs
      node_js: v4
    - node_js: lts/*
    - node_js: node

    - stage: lint ✨
      script: npm run test:lint
      node_js: lts/*

    - stage: minify 🗜️
      script: |
        npm run build
        if ! git diff --quiet; then
          git config --global user.email "travis@travis-ci.org"
          git config --global user.name "Travis-CI"
          git config credential.helper "store --file=.git/credentials"
          echo "https://${GITHUB_TOKEN}:@github.com" > .git/credentials
          git commit -am '🗜️ minify [skip ci]'
          git push origin HEAD:${TRAVIS_BRANCH}
        fi
      node_js: lts/*
      if: branch = master AND type = push

    - stage: security scan 🔐
      script: npm run test:redos
      node_js: lts/*

cache:
  directories:
    - node_modules

git:
  depth: 3
