UNPKG

@procore/core-scripts

Version:

A CLI to enhance your development experience

96 lines 3.42 kB
"use strict"; 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