Skip to content

Commit 76eea20

Browse files
committed
Merge branch 'main' into feat/vfor
2 parents d3d79c0 + 243f504 commit 76eea20

File tree

100 files changed

+1501
-679
lines changed

Some content is hidden

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

100 files changed

+1501
-679
lines changed

.github/workflows/autofix.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ jobs:
3030
- name: Run prettier
3131
run: pnpm run format
3232

33-
- uses: autofix-ci/action@d3e591514b99d0fca6779455ff8338516663f7cc
33+
- uses: autofix-ci/action@bee19d72e71787c12ca0f29de72f2833e437e4c9

.github/workflows/ecosystem-ci-trigger.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
if: github.repository == 'vuejs/core' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/ecosystem-ci run')
1111
steps:
12-
- uses: actions/github-script@v6
12+
- uses: actions/github-script@v7
1313
with:
1414
script: |
1515
const user = context.payload.sender.login
@@ -43,7 +43,7 @@ jobs:
4343
})
4444
throw new Error('not allowed')
4545
}
46-
- uses: actions/github-script@v6
46+
- uses: actions/github-script@v7
4747
id: get-pr-data
4848
with:
4949
script: |
@@ -58,7 +58,7 @@ jobs:
5858
branchName: pr.head.ref,
5959
repo: pr.head.repo.full_name
6060
}
61-
- uses: actions/github-script@v6
61+
- uses: actions/github-script@v7
6262
id: trigger
6363
env:
6464
COMMENT: ${{ github.event.comment.body }}

.github/workflows/lock-closed-issues.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
if: github.repository == 'vuejs/core'
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: dessant/lock-threads@v4
15+
- uses: dessant/lock-threads@v5
1616
with:
1717
github-token: ${{ secrets.GITHUB_TOKEN }}
1818
issue-inactive-days: '14'

CHANGELOG.md

+65-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,67 @@
1+
## [3.3.10](https://github.com/vuejs/core/compare/v3.3.9...v3.3.10) (2023-12-04)
2+
3+
4+
### Bug Fixes
5+
6+
* **app:** prevent template from being cached between apps with different options ([#9724](https://github.com/vuejs/core/issues/9724)) ([ec71585](https://github.com/vuejs/core/commit/ec715854ca12520b2afc9e9b3981cbae05ae5206)), closes [#9618](https://github.com/vuejs/core/issues/9618)
7+
* **compiler-sfc:** avoid passing forEach index to genMap ([f12db7f](https://github.com/vuejs/core/commit/f12db7fb564a534cef2e5805cc9f54afe5d72fbf))
8+
* **compiler-sfc:** deindent pug/jade templates ([6345197](https://github.com/vuejs/core/commit/634519720a21fb5a6871454e1cadad7053a568b8)), closes [#3231](https://github.com/vuejs/core/issues/3231) [#3842](https://github.com/vuejs/core/issues/3842) [#7723](https://github.com/vuejs/core/issues/7723)
9+
* **compiler-sfc:** fix :where and :is selector in scoped mode with multiple selectors ([#9735](https://github.com/vuejs/core/issues/9735)) ([c3e2c55](https://github.com/vuejs/core/commit/c3e2c556b532656b50b8ab5cd2d9eabc26622d63)), closes [#9707](https://github.com/vuejs/core/issues/9707)
10+
* **compiler-sfc:** generate more treeshaking friendly code ([#9507](https://github.com/vuejs/core/issues/9507)) ([8d74ca0](https://github.com/vuejs/core/commit/8d74ca0e6fa2738ca6854b7e879ff59419f948c7)), closes [#9500](https://github.com/vuejs/core/issues/9500)
11+
* **compiler-sfc:** support inferring generic types ([#8511](https://github.com/vuejs/core/issues/8511)) ([eb5e307](https://github.com/vuejs/core/commit/eb5e307c0be62002e62c4c800d0dfacb39b0d4ca)), closes [#8482](https://github.com/vuejs/core/issues/8482)
12+
* **compiler-sfc:** support resolving components from props ([#8785](https://github.com/vuejs/core/issues/8785)) ([7cbcee3](https://github.com/vuejs/core/commit/7cbcee3d831241a8bd3588ae92d3f27e3641e25f))
13+
* **compiler-sfc:** throw error when failing to load TS during type resolution ([#8883](https://github.com/vuejs/core/issues/8883)) ([4936d2e](https://github.com/vuejs/core/commit/4936d2e11a8d0ca3704bfe408548cb26bb3fd5e9))
14+
* **cssVars:** cssVar names should be double-escaped when generating code for ssr ([#8824](https://github.com/vuejs/core/issues/8824)) ([5199a12](https://github.com/vuejs/core/commit/5199a12f8855cd06f24bf355708b5a2134f63176)), closes [#7823](https://github.com/vuejs/core/issues/7823)
15+
* **deps:** update compiler to ^7.23.4 ([#9681](https://github.com/vuejs/core/issues/9681)) ([31f6ebc](https://github.com/vuejs/core/commit/31f6ebc4df84490ed29fb75e7bf4259200eb51f0))
16+
* **runtime-core:** Suspense get anchor properly in Transition ([#9309](https://github.com/vuejs/core/issues/9309)) ([65f3fe2](https://github.com/vuejs/core/commit/65f3fe273127a8b68e1222fbb306d28d85f01757)), closes [#8105](https://github.com/vuejs/core/issues/8105)
17+
* **runtime-dom:** set width/height with units as attribute ([#8781](https://github.com/vuejs/core/issues/8781)) ([bfc1838](https://github.com/vuejs/core/commit/bfc1838f31199de3f189198a3c234fa7bae91386))
18+
* **ssr:** avoid computed being accidentally cached before server render ([#9688](https://github.com/vuejs/core/issues/9688)) ([30d5d93](https://github.com/vuejs/core/commit/30d5d93a92b2154406ec04f8aca6b217fa01177c)), closes [#5300](https://github.com/vuejs/core/issues/5300)
19+
* **types:** expose emits as props in functional components ([#9234](https://github.com/vuejs/core/issues/9234)) ([887e54c](https://github.com/vuejs/core/commit/887e54c347ea9eac4c721b5e2288f054873d1d30))
20+
* **types:** fix reactive collection types ([#8960](https://github.com/vuejs/core/issues/8960)) ([ad27473](https://github.com/vuejs/core/commit/ad274737015c36906d76f3189203093fa3a2e4e7)), closes [#8904](https://github.com/vuejs/core/issues/8904)
21+
* **types:** improve return type withKeys and withModifiers ([#9734](https://github.com/vuejs/core/issues/9734)) ([43c3cfd](https://github.com/vuejs/core/commit/43c3cfdec5ae5d70fa2a21e857abc2d73f1a0d07))
22+
23+
24+
### Performance Improvements
25+
26+
* optimize on* prop check ([38aaa8c](https://github.com/vuejs/core/commit/38aaa8c88648c54fe2616ad9c0961288092fcb44))
27+
* **runtime-dom:** cache modifier wrapper functions ([da4a4fb](https://github.com/vuejs/core/commit/da4a4fb5e8eee3c6d31f24ebd79a9d0feca56cb2)), closes [#8882](https://github.com/vuejs/core/issues/8882)
28+
* **v-on:** constant handlers with modifiers should not be treated as dynamic ([4d94ebf](https://github.com/vuejs/core/commit/4d94ebfe75174b340d2b794e699cad1add3600a9))
29+
30+
31+
32+
## [3.3.9](https://github.com/vuejs/core/compare/v3.3.8...v3.3.9) (2023-11-25)
33+
34+
35+
### Bug Fixes
36+
37+
* **compiler-core:** avoid rewriting scope variables in inline for loops ([#7245](https://github.com/vuejs/core/issues/7245)) ([a2d810e](https://github.com/vuejs/core/commit/a2d810eb40cef631f61991ca68b426ee9546aba0)), closes [#7238](https://github.com/vuejs/core/issues/7238)
38+
* **compiler-core:** fix `resolveParserPlugins` decorators check ([#9566](https://github.com/vuejs/core/issues/9566)) ([9d0eba9](https://github.com/vuejs/core/commit/9d0eba916f3bf6fb5c03222400edae1a2db7444f)), closes [#9560](https://github.com/vuejs/core/issues/9560)
39+
* **compiler-sfc:** consistently escape type-only prop names ([#8654](https://github.com/vuejs/core/issues/8654)) ([3e08d24](https://github.com/vuejs/core/commit/3e08d246dfd8523c54fb8e7a4a6fd5506ffb1bcc)), closes [#8635](https://github.com/vuejs/core/issues/8635) [#8910](https://github.com/vuejs/core/issues/8910) [vitejs/vite-plugin-vue#184](https://github.com/vitejs/vite-plugin-vue/issues/184)
40+
* **compiler-sfc:** malformed filename on windows using path.posix.join() ([#9478](https://github.com/vuejs/core/issues/9478)) ([f18a174](https://github.com/vuejs/core/commit/f18a174979626b3429db93c5d5b7ae5448917c70)), closes [#8671](https://github.com/vuejs/core/issues/8671) [#9583](https://github.com/vuejs/core/issues/9583) [#9446](https://github.com/vuejs/core/issues/9446) [#9473](https://github.com/vuejs/core/issues/9473)
41+
* **compiler-sfc:** support `:is` and `:where` selector in scoped css rewrite ([#8929](https://github.com/vuejs/core/issues/8929)) ([3227e50](https://github.com/vuejs/core/commit/3227e50b32105f8893f7dff2f29278c5b3a9f621))
42+
* **compiler-sfc:** support resolve extends interface for defineEmits ([#8470](https://github.com/vuejs/core/issues/8470)) ([9e1b74b](https://github.com/vuejs/core/commit/9e1b74bcd5fa4151f5d1bc02c69fbbfa4762f577)), closes [#8465](https://github.com/vuejs/core/issues/8465)
43+
* **hmr/transition:** fix kept-alive component inside transition disappearing after hmr ([#7126](https://github.com/vuejs/core/issues/7126)) ([d11e978](https://github.com/vuejs/core/commit/d11e978fc98dcc83526c167e603b8308f317f786)), closes [#7121](https://github.com/vuejs/core/issues/7121)
44+
* **hydration:** force hydration for v-bind with .prop modifier ([364f319](https://github.com/vuejs/core/commit/364f319d214226770d97c98d8fcada80c9e8dde3)), closes [#7490](https://github.com/vuejs/core/issues/7490)
45+
* **hydration:** properly hydrate indeterminate prop ([34b5a5d](https://github.com/vuejs/core/commit/34b5a5da4ae9c9faccac237acd7acc8e7e017571)), closes [#7476](https://github.com/vuejs/core/issues/7476)
46+
* **reactivity:** clear method on readonly collections should return undefined ([#7316](https://github.com/vuejs/core/issues/7316)) ([657476d](https://github.com/vuejs/core/commit/657476dcdb964be4fbb1277c215c073f3275728e))
47+
* **reactivity:** onCleanup also needs to be cleaned ([#8655](https://github.com/vuejs/core/issues/8655)) ([73fd810](https://github.com/vuejs/core/commit/73fd810eebdd383a2b4629f67736c4db1f428abd)), closes [#5151](https://github.com/vuejs/core/issues/5151) [#7695](https://github.com/vuejs/core/issues/7695)
48+
* **ssr:** hydration `__vnode` missing for devtools ([#9328](https://github.com/vuejs/core/issues/9328)) ([5156ac5](https://github.com/vuejs/core/commit/5156ac5b38cfa80d3db26f2c9bf40cb22a7521cb))
49+
* **types:** allow falsy value types in `StyleValue` ([#7954](https://github.com/vuejs/core/issues/7954)) ([17aa92b](https://github.com/vuejs/core/commit/17aa92b79b31d8bb8b5873ddc599420cb9806db8)), closes [#7955](https://github.com/vuejs/core/issues/7955)
50+
* **types:** defineCustomElement using defineComponent return type with emits ([#7937](https://github.com/vuejs/core/issues/7937)) ([5d932a8](https://github.com/vuejs/core/commit/5d932a8e6d14343c9d7fc7c2ecb58ac618b2f938)), closes [#7782](https://github.com/vuejs/core/issues/7782)
51+
* **types:** fix `unref` and `toValue` when input union type contains ComputedRef ([#8748](https://github.com/vuejs/core/issues/8748)) ([176d476](https://github.com/vuejs/core/commit/176d47671271b1abc21b1508e9a493c7efca6451)), closes [#8747](https://github.com/vuejs/core/issues/8747) [#8857](https://github.com/vuejs/core/issues/8857)
52+
* **types:** fix instance type when props type is incompatible with setup returned type ([#7338](https://github.com/vuejs/core/issues/7338)) ([0e1e8f9](https://github.com/vuejs/core/commit/0e1e8f919e5a74cdaadf9c80ee135088b25e7fa3)), closes [#5885](https://github.com/vuejs/core/issues/5885)
53+
* **types:** fix shallowRef return type with union value type ([#7853](https://github.com/vuejs/core/issues/7853)) ([7c44800](https://github.com/vuejs/core/commit/7c448000b0def910c2cfabfdf7ff20a3d6bc844f)), closes [#7852](https://github.com/vuejs/core/issues/7852)
54+
* **types:** more precise types for class bindings ([#8012](https://github.com/vuejs/core/issues/8012)) ([46e3374](https://github.com/vuejs/core/commit/46e33744c890bd49482c5e5c5cdea44e00ec84d5))
55+
* **types:** remove optional properties from defineProps return type ([#6421](https://github.com/vuejs/core/issues/6421)) ([94c049d](https://github.com/vuejs/core/commit/94c049d930d922069e38ea8700d7ff0970f71e61)), closes [#6420](https://github.com/vuejs/core/issues/6420)
56+
* **types:** return type of withDefaults should be readonly ([#8601](https://github.com/vuejs/core/issues/8601)) ([f15debc](https://github.com/vuejs/core/commit/f15debc01acb22d23f5acee97e6f02db88cef11a))
57+
* **types:** revert class type restrictions ([5d077c8](https://github.com/vuejs/core/commit/5d077c8754cc14f85d2d6d386df70cf8c0d93842)), closes [#8012](https://github.com/vuejs/core/issues/8012)
58+
* **types:** update jsx type definitions ([#8607](https://github.com/vuejs/core/issues/8607)) ([58e2a94](https://github.com/vuejs/core/commit/58e2a94871ae06a909c5f8bad07fb401193e6a38))
59+
* **types:** widen ClassValue type ([2424013](https://github.com/vuejs/core/commit/242401305944422d0c361b16101a4d18908927af))
60+
* **v-model:** avoid overwriting number input with same value ([#7004](https://github.com/vuejs/core/issues/7004)) ([40f4b77](https://github.com/vuejs/core/commit/40f4b77bb570868cb6e47791078767797e465989)), closes [#7003](https://github.com/vuejs/core/issues/7003)
61+
* **v-model:** unnecessary value binding error should apply to dynamic instead of static binding ([2859b65](https://github.com/vuejs/core/commit/2859b653c9a22460e60233cac10fe139e359b046)), closes [#3596](https://github.com/vuejs/core/issues/3596)
62+
63+
64+
165
## [3.3.8](https://github.com/vuejs/core/compare/v3.3.7...v3.3.8) (2023-11-06)
266

367

@@ -8,7 +72,7 @@
872
* **compiler-sfc:** fix dynamic directive arguments usage check for slots ([#9495](https://github.com/vuejs/core/issues/9495)) ([b39fa1f](https://github.com/vuejs/core/commit/b39fa1f8157647859331ce439c42ae016a49b415)), closes [#9493](https://github.com/vuejs/core/issues/9493)
973
* **deps:** update dependency @vue/repl to ^2.6.2 ([#9536](https://github.com/vuejs/core/issues/9536)) ([5cef325](https://github.com/vuejs/core/commit/5cef325f41e3b38657c72fa1a38dedeee1c7a60a))
1074
* **deps:** update dependency @vue/repl to ^2.6.3 ([#9540](https://github.com/vuejs/core/issues/9540)) ([176d590](https://github.com/vuejs/core/commit/176d59058c9aecffe9da4d4311e98496684f06d4))
11-
* **hydration:** fix tagName access eeror on comment/text node hydration mismatch ([dd8a0cf](https://github.com/vuejs/core/commit/dd8a0cf5dcde13d2cbd899262a0e07f16e14e489)), closes [#9531](https://github.com/vuejs/core/issues/9531)
75+
* **hydration:** fix tagName access error on comment/text node hydration mismatch ([dd8a0cf](https://github.com/vuejs/core/commit/dd8a0cf5dcde13d2cbd899262a0e07f16e14e489)), closes [#9531](https://github.com/vuejs/core/issues/9531)
1276
* **types:** avoid exposing lru-cache types in generated dts ([462aeb3](https://github.com/vuejs/core/commit/462aeb3b600765e219ded2ee9a0ed1e74df61de0)), closes [#9521](https://github.com/vuejs/core/issues/9521)
1377
* **warn:** avoid warning on empty children with Suspense ([#3962](https://github.com/vuejs/core/issues/3962)) ([405f345](https://github.com/vuejs/core/commit/405f34587a63a5f1e3d147b9848219ea98acc22d))
1478

package.json

+14-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
3-
"version": "3.3.8",
4-
"packageManager": "pnpm@8.10.3",
3+
"version": "3.3.10",
4+
"packageManager": "pnpm@8.11.0",
55
"type": "module",
66
"scripts": {
77
"dev": "node scripts/dev.js",
@@ -32,9 +32,10 @@
3232
"dev-sfc-run": "run-p \"dev compiler-sfc -f esm-browser\" \"dev vue -if esm-bundler-runtime\" \"dev vue -ipf esm-browser-runtime\" \"dev server-renderer -if esm-bundler\" dev-sfc-serve",
3333
"serve": "serve",
3434
"open": "open http://localhost:3000/packages/template-explorer/local.html",
35-
"build-sfc-playground": "run-s build-all-cjs build-runtime-esm build-ssr-esm build-sfc-playground-self",
35+
"build-sfc-playground": "run-s build-all-cjs build-runtime-esm build-browser-esm build-ssr-esm build-sfc-playground-self",
3636
"build-all-cjs": "node scripts/build.js vue runtime compiler reactivity reactivity-transform shared -af cjs",
3737
"build-runtime-esm": "node scripts/build.js runtime reactivity shared -af esm-bundler && node scripts/build.js vue -f esm-bundler-runtime && node scripts/build.js vue -f esm-browser-runtime",
38+
"build-browser-esm": "node scripts/build.js runtime reactivity shared -af esm-bundler && node scripts/build.js vue -f esm-bundler && node scripts/build.js vue -f esm-browser",
3839
"build-ssr-esm": "node scripts/build.js compiler-sfc server-renderer -f esm-browser",
3940
"build-sfc-playground-self": "cd packages/sfc-playground && npm run build",
4041
"preinstall": "npx only-allow pnpm",
@@ -57,40 +58,40 @@
5758
"node": ">=18.12.0"
5859
},
5960
"devDependencies": {
60-
"@babel/parser": "^7.23.3",
61-
"@babel/types": "^7.23.3",
61+
"@babel/parser": "^7.23.5",
62+
"@babel/types": "^7.23.5",
6263
"@rollup/plugin-alias": "^5.0.1",
6364
"@rollup/plugin-commonjs": "^25.0.7",
6465
"@rollup/plugin-json": "^6.0.1",
6566
"@rollup/plugin-node-resolve": "^15.2.3",
6667
"@rollup/plugin-replace": "^5.0.4",
6768
"@rollup/plugin-terser": "^0.4.4",
6869
"@types/hash-sum": "^1.0.2",
69-
"@types/node": "^20.9.0",
70-
"@typescript-eslint/parser": "^6.10.0",
70+
"@types/node": "^20.10.3",
71+
"@typescript-eslint/parser": "^6.13.0",
7172
"@vitest/coverage-istanbul": "^0.34.6",
7273
"@vue/consolidate": "0.17.3",
7374
"conventional-changelog-cli": "^4.1.0",
7475
"enquirer": "^2.4.1",
7576
"esbuild": "^0.19.5",
7677
"esbuild-plugin-polyfill-node": "^0.3.0",
77-
"eslint": "^8.53.0",
78+
"eslint": "^8.54.0",
7879
"eslint-plugin-jest": "^27.6.0",
7980
"estree-walker": "^2.0.2",
8081
"execa": "^8.0.1",
8182
"jsdom": "^22.1.0",
82-
"lint-staged": "^15.0.2",
83+
"lint-staged": "^15.1.0",
8384
"lodash": "^4.17.21",
8485
"magic-string": "^0.30.5",
8586
"markdown-table": "^3.0.3",
8687
"marked": "^9.1.6",
8788
"minimist": "^1.2.8",
8889
"npm-run-all": "^4.1.5",
8990
"picocolors": "^1.0.0",
90-
"prettier": "^3.0.3",
91+
"prettier": "^3.1.0",
9192
"pretty-bytes": "^6.1.1",
9293
"pug": "^3.0.2",
93-
"puppeteer": "~21.5.1",
94+
"puppeteer": "~21.5.2",
9495
"rimraf": "^5.0.5",
9596
"rollup": "^4.1.4",
9697
"rollup-plugin-dts": "^6.1.0",
@@ -102,9 +103,9 @@
102103
"terser": "^5.22.0",
103104
"todomvc-app-css": "^2.4.3",
104105
"tslib": "^2.6.2",
105-
"tsx": "^3.14.0",
106+
"tsx": "^4.6.2",
106107
"typescript": "^5.2.2",
107-
"vite": "^4.5.0",
108+
"vite": "^5.0.0",
108109
"vitest": "^0.34.6"
109110
}
110111
}

packages/compiler-core/__tests__/transforms/transformElement.spec.ts

+36
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,28 @@ describe('compiler: element transform', () => {
152152
expect(node.tag).toBe(`Foo.Example`)
153153
})
154154

155+
test('resolve namespaced component from props bindings (inline)', () => {
156+
const { root, node } = parseWithElementTransform(`<Foo.Example/>`, {
157+
inline: true,
158+
bindingMetadata: {
159+
Foo: BindingTypes.PROPS
160+
}
161+
})
162+
expect(root.helpers).not.toContain(RESOLVE_COMPONENT)
163+
expect(node.tag).toBe(`_unref(__props["Foo"]).Example`)
164+
})
165+
166+
test('resolve namespaced component from props bindings (non-inline)', () => {
167+
const { root, node } = parseWithElementTransform(`<Foo.Example/>`, {
168+
inline: false,
169+
bindingMetadata: {
170+
Foo: BindingTypes.PROPS
171+
}
172+
})
173+
expect(root.helpers).not.toContain(RESOLVE_COMPONENT)
174+
expect(node.tag).toBe('_unref($props["Foo"]).Example')
175+
})
176+
155177
test('do not resolve component from non-script-setup bindings', () => {
156178
const bindingMetadata = {
157179
Example: BindingTypes.SETUP_MAYBE_REF
@@ -1138,6 +1160,20 @@ describe('compiler: element transform', () => {
11381160
genFlagText([PatchFlags.PROPS, PatchFlags.NEED_HYDRATION])
11391161
)
11401162
})
1163+
1164+
test('should not have PROPS patchflag for constant v-on handlers', () => {
1165+
const { node } = parseWithElementTransform(`<div @keydown="foo" />`, {
1166+
prefixIdentifiers: true,
1167+
bindingMetadata: {
1168+
foo: BindingTypes.SETUP_CONST
1169+
},
1170+
directiveTransforms: {
1171+
on: transformOn
1172+
}
1173+
})
1174+
// should only have hydration flag
1175+
expect(node.patchFlag).toBe(genFlagText(PatchFlags.NEED_HYDRATION))
1176+
})
11411177
})
11421178

11431179
describe('dynamic component', () => {

packages/compiler-core/__tests__/transforms/vFor.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -777,8 +777,8 @@ describe('compiler: v-for', () => {
777777
patchFlag: !disableTracking
778778
? genFlagText(PatchFlags.STABLE_FRAGMENT)
779779
: keyed
780-
? genFlagText(PatchFlags.KEYED_FRAGMENT)
781-
: genFlagText(PatchFlags.UNKEYED_FRAGMENT),
780+
? genFlagText(PatchFlags.KEYED_FRAGMENT)
781+
: genFlagText(PatchFlags.UNKEYED_FRAGMENT),
782782
children: {
783783
type: NodeTypes.JS_CALL_EXPRESSION,
784784
callee: RENDER_LIST,

packages/compiler-core/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@vue/compiler-core",
3-
"version": "3.3.8",
3+
"version": "3.3.10",
44
"description": "@vue/compiler-core",
55
"main": "index.js",
66
"module": "dist/compiler-core.esm-bundler.js",
@@ -32,12 +32,12 @@
3232
},
3333
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme",
3434
"dependencies": {
35-
"@babel/parser": "^7.23.3",
36-
"@vue/shared": "3.3.8",
35+
"@babel/parser": "^7.23.5",
36+
"@vue/shared": "workspace:*",
3737
"estree-walker": "^2.0.2",
3838
"source-map-js": "^1.0.2"
3939
},
4040
"devDependencies": {
41-
"@babel/types": "^7.23.3"
41+
"@babel/types": "^7.23.5"
4242
}
4343
}

0 commit comments

Comments
 (0)