Skip to content

Commit a8248cf

Browse files
committed
Merge remote-tracking branch 'upstream/minor'
2 parents 6608bb3 + ee11f43 commit a8248cf

File tree

125 files changed

+4456
-2144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+4456
-2144
lines changed

.github/contributing.md

+21
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,27 @@ Hi! I'm really excited that you are interested in contributing to Vue.js. Before
1717

1818
## Pull Request Guidelines
1919

20+
### What kinds of Pull Requests are accepted?
21+
22+
- Bug fix that addresses a clearly identified bug. **"Clearly identified bug"** means the bug has a proper reproduction either from a related open issue, or is included in the PR itself. Avoid submitting PRs that claim to fix something but do not sufficiently explain what is being fixed.
23+
24+
- New feature that addresses a clearly explained and widely applicable use case. **"Widely applicable"** means the new feature should provide non-trivial improvements to the majority of the user base. Vue already has a large API surface so we are quite cautious about adding new features - if the use case is niche and can be addressed via userland implementations, it likely isn't suitable to go into core.
25+
26+
The feature implementation should also consider the trade-off between the added complexity vs. the benefits gained. For example, if a small feature requires significant changes that spreads across the codebase, it is likely not worth it, or the approach should be reconsidered.
27+
28+
If the feature has a non-trivial API surface addition, or significantly affects the way a common use case is approached by the users, it should go through a discussion first in the [RFC repo](https://github.com/vuejs/rfcs/discussions). PRs of such features without prior discussion make it really difficult to steer / adjust the API design due to coupling with concrete implementations, and can lead to wasted work.
29+
30+
- Chore: typos, comment improvements, build config, CI config, etc. For typos and comment changes, try to combine multiple of them into a single PR.
31+
32+
- **It should be noted that we discourage contributors from submitting code refactors that are largely stylistic.** Code refactors are only accepted if it improves performance, or comes with sufficient explanations on why it objectively improves the code quality (e.g. makes a related feature implementation easier).
33+
34+
The reason is that code readability is subjective. The maintainers of this project have chosen to write the code in its current style based on our preferences, and we do not want to spend time explaining our stylistic preferences. Contributors should just respect the established conventions when contributing code.
35+
36+
Another aspect of it is that large scale stylistic changes result in massive diffs that touch multiple files, adding noise to the git history and makes tracing behavior changes across commits more cumbersome.
37+
38+
39+
### Pull Request Checklist
40+
2041
- Vue core has two primary work branches: `main` and `minor`.
2142

2243
- If your pull request is a feature that adds new API surface, it should be submitted against the `minor` branch.

.github/renovate.json5

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
},
2929
{
3030
groupName: 'build',
31-
matchPackageNames: ['vite', 'terser'],
31+
matchPackageNames: ['vite', '@swc/core'],
3232
matchPackagePrefixes: ['rollup', 'esbuild', '@rollup', '@vitejs'],
3333
},
3434
{

.github/workflows/autofix.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: autofix.ci
2+
3+
on:
4+
pull_request:
5+
permissions:
6+
contents: read
7+
8+
jobs:
9+
autofix:
10+
runs-on: ubuntu-latest
11+
env:
12+
PUPPETEER_SKIP_DOWNLOAD: 'true'
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Install pnpm
17+
uses: pnpm/[email protected]
18+
19+
- name: Install Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version-file: '.node-version'
23+
registry-url: 'https://registry.npmjs.org'
24+
cache: 'pnpm'
25+
26+
- run: pnpm install
27+
28+
- name: Run eslint
29+
run: pnpm run lint --fix
30+
31+
- name: Run prettier
32+
run: pnpm run format
33+
34+
- uses: autofix-ci/action@2891949f3779a1cafafae1523058501de3d4e944

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888

8989
- run: pnpm install
9090

91-
- run: pnpm release --vapor --skip-tests --tag ${{ github.ref == 'refs/heads/main' && 'latest' || 'branch' }}
91+
- run: pnpm release --vapor --skipTests --tag ${{ github.ref == 'refs/heads/main' && 'latest' || 'branch' }}
9292
env:
9393
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
9494
NPM_CONFIG_PROVENANCE: 'true'

.github/workflows/size-data.yml

+10
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,13 @@ jobs:
5252
with:
5353
name: size-data
5454
path: temp/size
55+
56+
- name: Save PR number
57+
if: ${{github.event_name == 'pull_request'}}
58+
run: echo ${{ github.event.number }} > ./pr.txt
59+
60+
- uses: actions/upload-artifact@v4
61+
if: ${{github.event_name == 'pull_request'}}
62+
with:
63+
name: pr-number
64+
path: pr.txt

.github/workflows/size-report.yml

+17-3
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,28 @@ jobs:
3535
- name: Install dependencies
3636
run: pnpm install
3737

38+
- name: Download PR number
39+
uses: dawidd6/action-download-artifact@v6
40+
with:
41+
name: pr-number
42+
run_id: ${{ github.event.workflow_run.id }}
43+
path: /tmp/pr-number
44+
45+
- name: Read PR Number
46+
id: pr-number
47+
uses: juliangruber/read-file-action@v1
48+
with:
49+
path: /tmp/pr-number/pr.txt
50+
3851
- name: Download Size Data
39-
uses: dawidd6/action-download-artifact@v4
52+
uses: dawidd6/action-download-artifact@v6
4053
with:
4154
name: size-data
4255
run_id: ${{ github.event.workflow_run.id }}
4356
path: temp/size
4457

4558
- name: Download Previous Size Data
46-
uses: dawidd6/action-download-artifact@v4
59+
uses: dawidd6/action-download-artifact@v6
4760
with:
4861
branch: main
4962
workflow: size-data.yml
@@ -52,7 +65,7 @@ jobs:
5265
path: temp/size-prev
5366
if_no_artifact_found: warn
5467

55-
- name: Compare size
68+
- name: Prepare report
5669
run: pnpm tsx scripts/size-report.ts > size-report.md
5770

5871
- name: Read Size Report
@@ -65,6 +78,7 @@ jobs:
6578
uses: actions-cool/maintain-one-comment@v3
6679
with:
6780
token: ${{ secrets.GITHUB_TOKEN }}
81+
number: ${{ steps.pr-number.outputs.content }}
6882
body: |
6983
${{ steps.size-report.outputs.content }}
7084
<!-- VUE_CORE_SIZE -->

CHANGELOG.md

+81
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,86 @@
1+
# [3.5.0-alpha.3](https://github.com/vuejs/core/compare/v3.4.33...v3.5.0-alpha.3) (2024-07-19)
2+
3+
4+
### Bug Fixes
5+
6+
* **build:** enable SSR branches in esm-browser builds ([b14cd9a](https://github.com/vuejs/core/commit/b14cd9a68bab082332b0169be075be357be076ca))
7+
* **compiler-core:** change node hoisting to caching per instance ([#11067](https://github.com/vuejs/core/issues/11067)) ([cd0ea0d](https://github.com/vuejs/core/commit/cd0ea0d479a276583fa181d8ecbc97fb0e4a9dce)), closes [#5256](https://github.com/vuejs/core/issues/5256) [#9219](https://github.com/vuejs/core/issues/9219) [#10959](https://github.com/vuejs/core/issues/10959)
8+
* **compiler-sfc:** should properly walk desutructured props when reactive destructure is not enabled ([0fd6193](https://github.com/vuejs/core/commit/0fd6193def2380916eb51a118f37f2d9ec2ace23)), closes [#11325](https://github.com/vuejs/core/issues/11325)
9+
* **types:** respect props with default on instance type when using __typeProps ([96e4738](https://github.com/vuejs/core/commit/96e473833422342c5ca371ae1aeb186dec9a55e3))
10+
11+
12+
### Features
13+
14+
* **runtime-core:** useTemplateRef() ([3ba70e4](https://github.com/vuejs/core/commit/3ba70e49b5856c53611c314d4855d679a546a7df))
15+
* **runtime-core:** useId() and app.config.idPrefix ([#11404](https://github.com/vuejs/core/issues/11404)) ([73ef156](https://github.com/vuejs/core/commit/73ef1561f6905d69f968c094d0180c61824f1247))
16+
* **runtime-core:** add app.config.throwUnhandledErrorInProduction ([f476b7f](https://github.com/vuejs/core/commit/f476b7f030f2dd427ca655fcea36f4933a4b4da0)), closes [#7876](https://github.com/vuejs/core/issues/7876)
17+
* **teleport:** support deferred Teleport ([#11387](https://github.com/vuejs/core/issues/11387)) ([59a3e88](https://github.com/vuejs/core/commit/59a3e88903b10ac2278170a44d5a03f24fef23ef)), closes [#2015](https://github.com/vuejs/core/issues/2015) [#11386](https://github.com/vuejs/core/issues/11386)
18+
* **compiler-core:** support `Symbol` global in template expressions ([#9069](https://github.com/vuejs/core/issues/9069)) ([a501a85](https://github.com/vuejs/core/commit/a501a85a7c910868e01a5c70a2abea4e9d9e87f3))
19+
* **types:** export more emit related types ([#11017](https://github.com/vuejs/core/issues/11017)) ([189573d](https://github.com/vuejs/core/commit/189573dcee2a16bd3ed36ff5589d43f535e5e733))
20+
21+
22+
23+
## [3.4.33](https://github.com/vuejs/core/compare/v3.4.32...v3.4.33) (2024-07-19)
24+
25+
26+
### Bug Fixes
27+
28+
* **runtime-dom:** handle undefined values in v-html ([#11403](https://github.com/vuejs/core/issues/11403)) ([5df67e3](https://github.com/vuejs/core/commit/5df67e36756639ea7b923d1b139d6cb14450123b))
29+
30+
31+
32+
## [3.4.32](https://github.com/vuejs/core/compare/v3.4.31...v3.4.32) (2024-07-17)
33+
34+
35+
### Bug Fixes
36+
37+
* **build:** use consistent minify options from previous terser config ([789675f](https://github.com/vuejs/core/commit/789675f65d2b72cf979ba6a29bd323f716154a4b))
38+
* **compiler-sfc:** correctly resolve type annotation for declared function ([#11279](https://github.com/vuejs/core/issues/11279)) ([b287aee](https://github.com/vuejs/core/commit/b287aeec3ea85f20e4b1fc3d907c901bdc2a0176)), closes [#11266](https://github.com/vuejs/core/issues/11266)
39+
* **defineModel:** force local update when setter results in same emitted value ([de174e1](https://github.com/vuejs/core/commit/de174e1aa756508c7542605a448e55a373afb1ed)), closes [#10279](https://github.com/vuejs/core/issues/10279) [#10301](https://github.com/vuejs/core/issues/10301)
40+
* **hmr:** hmr reload should work with async component ([#11248](https://github.com/vuejs/core/issues/11248)) ([c8b9794](https://github.com/vuejs/core/commit/c8b97945759e869c997d60c3350d2451c5ff7887))
41+
* **hydration:** fix tracking of reactive style objects in production ([c10e40a](https://github.com/vuejs/core/commit/c10e40a217b89ab7e0f7f3515242d4246ecffbdd)), closes [#11372](https://github.com/vuejs/core/issues/11372)
42+
* **hydration:** handle consectuvie text nodes during hydration ([f44c3b3](https://github.com/vuejs/core/commit/f44c3b37d446d5f8e34539029dae0d806b25bb47)), closes [#7285](https://github.com/vuejs/core/issues/7285) [#7301](https://github.com/vuejs/core/issues/7301)
43+
* **reactivity:** ensure `unref` correctly resolves type for `ShallowRef` ([#11360](https://github.com/vuejs/core/issues/11360)) ([a509e30](https://github.com/vuejs/core/commit/a509e30f059fcdd158f39fdf34670b1019eaf2d1)), closes [#11356](https://github.com/vuejs/core/issues/11356)
44+
* **reactivity:** shallowReactive map "unwraps" the nested refs ([#8503](https://github.com/vuejs/core/issues/8503)) ([50ddafe](https://github.com/vuejs/core/commit/50ddafe91b9195cf94124466239f82c9794699fb)), closes [#8501](https://github.com/vuejs/core/issues/8501) [#11249](https://github.com/vuejs/core/issues/11249)
45+
* **runtime-core:** avoid recursive warning ([3ee7b4c](https://github.com/vuejs/core/commit/3ee7b4c7b1374c5bdc50a579b49f6bc15022b085)), closes [#8074](https://github.com/vuejs/core/issues/8074)
46+
* **runtime-core:** bail manually rendered compiler slot fragments in all cases ([3d34f40](https://github.com/vuejs/core/commit/3d34f406ac7497dafd2f4e62ab23579b78a0e08a)), closes [#10870](https://github.com/vuejs/core/issues/10870)
47+
* **runtime-core:** do not emit when defineModel ref is set with same value ([#11162](https://github.com/vuejs/core/issues/11162)) ([f1bb0ae](https://github.com/vuejs/core/commit/f1bb0aef084b5cdd4d49aecfed01ec106d9b6897)), closes [#11125](https://github.com/vuejs/core/issues/11125)
48+
* **runtime-core:** errors during component patch should be caught by error handlers ([ee0248a](https://github.com/vuejs/core/commit/ee0248accff589a94688e177e5e3af10c18288cb))
49+
* **runtime-core:** force diff slot fallback content and provided content ([d76dd9c](https://github.com/vuejs/core/commit/d76dd9c58de24b273bc55af3a8ed81ba693e9683)), closes [#7256](https://github.com/vuejs/core/issues/7256) [#9200](https://github.com/vuejs/core/issues/9200) [#9308](https://github.com/vuejs/core/issues/9308) [#7266](https://github.com/vuejs/core/issues/7266) [#9213](https://github.com/vuejs/core/issues/9213)
50+
* **runtime-core:** more edge case fix for manually rendered compiled slot ([685e3f3](https://github.com/vuejs/core/commit/685e3f381c024b9f4023e60fe0545dc60d90d984)), closes [#11336](https://github.com/vuejs/core/issues/11336)
51+
* **runtime-core:** use separate prop caches for components and mixins ([#11350](https://github.com/vuejs/core/issues/11350)) ([b0aa234](https://github.com/vuejs/core/commit/b0aa234e5e7a611c018de68bc31e0cf55518d5ce)), closes [#7998](https://github.com/vuejs/core/issues/7998)
52+
* **runtime-dom:** properly handle innerHTML unmount into new children ([#11159](https://github.com/vuejs/core/issues/11159)) ([3e9e32e](https://github.com/vuejs/core/commit/3e9e32ee0a6d0fbf67e9098a66ff0a1ea6647806)), closes [#9135](https://github.com/vuejs/core/issues/9135)
53+
* **teleport:** skip teleported nodes when locating patch anchor ([8655ced](https://github.com/vuejs/core/commit/8655ced480ea0fe453ff5fe445cecf97b91ec260)), closes [#9071](https://github.com/vuejs/core/issues/9071) [#9134](https://github.com/vuejs/core/issues/9134) [#9313](https://github.com/vuejs/core/issues/9313) [#9313](https://github.com/vuejs/core/issues/9313)
54+
* **v-model:** component v-model modifiers trim and number when cases don't match ([#9609](https://github.com/vuejs/core/issues/9609)) ([7fb6eb8](https://github.com/vuejs/core/commit/7fb6eb882b64bf99a99d00606e54b0e050674206)), closes [#4848](https://github.com/vuejs/core/issues/4848) [#4850](https://github.com/vuejs/core/issues/4850) [#4850](https://github.com/vuejs/core/issues/4850)
55+
* **v-once:** properly unmount v-once cached trees ([d343a0d](https://github.com/vuejs/core/commit/d343a0dc01663f91db42b4ddb693e6fffcb45873)), closes [#5154](https://github.com/vuejs/core/issues/5154) [#8809](https://github.com/vuejs/core/issues/8809)
56+
57+
58+
### Performance Improvements
59+
60+
* **server-renderer:** avoid unnecessary checks in `createBuffer` ([#11364](https://github.com/vuejs/core/issues/11364)) ([fc205bf](https://github.com/vuejs/core/commit/fc205bf4decde5ce0f4a61394ffa3914b502c287))
61+
* **server-renderer:** optimize `unrollBuffer` by avoiding promises ([#11340](https://github.com/vuejs/core/issues/11340)) ([05779a7](https://github.com/vuejs/core/commit/05779a70bd0b567ae458a07636d229bd07c44c4e))
62+
63+
64+
65+
## [3.4.31](https://github.com/vuejs/core/compare/v3.4.30...v3.4.31) (2024-06-28)
66+
67+
68+
### Bug Fixes
69+
70+
* **compiler-core:** handle inline comments with undefined bindings ([#11217](https://github.com/vuejs/core/issues/11217)) ([746352a](https://github.com/vuejs/core/commit/746352a14d62e9d3d9a38c359d2c54d418c1e0ac)), closes [#11216](https://github.com/vuejs/core/issues/11216)
71+
* **shared:** unwrap refs in toDisplayString ([#7306](https://github.com/vuejs/core/issues/7306)) ([0126cff](https://github.com/vuejs/core/commit/0126cfff9d93bcec70e5745519f6378e3cd3f39c)), closes [#5578](https://github.com/vuejs/core/issues/5578) [#5593](https://github.com/vuejs/core/issues/5593) [#11199](https://github.com/vuejs/core/issues/11199) [#11201](https://github.com/vuejs/core/issues/11201)
72+
73+
74+
### Reverts
75+
76+
* Revert "fix(reactivity): avoid infinite loop when render access a side effect computed ([#11135](https://github.com/vuejs/core/issues/11135))" ([e0df985](https://github.com/vuejs/core/commit/e0df985f0317fb65c5b461bf224375c7763f0269))
77+
* Revert "fix(reactivity): fix side effect computed dirty level (#11183)" ([6c303ea](https://github.com/vuejs/core/commit/6c303eacd14b7b0de0accc228f6abeb43d706f63)), closes [#11183](https://github.com/vuejs/core/issues/11183)
78+
79+
80+
181
## [3.4.30](https://github.com/vuejs/core/compare/v3.4.29...v3.4.30) (2024-06-22)
282

83+
**Note: this release contains a fix (#11150) that requires `vue-tsc` to also be updated in sync to ^2.0.22. See #11196**
384

485
### Bug Fixes
586

package.json

+17-22
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"version": "3.0.0-vapor",
4-
"packageManager": "pnpm@9.3.0",
4+
"packageManager": "pnpm@9.5.0",
55
"type": "module",
66
"scripts": {
77
"dev": "node scripts/dev.js vue vue-vapor",
@@ -59,59 +59,54 @@
5959
"node": ">=18.12.0"
6060
},
6161
"devDependencies": {
62-
"@babel/parser": "^7.24.7",
63-
"@babel/types": "^7.24.7",
64-
"@codspeed/vitest-plugin": "^3.1.0",
62+
"@babel/parser": "catalog:",
63+
"@babel/types": "catalog:",
6564
"@rollup/plugin-alias": "^5.1.0",
66-
"@rollup/plugin-commonjs": "^25.0.8",
65+
"@rollup/plugin-commonjs": "^26.0.1",
6766
"@rollup/plugin-json": "^6.1.0",
6867
"@rollup/plugin-node-resolve": "^15.2.3",
6968
"@rollup/plugin-replace": "5.0.4",
70-
"@swc/core": "^1.6.1",
69+
"@swc/core": "^1.6.13",
7170
"@types/hash-sum": "^1.0.2",
72-
"@types/minimist": "^1.2.5",
73-
"@types/node": "^20.14.2",
71+
"@types/node": "^20.14.10",
7472
"@types/semver": "^7.5.8",
7573
"@vitest/coverage-istanbul": "^1.6.0",
7674
"@vitest/ui": "^1.6.0",
7775
"@vue/consolidate": "1.0.0",
7876
"conventional-changelog-cli": "^4.1.0",
7977
"enquirer": "^2.4.1",
80-
"esbuild": "^0.21.5",
78+
"esbuild": "^0.23.0",
8179
"esbuild-plugin-polyfill-node": "^0.3.0",
82-
"eslint": "^9.5.0",
83-
"eslint-plugin-import-x": "^0.5.1",
80+
"eslint": "^9.6.0",
81+
"eslint-plugin-import-x": "^0.5.3",
8482
"eslint-plugin-vitest": "^0.5.4",
85-
"estree-walker": "^2.0.2",
86-
"execa": "^9.2.0",
83+
"estree-walker": "catalog:",
8784
"jsdom": "^24.1.0",
8885
"lint-staged": "^15.2.7",
8986
"lodash": "^4.17.21",
9087
"magic-string": "^0.30.10",
9188
"markdown-table": "^3.0.3",
9289
"marked": "^12.0.2",
93-
"minimist": "^1.2.8",
94-
"npm-run-all2": "^6.2.0",
90+
"npm-run-all2": "^6.2.2",
9591
"picocolors": "^1.0.1",
9692
"prettier": "^3.3.2",
9793
"pretty-bytes": "^6.1.1",
9894
"pug": "^3.0.3",
99-
"puppeteer": "~22.11.0",
100-
"rimraf": "^5.0.7",
101-
"rollup": "^4.18.0",
95+
"puppeteer": "~22.12.1",
96+
"rimraf": "^5.0.9",
97+
"rollup": "^4.18.1",
10298
"rollup-plugin-dts": "^6.1.1",
10399
"rollup-plugin-esbuild": "^6.1.1",
104100
"rollup-plugin-polyfill-node": "^0.13.0",
105101
"semver": "^7.6.2",
106102
"serve": "^14.2.3",
107103
"simple-git-hooks": "^2.11.1",
108-
"terser": "^5.31.1",
109104
"todomvc-app-css": "^2.4.3",
110105
"tslib": "^2.6.3",
111-
"tsx": "^4.15.5",
106+
"tsx": "^4.16.2",
112107
"typescript": "~5.4.5",
113-
"typescript-eslint": "^7.13.0",
114-
"vite": "^5.3.1",
108+
"typescript-eslint": "^7.15.0",
109+
"vite": "catalog:",
115110
"vitest": "^1.6.0"
116111
},
117112
"pnpm": {

packages/compiler-core/__tests__/__snapshots__/codegen.spec.ts.snap

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export function render(_ctx, _cache) {
1919
}"
2020
`;
2121

22-
exports[`compiler: codegen > CacheExpression w/ isVNode: true 1`] = `
22+
exports[`compiler: codegen > CacheExpression w/ isVOnce: true 1`] = `
2323
"
2424
export function render(_ctx, _cache) {
2525
return _cache[1] || (
2626
_setBlockTracking(-1),
27-
_cache[1] = foo,
27+
(_cache[1] = foo).cacheIndex = 1,
2828
_setBlockTracking(1),
2929
_cache[1]
3030
)
@@ -54,7 +54,7 @@ return function render(_ctx, _cache) {
5454
[foo + bar]: bar
5555
}, [
5656
_createElementVNode("p", { "some-key": "foo" })
57-
], 16)
57+
], 16 /* FULL_PROPS */)
5858
}
5959
}"
6060
`;
@@ -98,7 +98,7 @@ exports[`compiler: codegen > forNode 1`] = `
9898
"
9999
return function render(_ctx, _cache) {
100100
with (_ctx) {
101-
return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(), 1))
101+
return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(), 1 /* TEXT */))
102102
}
103103
}"
104104
`;

0 commit comments

Comments
 (0)