From e1e44c15cb8a08078e951def3ae9c44de1fa540b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 27 Mar 2025 16:45:11 +0100 Subject: [PATCH] perserve Meteor's specifics: reify modules, nested imports and top-level await support --- packages/babel-compiler/babel-compiler.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index f8d6217d54..1de5a197d8 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -1,6 +1,8 @@ var semver = Npm.require("semver"); var JSON5 = Npm.require("json5"); var SWC = Npm.require("@swc/core"); +const reifyCompile = Npm.require("@meteorjs/reify/lib/compiler").compile; +const reifyAcornTopLevelParse = Npm.require("@meteorjs/reify/lib/parsers/top-level").parse; /** * A compiler that can be instantiated with features and used inside @@ -149,7 +151,7 @@ BCp.processOneFileForTarget = function (inputFile, source) { let compilation; try { const packagesSkipSwc = []; - const fileSkipSwc = ['webapp_server.js']; // top level await + const fileSkipSwc = []; // top level await // Determine if SWC should be used based on package and file criteria. const shouldUseSwc = @@ -171,13 +173,25 @@ BCp.processOneFileForTarget = function (inputFile, source) { tsx: hasTSXSupport, }, }, - module: { type: 'commonjs' }, + module: { type: 'es6' }, minify: false, sourceMaps: true, }); + let content = transformed.code; + // Perserve Meteor's specifics: reify modules, nested imports and top-level await support. + const result = reifyCompile(content, { + parse: reifyAcornTopLevelParse, + generateLetDeclarations: false, + ast: false, + }); + if (!result.identical) { + identical = false; + content = result.code; + } + compilation = { - code: transformed.code, + code: content, map: JSON.parse(transformed.map), hash: toBeAdded.hash, sourceType: 'module',