summaryrefslogtreecommitdiff
path: root/node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js
Docs
Diffstat (limited to 'node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js')
-rw-r--r--node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js b/node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js
new file mode 100644
index 0000000..873902e
--- /dev/null
+++ b/node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js
@@ -0,0 +1,69 @@
+import {IdentifierRole, isTopLevelDeclaration} from "../parser/tokenizer";
+
+import Transformer from "./Transformer";
+
+export default class ReactHotLoaderTransformer extends Transformer {
+ __init() {this.extractedDefaultExportName = null}
+
+ constructor( tokens, filePath) {
+ super();this.tokens = tokens;this.filePath = filePath;ReactHotLoaderTransformer.prototype.__init.call(this);;
+ }
+
+ setExtractedDefaultExportName(extractedDefaultExportName) {
+ this.extractedDefaultExportName = extractedDefaultExportName;
+ }
+
+ getPrefixCode() {
+ return `
+ (function () {
+ var enterModule = require('react-hot-loader').enterModule;
+ enterModule && enterModule(module);
+ })();`
+ .replace(/\s+/g, " ")
+ .trim();
+ }
+
+ getSuffixCode() {
+ const topLevelNames = new Set();
+ for (const token of this.tokens.tokens) {
+ if (
+ !token.isType &&
+ isTopLevelDeclaration(token) &&
+ token.identifierRole !== IdentifierRole.ImportDeclaration
+ ) {
+ topLevelNames.add(this.tokens.identifierNameForToken(token));
+ }
+ }
+ const namesToRegister = Array.from(topLevelNames).map((name) => ({
+ variableName: name,
+ uniqueLocalName: name,
+ }));
+ if (this.extractedDefaultExportName) {
+ namesToRegister.push({
+ variableName: this.extractedDefaultExportName,
+ uniqueLocalName: "default",
+ });
+ }
+ return `
+;(function () {
+ var reactHotLoader = require('react-hot-loader').default;
+ var leaveModule = require('react-hot-loader').leaveModule;
+ if (!reactHotLoader) {
+ return;
+ }
+${namesToRegister
+ .map(
+ ({variableName, uniqueLocalName}) =>
+ ` reactHotLoader.register(${variableName}, "${uniqueLocalName}", ${JSON.stringify(
+ this.filePath || "",
+ )});`,
+ )
+ .join("\n")}
+ leaveModule(module);
+})();`;
+ }
+
+ process() {
+ return false;
+ }
+}