| 12345678910111213141516171819202122232425262728293031323334353637383940 | const exec = require('shell-utils').exec;
const includes = require('lodash/includes')
const split = require('lodash/split')
const filter = require('lodash/filter')
const flow = require('lodash/fp/flow')
const map = require('lodash/fp/map')
const join = require('lodash/fp/join')
const fix = includes(process.argv, '--fix') ? '--fix' : '';
const dirs = [
  'lib/src',
  'integration',
  'e2e',
  'scripts',
  'playground/src'
];
run();
function run() {
  const paths = flow(
    map((d) => d === 'e2e' ? `${d}/**/*.[tj]s` : `${d}/**/*.[tj]sx?`),
    join(' ')
  )(dirs)
  exec.execSync(`tslint ${paths} ${fix} --format verbose`);
  assertAllTsFilesInSrc();
  exec.execSync(`jest --coverage`);
}
function assertAllTsFilesInSrc() {
  const allFiles = exec.execSyncRead('find ./lib/src -type f');
  const lines = split(allFiles, '\n');
  const offenders = filter(lines, (f) => !f.endsWith('.ts') && !f.endsWith('.tsx'));
  if (offenders.length) {
    throw new Error(`\n\nOnly ts/tsx files are allowed:\n${offenders.join('\n')}\n\n\n`);
  }
}
 |