UNPKG

@umijs/test

Version:
103 lines (101 loc) 4.08 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/transformers/esbuild/index.ts var esbuild_exports = {}; __export(esbuild_exports, { default: () => esbuild_default }); module.exports = __toCommonJS(esbuild_exports); var import_crypto = require("crypto"); var import_esbuild = require("esbuild"); var import_fs = __toESM(require("fs")); var import_path = require("path"); var import_options = require("./options"); var THIS_FILE = import_fs.default.readFileSync(__filename); var TS_TSX_REGEX = /\.tsx?$/; var JS_JSX_REGEX = /\.jsx?$/; function isTarget(path) { return JS_JSX_REGEX.test(path) || TS_TSX_REGEX.test(path) || path.endsWith(".mjs"); } var createTransformer = (userOptions = {}) => { const options = (0, import_options.resolveOptions)(userOptions); return { canInstrument: false, getCacheKey(fileData, filePath, transformOptions) { const { config, instrument, configString } = transformOptions; return (0, import_crypto.createHash)("md5").update(THIS_FILE).update("\0", "utf8").update(JSON.stringify(options)).update("\0", "utf8").update(fileData).update("\0", "utf8").update((0, import_path.relative)(config.rootDir, filePath)).update("\0", "utf8").update(configString).update("\0", "utf8").update(filePath).update("\0", "utf8").update(instrument ? "instrument" : "").update("\0", "utf8").update(process.env.NODE_ENV || "").digest("hex"); }, process(source, path, transformOptions) { const { config } = transformOptions; if (!isTarget(path)) return { code: source }; let rawCode = source; if (rawCode.indexOf("jest.mock(") >= 0 || rawCode.indexOf("jest.doMock(") >= 0) { rawCode = require("./transformer").babelTransform({ sourceText: rawCode, sourcePath: path, config: transformOptions }); } const result = (0, import_esbuild.transformSync)(rawCode, { ...options, ...config.globals["jest-esbuild"], loader: userOptions.loader || ext2Loader((0, import_path.extname)(path)), sourcefile: path, sourcesContent: false }); if (result.warnings.length) { result.warnings.forEach((m) => { console.warn(m); }); } let { map, code } = result; map = { ...JSON.parse(result.map), sourcesContent: null }; code = code + "\n//# sourceMappingURL=data:application/json;base64," + Buffer.from(JSON.stringify(map)).toString("base64"); return { code, map }; } }; }; var EXT_MAP = { ".js": "js", ".jsx": "jsx", ".ts": "ts", ".tsx": "tsx", ".mjs": "js" }; function ext2Loader(ext) { return EXT_MAP[ext] || "js"; } var esbuild_default = { createTransformer };