Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const { resolve, extname, join, dirname, basename } = require('path');
const lwcResolver = require('@lwc/module-resolver');
/*
* In Jest version 24 the default resolver was renamed to camelCase. Temporarily
* support both file names until consumers upgrade their Jest version.
*
* Jest master branch has the default resolver passed as a param to custom
* resolvers like this. Once that is released we can remove this entire block.
* https://github.com/facebook/jest/commit/3f4661f141562aeca65cdad3802e930835dcf0d9
*/
let resolver;
try {
resolver = require('jest-resolve/build/default_resolver').default;
} catch (e) {
resolver = require('jest-resolve/build/defaultResolver').default;
}
const EMPTY_CSS_MOCK = resolve(__dirname, '..', 'resources', 'emptyStyleMock.js');
const EMPTY_HTML_MOCK = resolve(__dirname, '..', 'resources', 'emptyHtmlMock.js');
const WHITELISTED_LWC_PACKAGES = {
lwc: '@lwc/engine',
'wire-service': '@lwc/wire-service',
'wire-service-jest-util': 'lwc-wire-service-jest-util',
};
const lwcMap = lwcResolver.resolveModules();
// This logic is somewhat the same in the compiler resolution system
// We should try to consolidate it at some point.
function isImplicitHTMLImport(importee, { basedir }) {
const ext = extname(importee);
const { resolve, extname, join, dirname, basename } = require('path');
const lwcNpmResolver = require('@lwc/module-resolver');
/*
* In Jest version 24 the default resolver was renamed to camelCase. Temporarily
* support both file names until consumers upgrade their Jest version.
*
* Jest master branch has the default resolver passed as a param to custom
* resolvers like this. Once that is released we can remove this entire block.
* https://github.com/facebook/jest/commit/3f4661f141562aeca65cdad3802e930835dcf0d9
*/
let resolver;
try {
resolver = require('jest-resolve/build/default_resolver').default;
} catch (e) {
resolver = require('jest-resolve/build/defaultResolver').default;
}
const EMPTY_CSS_MOCK = resolve(__dirname, '..', 'resources', 'emptyStyleMock.js');
const EMPTY_HTML_MOCK = resolve(__dirname, '..', 'resources', 'emptyHtmlMock.js');
const WHITELISTED_LWC_PACKAGES = {
lwc: '@lwc/engine',
'wire-service': '@lwc/wire-service',
'wire-service-jest-util': 'lwc-wire-service-jest-util',
};
const lwcMap = lwcNpmResolver.resolveLwcNpmModules();
// This logic is somewhat the same in the compiler resolution system
// We should try to consolidate it at some point.
function isImplicitHTMLImport(importee, { basedir }) {
const ext = extname(importee);
module.exports = function(path: string, options: ResolveOptions) {
const ext = extname(path);
if (
ext === '.css' ||
ext === '.scss' ||
ext === '.sass' ||
ext === '.less' ||
ext === '.styl'
) {
return require.resolve('identity-obj-proxy');
}
// Try to use the defaultResolver
try {
return defaultResolver(path, options);
} catch (e) {
// Fallback to using typescript
compilerSetup = compilerSetup || getCompilerSetup(options.rootDir);
const { compilerOptions, host } = compilerSetup;
return ts.resolveModuleName(path, options.basedir, compilerOptions, host)
.resolvedModule.resolvedFileName;
}
};
module.exports = (moduleName, options) => {
const resolvedPath = resolver(moduleName, options);
if (
ReactTestVersion &&
['react', 'react-dom', 'react-test-renderer'].some(p =>
resolvedPath.includes('node_modules/${}/')
) &&
!resolvedPath.includes('react-versions/react')
) {
return resolvedPath.replace(
'node_modules/',
`react-versions/react-${ReactTestVersion}/node_modules/`
);
}
return resolvedPath;
};
module.exports = function (path, options) {
return defaultResolver(getLwcPath(path, options), options);
};