const babel = require("@babel/core"); const addDataLocator = require("./add-data-locator.cjs"); module.exports = function (source, inputSourceMap) { if (process.env.NODE_ENV !== "development") { return source; } const filename = this.resourcePath; if (!filename || filename.includes("node_modules")) { return source; } // Quick check: if there are no angle brackets, no JSX to transform if (!source.includes("<")) { return source; } try { const result = babel.transformSync(source, { filename, presets: [ ["@babel/preset-react", { runtime: "automatic" }], "@babel/preset-typescript", ], plugins: [addDataLocator], configFile: false, babelrc: false, sourceMaps: true, inputSourceMap: inputSourceMap || undefined, }); if (result && result.code) { this.callback(null, result.code, result.map); return; } } catch (err) { console.error( `[jsx-locator-loader] Skipped ${filename} due to parse notice: ${err.message}`, ); } return source; };