diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index b7d7520ef8..defd1db8f4 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -66,6 +66,8 @@ jobs: run: yarn test:types - name: Run unit tests run: yarn test:ci + - name: Run unit tests in production mode + run: yarn test:production --no-watch - name: Upload unit test coverage report uses: actions/upload-artifact@v4 with: diff --git a/package.json b/package.json index 3678b0d059..756351674d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lwc-monorepo", - "version": "8.14.0", + "version": "8.16.0", "private": true, "description": "Lightning Web Components", "repository": { @@ -19,6 +19,7 @@ "copy-fork": "./scripts/tasks/unsafe-external-contributor-ci-workaround.sh", "dev": "nx run-many --target=dev --all --parallel=999 --exclude=@lwc/perf-benchmarks,@lwc/perf-benchmarks-components,@lwc/integration-tests", "test": "vitest --workspace vitest.workspace.mjs", + "test:production": "VITE_NODE_ENV=production vitest --workspace vitest.workspace.mjs", "test:bespoke": "nx run-many --target=test", "test:debug": "vitest --workspace vitest.workspace.mjs --inspect-brk --no-file-parallelism", "test:ci": "vitest run --workspace vitest.workspace.mjs --coverage", @@ -79,7 +80,7 @@ "*.{css,js,json,md,mjs,ts,yaml,yml}": "prettier --write", "{packages/**/package.json,scripts/tasks/check-and-rewrite-package-json.js}": "node ./scripts/tasks/check-and-rewrite-package-json.js", "{LICENSE-CORE.md,**/LICENSE.md,yarn.lock,scripts/tasks/generate-license-files.js,scripts/shared/bundled-dependencies.js}": "node ./scripts/tasks/generate-license-files.js", - "*.{only,skip}": "eslint --cache --no-eslintrc --plugin '@lwc/eslint-plugin-lwc-internal' --rule '@lwc/lwc-internal/forbidden-filename: error'" + "*.{only,skip}": "eslint --cache --plugin '@lwc/eslint-plugin-lwc-internal' --rule '@lwc/lwc-internal/forbidden-filename: error'" }, "workspaces": [ "packages/@lwc/*", diff --git a/packages/@lwc/aria-reflection/package.json b/packages/@lwc/aria-reflection/package.json index cdf23a688f..ca2d7d0748 100644 --- a/packages/@lwc/aria-reflection/package.json +++ b/packages/@lwc/aria-reflection/package.json @@ -4,7 +4,7 @@ "You can safely modify dependencies, devDependencies, keywords, etc., but other props will be overwritten." ], "name": "@lwc/aria-reflection", - "version": "8.14.0", + "version": "8.16.0", "description": "ARIA element reflection polyfill for strings", "keywords": [ "aom", diff --git a/packages/@lwc/babel-plugin-component/package.json b/packages/@lwc/babel-plugin-component/package.json index 9d9969ab78..1c97b6e8b8 100644 --- a/packages/@lwc/babel-plugin-component/package.json +++ b/packages/@lwc/babel-plugin-component/package.json @@ -4,7 +4,7 @@ "You can safely modify dependencies, devDependencies, keywords, etc., but other props will be overwritten." ], "name": "@lwc/babel-plugin-component", - "version": "8.14.0", + "version": "8.16.0", "description": "Babel plugin to transform a LWC module", "keywords": [ "lwc" @@ -47,8 +47,8 @@ }, "dependencies": { "@babel/helper-module-imports": "7.25.9", - "@lwc/errors": "8.14.0", - "@lwc/shared": "8.14.0", + "@lwc/errors": "8.16.0", + "@lwc/shared": "8.16.0", "line-column": "~1.0.2" }, "devDependencies": { diff --git a/packages/@lwc/compiler/package.json b/packages/@lwc/compiler/package.json index fcb8b4ab13..4f68f2c13a 100644 --- a/packages/@lwc/compiler/package.json +++ b/packages/@lwc/compiler/package.json @@ -4,7 +4,7 @@ "You can safely modify dependencies, devDependencies, keywords, etc., but other props will be overwritten." ], "name": "@lwc/compiler", - "version": "8.14.0", + "version": "8.16.0", "description": "LWC compiler", "keywords": [ "lwc" @@ -52,11 +52,11 @@ "@babel/plugin-transform-class-properties": "7.25.9", "@babel/plugin-transform-object-rest-spread": "7.25.9", "@locker/babel-plugin-transform-unforgeables": "0.22.0", - "@lwc/babel-plugin-component": "8.14.0", - "@lwc/errors": "8.14.0", - "@lwc/shared": "8.14.0", - "@lwc/ssr-compiler": "8.14.0", - "@lwc/style-compiler": "8.14.0", - "@lwc/template-compiler": "8.14.0" + "@lwc/babel-plugin-component": "8.16.0", + "@lwc/errors": "8.16.0", + "@lwc/shared": "8.16.0", + "@lwc/ssr-compiler": "8.16.0", + "@lwc/style-compiler": "8.16.0", + "@lwc/template-compiler": "8.16.0" } } diff --git a/packages/@lwc/engine-core/package.json b/packages/@lwc/engine-core/package.json index 7a32c9d277..29a0d4efe9 100644 --- a/packages/@lwc/engine-core/package.json +++ b/packages/@lwc/engine-core/package.json @@ -4,7 +4,7 @@ "You can safely modify dependencies, devDependencies, keywords, etc., but other props will be overwritten." ], "name": "@lwc/engine-core", - "version": "8.14.0", + "version": "8.16.0", "description": "Core LWC engine APIs.", "keywords": [ "lwc" @@ -46,9 +46,9 @@ } }, "dependencies": { - "@lwc/features": "8.14.0", - "@lwc/shared": "8.14.0", - "@lwc/signals": "8.14.0" + "@lwc/features": "8.16.0", + "@lwc/shared": "8.16.0", + "@lwc/signals": "8.16.0" }, "devDependencies": { "observable-membrane": "2.0.0" diff --git a/packages/@lwc/engine-core/src/framework/check-version-mismatch.ts b/packages/@lwc/engine-core/src/framework/check-version-mismatch.ts index 9b555336a2..e1bdf7733a 100644 --- a/packages/@lwc/engine-core/src/framework/check-version-mismatch.ts +++ b/packages/@lwc/engine-core/src/framework/check-version-mismatch.ts @@ -38,7 +38,7 @@ export function checkVersionMismatch( ) { const versionMatcher = func.toString().match(LWC_VERSION_COMMENT_REGEX); if (!isNull(versionMatcher) && !warned) { - if (process.env.SKIP_LWC_VERSION_MISMATCH_CHECK === 'true') { + if (typeof process === 'object' && process.env.SKIP_LWC_VERSION_MISMATCH_CHECK === 'true') { warned = true; // skip printing out version mismatch errors when env var is set return; } diff --git a/packages/@lwc/engine-core/src/framework/hydration.ts b/packages/@lwc/engine-core/src/framework/hydration.ts index 2eb6002c87..6c1a65c7d9 100644 --- a/packages/@lwc/engine-core/src/framework/hydration.ts +++ b/packages/@lwc/engine-core/src/framework/hydration.ts @@ -368,7 +368,12 @@ function hydrateElement(elm: Node, vnode: VElement, renderer: RendererAPI): Node patchElementPropsAndAttrsAndRefs(vnode, renderer); - if (!isDomManual) { + // When tags are initially encountered at the time of HTML parse, the tag is + // replaced with an empty + +
@@ -15,9 +17,8 @@