Releases: vuejs/language-tools
v3.3.2
language-core
- feat: preserve literal types for inline
v-forsources (#6067) - Thanks to @kkesidis! - fix: align
v-bindshorthand identifier skipping with interpolation - Thanks to @KazariEX!
vscode
- feat: transform tsserver content (#6062) - Thanks to @KazariEX!
- fix: do not mark trailing slash in capitalized self-closing tags as invalid (#6065) - Thanks to @suisanka!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.1
language-core
language-service
- refactor: replace scanner-based missing props hints detection with AST traversal - Thanks to @KazariEX!
typescript-plugin
- fix: get component prop details from symbols - Thanks to @KazariEX!
- fix: skip unchecked JS identifiers in component props (#6055) - Thanks to @KazariEX!
vscode
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.0
Features
Refined Autocomplete for Component Props
Previously, we inferred props used for autocomplete from the component itself's type, which did not work well with components whose props need to be inferred dynamically, such as generics or discriminated unions.
Now, we have improved this feature to better align with TS behavior. See the following example:
<script lang="ts" setup>
defineProps<
| { type: "foo"; foo: string }
| { type: "bar"; bar: string }
>();
</script>
<template>
<Self type="foo" :| />
<!-- ^ [foo, ...] -->
<Self type="bar" :| />
<!-- ^ [bar, ...] -->
</template>When triggering completions at the two positions above, we will now get the props that are actually available in each corresponding case.
(PR: #5709)
Check Required Fallthrough Attributes
Consider the following structure:
<!-- basic.vue -->
<script lang="ts" setup>
defineProps<{
foo: string;
bar: string;
}>();
</script><!-- comp.vue -->
<script lang="ts" setup>
import Basic from "./basic.vue";
</script>
<template>
<Basic />
</template>When the fallthroughAttributes option is enabled on Comp, Comp inherits all props from Basic, allowing us to get prop completions for Basic when using Comp.
By default, however, the props inherited from Basic are all optional. This means we cannot enforce passing those required props when using Comp. At the same time, even if the required props from Basic are passed to Comp, Basic will still report missing prop errors.
After enabling the new checkRequiredFallthroughAttributes option on Comp, Comp will inherit Basic's props exactly as they are, and the missing prop errors on Basic inside Comp will disappear. This is because doing so is equivalent to promising that these required props should be passed when using Comp. Additionally, if some of the props required by Basic have already been passed directly to Basic, those props will be excluded from the inherited props.
(PR: #6049)
Bug Fixes
- In subprojects using project references, importing Vue files from another project will no longer trigger TS6307 errors (PR: #6048)
- When the
js/ts.tsserver.experimental.enableProjectDiagnosticsoption is enabled, Vue files in large projects will no longer trigger diagnostics in an infinite loop (PR: #6051)
Changelog
Please refer to CHANGELOG.md for details.
❤️ Thanks to Our Sponsors
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.9
language-core
- fix: do not process inline markdown syntax in semantic-aware segments (#6038) - Thanks to @KazariEX!
- perf: rewrite a subset of template node transforms (#5769) - Thanks to @KazariEX!
vscode
workspace
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.8
language-core
- fix: replace inline code blocks after sfc blocks processing (#6024) - Thanks to @KazariEX!
- fix: support navigation for kebab-case declarations in
GlobalComponents(#6026) - Thanks to @Gehbt!
language-service
typescript-plugin
vscode
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.7
component-meta
workspace
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.6
language-core
- fix: generate
$slotstype in template correctly withdefineSlots(#5984) - Thanks to @KazariEX! - fix: infer only readonly component of arrays in
v-for(#5987) - Thanks to @ascott18! - fix: avoid false positives for destructured props detection on binding property names (#5994) - Thanks to @KazariEX!
vscode
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.5
language-core
language-service
- fix: use default html data provider for document symbols (#5968) - Thanks to @liangmiQwQ!
language-plugin-pug
- fix: handle backtick attributes containing both quote types (#5970) - Thanks to @baptistejamin!
workspace
- docs: document all packages with consistent README structure (#5953)
- docs: update tsconfig schema of
pluginsoption - Thanks to @KazariEX!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.4
language-core
- feat: place plugin configs under
ctx.configand support type annotation via generics (#5944) - Thanks to @KazariEX!
workspace
- chore: publish to npm with OIDC (#5912) - Thanks to @ghiscoding!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.2.3
language-core
- feat: support configuration for language plugins (#5678) - Thanks to @KazariEX!
- fix: avoid
defineModelbreaking ast inlang="js"(#5935) - Thanks to @KazariEX! - fix: infer object keys as string if it does not extend string (#5933) - Thanks to @serkodev!
typescript-plugin
- feat: correct rename behavior on same name shorthands in template (#5907) - Thanks to @KazariEX!
- fix: only forward quick info for original results without tags (#5938) - Thanks to @KazariEX!
vscode
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development