diff --git a/npm-packages/meteor-rspack/lib/mergeRulesSplitOverlap.js b/npm-packages/meteor-rspack/lib/mergeRulesSplitOverlap.js index 5fd2e03dfb..8dc9c863d0 100644 --- a/npm-packages/meteor-rspack/lib/mergeRulesSplitOverlap.js +++ b/npm-packages/meteor-rspack/lib/mergeRulesSplitOverlap.js @@ -252,6 +252,25 @@ export function cleanOmittedPaths(obj, options = {}) { return result; } +/** + * Normalizes externals configuration to ensure consistent handling. + * @param {Object} config - The configuration object + * @returns {Object} - The normalized configuration + */ +function normalizeExternals(config) { + if (!config || !config.externals) return config; + + // Create a deep clone of the config to avoid modifying the original + const result = { ...config }; + + // If externals is not an array, convert it to an array + if (!Array.isArray(result.externals)) { + result.externals = [result.externals]; + } + + return result; +} + /** * Merges webpack/rspack configs with smart handling of overlapping rules. * @@ -259,6 +278,9 @@ export function cleanOmittedPaths(obj, options = {}) { * @returns {Object} Merged config */ export function mergeSplitOverlap(...configs) { + // Normalize externals in all configs before merging + const normalizedConfigs = configs.map(normalizeExternals); + return mergeWithCustomize({ customizeArray(a, b, key) { if (key === 'module.rules') { @@ -287,5 +309,5 @@ export function mergeSplitOverlap(...configs) { // fall through to default merging return undefined; } - })(...configs); + })(...normalizedConfigs); } diff --git a/npm-packages/meteor-rspack/package-lock.json b/npm-packages/meteor-rspack/package-lock.json index 568a3658e8..54570f2c67 100644 --- a/npm-packages/meteor-rspack/package-lock.json +++ b/npm-packages/meteor-rspack/package-lock.json @@ -1,12 +1,12 @@ { "name": "@meteorjs/rspack", - "version": "0.0.44", + "version": "0.0.46", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@meteorjs/rspack", - "version": "0.0.44", + "version": "0.0.46", "license": "ISC", "dependencies": { "ignore-loader": "^0.1.2", diff --git a/npm-packages/meteor-rspack/package.json b/npm-packages/meteor-rspack/package.json index 7c7e5879d6..0dd6ccd06c 100644 --- a/npm-packages/meteor-rspack/package.json +++ b/npm-packages/meteor-rspack/package.json @@ -1,6 +1,6 @@ { "name": "@meteorjs/rspack", - "version": "0.0.44", + "version": "0.0.46", "description": "Configuration logic for using Rspack in Meteor projects", "main": "index.js", "type": "module", diff --git a/npm-packages/meteor-rspack/rspack.config.js b/npm-packages/meteor-rspack/rspack.config.js index 0f71ef4f05..e99ba454a2 100644 --- a/npm-packages/meteor-rspack/rspack.config.js +++ b/npm-packages/meteor-rspack/rspack.config.js @@ -217,7 +217,7 @@ export default function (inMeteor = {}, argv = {}) { console.log('[i] Meteor flags:', Meteor); } - const enableSwcExternalHelpers = !isServer && swcExternalHelpers; + const enableSwcExternalHelpers = !!swcExternalHelpers; const isDevEnvironment = isRun && isDev && !isTest && !isNative; const swcConfigRule = createSwcConfig({ isTypescriptEnabled, @@ -232,6 +232,7 @@ export default function (inMeteor = {}, argv = {}) { const externals = [ /^meteor.*/, ...(isReactEnabled ? [/^react$/, /^react-dom$/] : []), + ...(isServer ? [/^bcrypt$/] : []), ]; const alias = { '/': path.resolve(process.cwd()), diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index fe72514001..9064aa323f 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -367,7 +367,6 @@ if (Plugin?.rspackHelpers?.isRspackOutputFile(inputFilePath)) { tsx: hasTSXSupport, }, ...(hasSwcHelpersAvailable && - !isNodeTarget && (packageName == null || !['core-runtime', 'modules', 'modules-runtime'].includes( packageName, diff --git a/packages/rspack/lib/constants.js b/packages/rspack/lib/constants.js index d85b3f74d0..75649bfc1d 100644 --- a/packages/rspack/lib/constants.js +++ b/packages/rspack/lib/constants.js @@ -5,7 +5,7 @@ export const DEFAULT_RSPACK_VERSION = '1.5.0'; -export const DEFAULT_METEOR_RSPACK_VERSION = '0.0.44'; +export const DEFAULT_METEOR_RSPACK_VERSION = '0.0.46'; export const DEFAULT_METEOR_RSPACK_REACT_HMR_VERSION = '1.4.3'; diff --git a/tools/modern-tests/apps/react-router/package.json b/tools/modern-tests/apps/react-router/package.json index 753fec1e49..966f93a251 100644 --- a/tools/modern-tests/apps/react-router/package.json +++ b/tools/modern-tests/apps/react-router/package.json @@ -11,6 +11,7 @@ "@babel/runtime": "^7.23.5", "@modelcontextprotocol/sdk": "^1.17.3", "@swc/helpers": "^0.5.17", + "bcrypt": "^6.0.0", "meteor-node-stubs": "^1.2.12", "react": "^18.3.1", "react-compiler-runtime": "^19.1.0-rc.2", diff --git a/tools/modern-tests/apps/react-router/server/main.js b/tools/modern-tests/apps/react-router/server/main.js index 4f036e6af4..f0ea8e46e8 100644 --- a/tools/modern-tests/apps/react-router/server/main.js +++ b/tools/modern-tests/apps/react-router/server/main.js @@ -6,9 +6,11 @@ import '@helper/alias'; import ReactAlias from '@react/alias'; import './resolve-extensions/first'; import { TypescriptEnabled } from './ts/helpers'; +import bcrypt from "bcrypt"; console.log('@react/alias loaded', ReactAlias.version); console.log('TypescriptEnabled', TypescriptEnabled); +console.log("bcrypt loaded", !!bcrypt); async function insertLink({ title, url }) { await LinksCollection.insertAsync({ title, url, createdAt: new Date() }); diff --git a/tools/modern-tests/apps/vue/package.json b/tools/modern-tests/apps/vue/package.json index 2744495801..207d42b230 100644 --- a/tools/modern-tests/apps/vue/package.json +++ b/tools/modern-tests/apps/vue/package.json @@ -17,7 +17,7 @@ "vue-router": "^4.2.5" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rspack/cli": "^1.4.8", "@rspack/core": "^1.4.8", "@tailwindcss/postcss": "^4.1.12", diff --git a/tools/static-assets/skel-apollo/package.json b/tools/static-assets/skel-apollo/package.json index 73fe05e2c2..30486fc41f 100644 --- a/tools/static-assets/skel-apollo/package.json +++ b/tools/static-assets/skel-apollo/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@graphql-tools/webpack-loader": "^7.0.0", "@rsdoctor/rspack-plugin": "^1.2.3", - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", "@rspack/plugin-react-refresh": "^1.4.3", diff --git a/tools/static-assets/skel-blaze/package.json b/tools/static-assets/skel-blaze/package.json index e3d8c64f29..015d19dee1 100644 --- a/tools/static-assets/skel-blaze/package.json +++ b/tools/static-assets/skel-blaze/package.json @@ -14,7 +14,7 @@ "meteor-node-stubs": "^1.2.12" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-chakra-ui/package.json b/tools/static-assets/skel-chakra-ui/package.json index 61215c811e..6ade02ed52 100644 --- a/tools/static-assets/skel-chakra-ui/package.json +++ b/tools/static-assets/skel-chakra-ui/package.json @@ -21,7 +21,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-full/package.json b/tools/static-assets/skel-full/package.json index 2581bbe447..2cbf71d754 100644 --- a/tools/static-assets/skel-full/package.json +++ b/tools/static-assets/skel-full/package.json @@ -12,7 +12,7 @@ "meteor-node-stubs": "^1.2.12" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-react/package.json b/tools/static-assets/skel-react/package.json index 6a5053d168..b1f421ff14 100644 --- a/tools/static-assets/skel-react/package.json +++ b/tools/static-assets/skel-react/package.json @@ -15,7 +15,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-solid/package.json b/tools/static-assets/skel-solid/package.json index 49b7e0b1b4..b30ab58761 100644 --- a/tools/static-assets/skel-solid/package.json +++ b/tools/static-assets/skel-solid/package.json @@ -14,7 +14,7 @@ "picocolors": "^1.1.1" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-svelte/package.json b/tools/static-assets/skel-svelte/package.json index 057af9e6ed..bc133e5471 100644 --- a/tools/static-assets/skel-svelte/package.json +++ b/tools/static-assets/skel-svelte/package.json @@ -13,7 +13,7 @@ "meteor-node-stubs": "^1.2.12" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-tailwind/package.json b/tools/static-assets/skel-tailwind/package.json index deb1825e75..5c31b39f5e 100644 --- a/tools/static-assets/skel-tailwind/package.json +++ b/tools/static-assets/skel-tailwind/package.json @@ -16,7 +16,7 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-typescript/package.json b/tools/static-assets/skel-typescript/package.json index 556495cafd..1c266acd02 100644 --- a/tools/static-assets/skel-typescript/package.json +++ b/tools/static-assets/skel-typescript/package.json @@ -15,7 +15,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0", diff --git a/tools/static-assets/skel-vue/package.json b/tools/static-assets/skel-vue/package.json index aa4c7ccc13..effd7dc82f 100644 --- a/tools/static-assets/skel-vue/package.json +++ b/tools/static-assets/skel-vue/package.json @@ -17,7 +17,7 @@ "vue-router": "^4.2.5" }, "devDependencies": { - "@meteorjs/rspack": "^0.0.44", + "@meteorjs/rspack": "^0.0.46", "@rsdoctor/rspack-plugin": "^1.2.3", "@rspack/cli": "^1.5.0", "@rspack/core": "^1.5.0",