Comparing version 0.2.18 to 0.2.19
81
index.js
@@ -32,2 +32,11 @@ "use strict"; | ||
}; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || Array.prototype.slice.call(from)); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -37,41 +46,35 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
var fs = __importStar(require("fs")); | ||
var crypto = __importStar(require("crypto")); | ||
var path = __importStar(require("path")); | ||
var process = __importStar(require("process")); | ||
var vm = __importStar(require("vm")); | ||
var create_cache_key_function_1 = __importDefault(require("@jest/create-cache-key-function")); | ||
var core_1 = require("@swc/core"); | ||
/** | ||
* Loads closest package.json in the directory hierarchy | ||
*/ | ||
function loadClosestPackageJson(attempts) { | ||
if (attempts === void 0) { attempts = 1; } | ||
if (attempts > 5) { | ||
throw new Error('Can\'t resolve main package.json file'); | ||
} | ||
var mainPath = attempts === 1 ? './' : Array(attempts).join('../'); | ||
try { | ||
return require(path.join(process.cwd(), mainPath, 'package.json')); | ||
} | ||
catch (e) { | ||
return loadClosestPackageJson(attempts + 1); | ||
} | ||
} | ||
var packageConfig = loadClosestPackageJson(); | ||
var isEsmProject = packageConfig.type === 'module'; | ||
// Jest use the `vm` [Module API](https://nodejs.org/api/vm.html#vm_class_vm_module) for ESM. | ||
// see https://github.com/facebook/jest/issues/9430 | ||
var supportsEsm = 'Module' in vm; | ||
function createTransformer(swcTransformOpts) { | ||
var computedSwcOptions = buildSwcTransformOpts(swcTransformOpts); | ||
var cacheKeyFunction = (0, create_cache_key_function_1.default)([], [JSON.stringify(computedSwcOptions)]); | ||
return { | ||
process: function (src, filename, jestOptions) { | ||
if (supportsEsm) { | ||
set(computedSwcOptions, 'module.type', isEsm(filename, jestOptions) ? 'es6' : 'commonjs'); | ||
set(computedSwcOptions, 'module.type', jestOptions.supportsStaticESM ? 'es6' : 'commonjs'); | ||
return (0, core_1.transformSync)(src, __assign(__assign({}, computedSwcOptions), { module: __assign(__assign({}, computedSwcOptions.module), { type: (jestOptions.supportsStaticESM ? 'es6' : 'commonjs') }), filename: filename })); | ||
}, | ||
processAsync: function (src, filename) { | ||
return (0, core_1.transform)(src, __assign(__assign({}, computedSwcOptions), { module: __assign(__assign({}, computedSwcOptions.module), { | ||
// async transform is always ESM | ||
type: 'es6' }), filename: filename })); | ||
}, | ||
getCacheKey: function (src, filename) { | ||
var rest = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
rest[_i - 2] = arguments[_i]; | ||
} | ||
if (!computedSwcOptions.sourceMaps) { | ||
set(computedSwcOptions, 'sourceMaps', 'inline'); | ||
} | ||
return (0, core_1.transformSync)(src, __assign(__assign({}, computedSwcOptions), { filename: filename })); | ||
}, | ||
getCacheKey: (0, create_cache_key_function_1.default)([], [JSON.stringify(computedSwcOptions)]) | ||
// @ts-expect-error - type overload is confused | ||
var baseCacheKey = cacheKeyFunction.apply(void 0, __spreadArray([src, filename], rest, false)); | ||
var options = typeof rest[0] === 'string' ? rest[1] : rest[0]; | ||
return crypto | ||
.createHash('md5') | ||
.update(baseCacheKey) | ||
.update('\0', 'utf8') | ||
.update(JSON.stringify({ supportsStaticESM: options.supportsStaticESM })) | ||
.digest('hex'); | ||
} | ||
}; | ||
@@ -97,5 +100,2 @@ } | ||
var computedSwcOptions = swcOptions || getOptionsFromSwrc(); | ||
if (!supportsEsm) { | ||
set(computedSwcOptions, 'module.type', 'commonjs'); | ||
} | ||
if (!((_a = computedSwcOptions.jsc) === null || _a === void 0 ? void 0 : _a.target)) { | ||
@@ -107,16 +107,7 @@ set(computedSwcOptions, 'jsc.target', | ||
set(computedSwcOptions, 'jsc.transform.hidden.jest', true); | ||
if (!computedSwcOptions.sourceMaps) { | ||
set(computedSwcOptions, 'sourceMaps', 'inline'); | ||
} | ||
return computedSwcOptions; | ||
} | ||
function getJestConfig(jestConfig) { | ||
return 'config' in jestConfig | ||
// jest 27 | ||
? jestConfig.config | ||
// jest 26 | ||
: jestConfig; | ||
} | ||
function isEsm(filename, jestOptions) { | ||
var _a; | ||
return (/\.jsx?$/.test(filename) && isEsmProject) || | ||
((_a = getJestConfig(jestOptions).extensionsToTreatAsEsm) === null || _a === void 0 ? void 0 : _a.find(function (ext) { return filename.endsWith(ext); })); | ||
} | ||
function set(obj, path, value) { | ||
@@ -123,0 +114,0 @@ var o = obj; |
{ | ||
"name": "@swc/jest", | ||
"version": "0.2.18", | ||
"version": "0.2.19", | ||
"description": "swc integration for jest", | ||
@@ -31,2 +31,3 @@ "main": "index.js", | ||
"devDependencies": { | ||
"@jest/transform": "^27.5.1", | ||
"@swc/core": "^1.2.85", | ||
@@ -45,6 +46,3 @@ "@types/node": "^16.11.12", | ||
"index.js" | ||
], | ||
"workspaces": [ | ||
"examples/*" | ||
] | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
9373
1
8
121