@procore/core-scripts
Version:
A CLI to enhance your development experience
96 lines • 3.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.jestConfigFactory = exports.JestEnvironments = void 0;
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
var JestEnvironments;
(function (JestEnvironments) {
JestEnvironments["node"] = "node";
JestEnvironments["browser"] = "browser";
})(JestEnvironments || (exports.JestEnvironments = JestEnvironments = {}));
function getSetupFilesPath(workspace) {
return ['js', 'jsx', 'ts', 'tsx']
.map((ext) => workspace.resolve('src', '__tests__', `setupFiles.${ext}`))
.find(fs_1.default.existsSync);
}
function getSetupFrameworkPath(workspace) {
return ['js', 'jsx', 'ts', 'tsx']
.map((ext) => workspace.resolve('src', '__tests__', `setupFramework.${ext}`))
.find(fs_1.default.existsSync);
}
function getTestEnvironment(environment) {
switch (environment) {
case JestEnvironments.node:
return 'node';
case JestEnvironments.browser:
return 'jsdom';
default:
throw new Error(`${environment} is not a valid environment.`);
}
}
const jestConfigFactory = (workspace, opts) => {
const options = {
environment: JestEnvironments.node,
react: {
svg: false,
},
transformAssets: false,
...opts,
};
const moduleNameMapper = {};
if (options.transformAssets) {
moduleNameMapper['^.+\\.(css|sass|scss)$'] =
require.resolve('identity-obj-proxy');
}
moduleNameMapper['^@/(.*)$'] = '<rootDir>/src/$1';
const transformIgnorePatterns = [
'/node_modules/(?!.*(@procore/core-react|date-fns))(.*)',
];
const transform = {
'^.+\\.(js|jsx|ts|tsx)$': require.resolve('./transforms/babel'),
};
const setupFilesAfterEnv = [];
const setupFiles = [];
if (options.react.svg) {
transform['\\.svg$'] = require.resolve('./transforms/reactSvg');
}
if (options.transformAssets) {
transform['^(?!.*\\.(js|jsx|ts|tsx|css|json)$)'] =
require.resolve('./transforms/file');
transformIgnorePatterns.push('\\.(css|sass|scss)$');
}
const setupFrameworkPath = getSetupFrameworkPath(workspace);
if (setupFrameworkPath) {
setupFilesAfterEnv.push(setupFrameworkPath);
}
const setupFilesPath = getSetupFilesPath(workspace);
if (setupFilesPath) {
setupFiles.push(setupFilesPath);
}
return {
collectCoverageFrom: ['<rootDir>/src/**/*.(js|jsx|ts|tsx)'],
coverageDirectory: '<rootDir>/coverage',
coveragePathIgnorePatterns: [
'/node_modules/',
'/__mocks__/',
'/__tests__/',
'.d.ts$',
],
moduleFileExtensions: ['node', 'js', 'json', 'jsx', 'ts', 'tsx'],
moduleNameMapper,
resolver: require.resolve('jest-pnp-resolver'),
roots: ['<rootDir>/src'],
setupFiles,
setupFilesAfterEnv,
testEnvironment: getTestEnvironment(options.environment),
testMatch: ['<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}'],
transform,
transformIgnorePatterns,
watchPlugins: [
'jest-watch-typeahead/filename',
'jest-watch-typeahead/testname',
],
};
};
exports.jestConfigFactory = jestConfigFactory;
//# sourceMappingURL=config.js.map
;