Repository: vuejs/core Branch: main Commit: d61d8031f0d5 Files: 697 Total size: 5.1 MB Directory structure: gitextract_nx4x_z0x/ ├── .git-blame-ignore-revs ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── config.yml │ ├── bug-repro-guidelines.md │ ├── commit-convention.md │ ├── contributing.md │ ├── git-branch-workflow.excalidraw │ ├── maintenance.md │ ├── renovate.json5 │ └── workflows/ │ ├── autofix.yml │ ├── ci.yml │ ├── close-cant-reproduce-issues.yml │ ├── ecosystem-ci-trigger.yml │ ├── lock-closed-issues.yml │ ├── release.yml │ ├── size-data.yml │ ├── size-report.yml │ └── test.yml ├── .gitignore ├── .node-version ├── .prettierignore ├── .prettierrc ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── .well-known/ │ └── funding-manifest-urls ├── BACKERS.md ├── CHANGELOG.md ├── FUNDING.json ├── LICENSE ├── README.md ├── SECURITY.md ├── changelogs/ │ ├── CHANGELOG-3.0.md │ ├── CHANGELOG-3.1.md │ ├── CHANGELOG-3.2.md │ ├── CHANGELOG-3.3.md │ └── CHANGELOG-3.4.md ├── eslint.config.js ├── netlify.toml ├── package.json ├── packages/ │ ├── compiler-core/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── codegen.spec.ts.snap │ │ │ │ ├── compile.spec.ts.snap │ │ │ │ ├── parse.spec.ts.snap │ │ │ │ └── scopeId.spec.ts.snap │ │ │ ├── codegen.spec.ts │ │ │ ├── compile.spec.ts │ │ │ ├── parse.spec.ts │ │ │ ├── scopeId.spec.ts │ │ │ ├── testUtils.ts │ │ │ ├── transform.spec.ts │ │ │ ├── transforms/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── cacheStatic.spec.ts.snap │ │ │ │ │ ├── transformElement.spec.ts.snap │ │ │ │ │ ├── transformExpressions.spec.ts.snap │ │ │ │ │ ├── transformText.spec.ts.snap │ │ │ │ │ ├── vFor.spec.ts.snap │ │ │ │ │ ├── vIf.spec.ts.snap │ │ │ │ │ ├── vMemo.spec.ts.snap │ │ │ │ │ ├── vModel.spec.ts.snap │ │ │ │ │ ├── vOnce.spec.ts.snap │ │ │ │ │ └── vSlot.spec.ts.snap │ │ │ │ ├── cacheStatic.spec.ts │ │ │ │ ├── noopDirectiveTransform.spec.ts │ │ │ │ ├── transformElement.spec.ts │ │ │ │ ├── transformExpressions.spec.ts │ │ │ │ ├── transformSlotOutlet.spec.ts │ │ │ │ ├── transformText.spec.ts │ │ │ │ ├── vBind.spec.ts │ │ │ │ ├── vFor.spec.ts │ │ │ │ ├── vIf.spec.ts │ │ │ │ ├── vMemo.spec.ts │ │ │ │ ├── vModel.spec.ts │ │ │ │ ├── vOn.spec.ts │ │ │ │ ├── vOnce.spec.ts │ │ │ │ └── vSlot.spec.ts │ │ │ └── utils.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── ast.ts │ │ ├── babelUtils.ts │ │ ├── codegen.ts │ │ ├── compat/ │ │ │ ├── compatConfig.ts │ │ │ └── transformFilter.ts │ │ ├── compile.ts │ │ ├── errors.ts │ │ ├── index.ts │ │ ├── options.ts │ │ ├── parser.ts │ │ ├── runtimeHelpers.ts │ │ ├── tokenizer.ts │ │ ├── transform.ts │ │ ├── transforms/ │ │ │ ├── cacheStatic.ts │ │ │ ├── noopDirectiveTransform.ts │ │ │ ├── transformElement.ts │ │ │ ├── transformExpression.ts │ │ │ ├── transformSlotOutlet.ts │ │ │ ├── transformText.ts │ │ │ ├── transformVBindShorthand.ts │ │ │ ├── vBind.ts │ │ │ ├── vFor.ts │ │ │ ├── vIf.ts │ │ │ ├── vMemo.ts │ │ │ ├── vModel.ts │ │ │ ├── vOn.ts │ │ │ ├── vOnce.ts │ │ │ └── vSlot.ts │ │ ├── utils.ts │ │ └── validateExpression.ts │ ├── compiler-dom/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.spec.ts.snap │ │ │ ├── decoderHtmlBrowser.spec.ts │ │ │ ├── index.spec.ts │ │ │ ├── parse.spec.ts │ │ │ └── transforms/ │ │ │ ├── Transition.spec.ts │ │ │ ├── __snapshots__/ │ │ │ │ ├── Transition.spec.ts.snap │ │ │ │ ├── stringifyStatic.spec.ts.snap │ │ │ │ ├── vModel.spec.ts.snap │ │ │ │ └── vShow.spec.ts.snap │ │ │ ├── ignoreSideEffectTags.spec.ts │ │ │ ├── stringifyStatic.spec.ts │ │ │ ├── transformStyle.spec.ts │ │ │ ├── vHtml.spec.ts │ │ │ ├── vModel.spec.ts │ │ │ ├── vOn.spec.ts │ │ │ ├── vShow.spec.ts │ │ │ ├── vText.spec.ts │ │ │ └── validateHtmlNesting.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── decodeHtmlBrowser.ts │ │ ├── errors.ts │ │ ├── htmlNesting.ts │ │ ├── index.ts │ │ ├── parserOptions.ts │ │ ├── runtimeHelpers.ts │ │ └── transforms/ │ │ ├── Transition.ts │ │ ├── ignoreSideEffectTags.ts │ │ ├── stringifyStatic.ts │ │ ├── transformStyle.ts │ │ ├── vHtml.ts │ │ ├── vModel.ts │ │ ├── vOn.ts │ │ ├── vShow.ts │ │ ├── vText.ts │ │ └── validateHtmlNesting.ts │ ├── compiler-sfc/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── compileScript.spec.ts.snap │ │ │ │ ├── compileTemplate.spec.ts.snap │ │ │ │ ├── cssVars.spec.ts.snap │ │ │ │ ├── templateTransformAssetUrl.spec.ts.snap │ │ │ │ └── templateTransformSrcset.spec.ts.snap │ │ │ ├── compileScript/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── defineEmits.spec.ts.snap │ │ │ │ │ ├── defineExpose.spec.ts.snap │ │ │ │ │ ├── defineModel.spec.ts.snap │ │ │ │ │ ├── defineOptions.spec.ts.snap │ │ │ │ │ ├── defineProps.spec.ts.snap │ │ │ │ │ ├── definePropsDestructure.spec.ts.snap │ │ │ │ │ ├── defineSlots.spec.ts.snap │ │ │ │ │ ├── hoistStatic.spec.ts.snap │ │ │ │ │ └── importUsageCheck.spec.ts.snap │ │ │ │ ├── defineEmits.spec.ts │ │ │ │ ├── defineExpose.spec.ts │ │ │ │ ├── defineModel.spec.ts │ │ │ │ ├── defineOptions.spec.ts │ │ │ │ ├── defineProps.spec.ts │ │ │ │ ├── definePropsDestructure.spec.ts │ │ │ │ ├── defineSlots.spec.ts │ │ │ │ ├── hoistStatic.spec.ts │ │ │ │ ├── importUsageCheck.spec.ts │ │ │ │ └── resolveType.spec.ts │ │ │ ├── compileScript.spec.ts │ │ │ ├── compileStyle.spec.ts │ │ │ ├── compileTemplate.spec.ts │ │ │ ├── cssVars.spec.ts │ │ │ ├── fixture/ │ │ │ │ └── import.scss │ │ │ ├── parse.spec.ts │ │ │ ├── rewriteDefault.spec.ts │ │ │ ├── templateTransformAssetUrl.spec.ts │ │ │ ├── templateTransformSrcset.spec.ts │ │ │ ├── templateUtils.spec.ts │ │ │ └── utils.ts │ │ ├── package.json │ │ └── src/ │ │ ├── cache.ts │ │ ├── compileScript.ts │ │ ├── compileStyle.ts │ │ ├── compileTemplate.ts │ │ ├── index.ts │ │ ├── parse.ts │ │ ├── rewriteDefault.ts │ │ ├── script/ │ │ │ ├── analyzeScriptBindings.ts │ │ │ ├── context.ts │ │ │ ├── defineEmits.ts │ │ │ ├── defineExpose.ts │ │ │ ├── defineModel.ts │ │ │ ├── defineOptions.ts │ │ │ ├── defineProps.ts │ │ │ ├── definePropsDestructure.ts │ │ │ ├── defineSlots.ts │ │ │ ├── importUsageCheck.ts │ │ │ ├── normalScript.ts │ │ │ ├── resolveType.ts │ │ │ ├── topLevelAwait.ts │ │ │ └── utils.ts │ │ ├── shims.d.ts │ │ ├── style/ │ │ │ ├── cssVars.ts │ │ │ ├── pluginScoped.ts │ │ │ ├── pluginTrim.ts │ │ │ └── preprocessors.ts │ │ ├── template/ │ │ │ ├── templateUtils.ts │ │ │ ├── transformAssetUrl.ts │ │ │ └── transformSrcset.ts │ │ └── warn.ts │ ├── compiler-ssr/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── ssrComponent.spec.ts │ │ │ ├── ssrElement.spec.ts │ │ │ ├── ssrFallthroughAttrs.spec.ts │ │ │ ├── ssrInjectCssVars.spec.ts │ │ │ ├── ssrPortal.spec.ts │ │ │ ├── ssrScopeId.spec.ts │ │ │ ├── ssrSlotOutlet.spec.ts │ │ │ ├── ssrSuspense.spec.ts │ │ │ ├── ssrText.spec.ts │ │ │ ├── ssrTransition.spec.ts │ │ │ ├── ssrTransitionGroup.spec.ts │ │ │ ├── ssrVFor.spec.ts │ │ │ ├── ssrVIf.spec.ts │ │ │ ├── ssrVModel.spec.ts │ │ │ ├── ssrVShow.spec.ts │ │ │ └── utils.ts │ │ ├── package.json │ │ └── src/ │ │ ├── errors.ts │ │ ├── index.ts │ │ ├── runtimeHelpers.ts │ │ ├── ssrCodegenTransform.ts │ │ └── transforms/ │ │ ├── ssrInjectCssVars.ts │ │ ├── ssrInjectFallthroughAttrs.ts │ │ ├── ssrTransformComponent.ts │ │ ├── ssrTransformElement.ts │ │ ├── ssrTransformSlotOutlet.ts │ │ ├── ssrTransformSuspense.ts │ │ ├── ssrTransformTeleport.ts │ │ ├── ssrTransformTransition.ts │ │ ├── ssrTransformTransitionGroup.ts │ │ ├── ssrVFor.ts │ │ ├── ssrVIf.ts │ │ ├── ssrVModel.ts │ │ └── ssrVShow.ts │ ├── global.d.ts │ ├── reactivity/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __benchmarks__/ │ │ │ ├── computed.bench.ts │ │ │ ├── effect.bench.ts │ │ │ ├── reactiveArray.bench.ts │ │ │ ├── reactiveMap.bench.ts │ │ │ ├── reactiveObject.bench.ts │ │ │ └── ref.bench.ts │ │ ├── __tests__/ │ │ │ ├── collections/ │ │ │ │ ├── Map.spec.ts │ │ │ │ ├── Set.spec.ts │ │ │ │ ├── WeakMap.spec.ts │ │ │ │ ├── WeakSet.spec.ts │ │ │ │ └── shallowReadonly.spec.ts │ │ │ ├── computed.spec.ts │ │ │ ├── effect.spec.ts │ │ │ ├── effectScope.spec.ts │ │ │ ├── gc.spec.ts │ │ │ ├── reactive.spec.ts │ │ │ ├── reactiveArray.spec.ts │ │ │ ├── readonly.spec.ts │ │ │ ├── ref.spec.ts │ │ │ ├── shallowReactive.spec.ts │ │ │ ├── shallowReadonly.spec.ts │ │ │ └── watch.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── arrayInstrumentations.ts │ │ ├── baseHandlers.ts │ │ ├── collectionHandlers.ts │ │ ├── computed.ts │ │ ├── constants.ts │ │ ├── dep.ts │ │ ├── effect.ts │ │ ├── effectScope.ts │ │ ├── index.ts │ │ ├── reactive.ts │ │ ├── ref.ts │ │ ├── warning.ts │ │ └── watch.ts │ ├── runtime-core/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── apiAsyncComponent.spec.ts │ │ │ ├── apiCreateApp.spec.ts │ │ │ ├── apiExpose.spec.ts │ │ │ ├── apiInject.spec.ts │ │ │ ├── apiLifecycle.spec.ts │ │ │ ├── apiOptions.spec.ts │ │ │ ├── apiSetupContext.spec.ts │ │ │ ├── apiSetupHelpers.spec.ts │ │ │ ├── apiWatch.bench.ts │ │ │ ├── apiWatch.spec.ts │ │ │ ├── component.spec.ts │ │ │ ├── componentEmits.spec.ts │ │ │ ├── componentProps.spec.ts │ │ │ ├── componentPublicInstance.spec.ts │ │ │ ├── componentSlots.spec.ts │ │ │ ├── components/ │ │ │ │ ├── BaseTransition.spec.ts │ │ │ │ ├── KeepAlive.spec.ts │ │ │ │ ├── Suspense.spec.ts │ │ │ │ └── Teleport.spec.ts │ │ │ ├── directives.spec.ts │ │ │ ├── errorHandling.spec.ts │ │ │ ├── h.spec.ts │ │ │ ├── helpers/ │ │ │ │ ├── createSlots.spec.ts │ │ │ │ ├── renderList.spec.ts │ │ │ │ ├── renderSlot.spec.ts │ │ │ │ ├── resolveAssets.spec.ts │ │ │ │ ├── toHandlers.spec.ts │ │ │ │ ├── useId.spec.ts │ │ │ │ ├── useModel.spec.ts │ │ │ │ ├── useTemplateRef.spec.ts │ │ │ │ └── withMemo.spec.ts │ │ │ ├── hmr.spec.ts │ │ │ ├── hydration.spec.ts │ │ │ ├── misc.spec.ts │ │ │ ├── rendererAttrsFallthrough.spec.ts │ │ │ ├── rendererChildren.spec.ts │ │ │ ├── rendererComponent.spec.ts │ │ │ ├── rendererElement.spec.ts │ │ │ ├── rendererFragment.spec.ts │ │ │ ├── rendererOptimizedMode.spec.ts │ │ │ ├── rendererTemplateRef.spec.ts │ │ │ ├── scheduler.spec.ts │ │ │ ├── scopeId.spec.ts │ │ │ ├── vnode.spec.ts │ │ │ └── vnodeHooks.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── apiAsyncComponent.ts │ │ │ ├── apiComputed.ts │ │ │ ├── apiCreateApp.ts │ │ │ ├── apiDefineComponent.ts │ │ │ ├── apiInject.ts │ │ │ ├── apiLifecycle.ts │ │ │ ├── apiSetupHelpers.ts │ │ │ ├── apiWatch.ts │ │ │ ├── compat/ │ │ │ │ ├── attrsFallthrough.ts │ │ │ │ ├── compatConfig.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentAsync.ts │ │ │ │ ├── componentFunctional.ts │ │ │ │ ├── componentVModel.ts │ │ │ │ ├── customDirective.ts │ │ │ │ ├── data.ts │ │ │ │ ├── global.ts │ │ │ │ ├── globalConfig.ts │ │ │ │ ├── instance.ts │ │ │ │ ├── instanceChildren.ts │ │ │ │ ├── instanceEventEmitter.ts │ │ │ │ ├── instanceListeners.ts │ │ │ │ ├── props.ts │ │ │ │ ├── renderFn.ts │ │ │ │ └── renderHelpers.ts │ │ │ ├── component.ts │ │ │ ├── componentEmits.ts │ │ │ ├── componentOptions.ts │ │ │ ├── componentProps.ts │ │ │ ├── componentPublicInstance.ts │ │ │ ├── componentRenderContext.ts │ │ │ ├── componentRenderUtils.ts │ │ │ ├── componentSlots.ts │ │ │ ├── components/ │ │ │ │ ├── BaseTransition.ts │ │ │ │ ├── KeepAlive.ts │ │ │ │ ├── Suspense.ts │ │ │ │ └── Teleport.ts │ │ │ ├── customFormatter.ts │ │ │ ├── devtools.ts │ │ │ ├── directives.ts │ │ │ ├── enums.ts │ │ │ ├── errorHandling.ts │ │ │ ├── featureFlags.ts │ │ │ ├── h.ts │ │ │ ├── helpers/ │ │ │ │ ├── createSlots.ts │ │ │ │ ├── renderList.ts │ │ │ │ ├── renderSlot.ts │ │ │ │ ├── resolveAssets.ts │ │ │ │ ├── toHandlers.ts │ │ │ │ ├── useId.ts │ │ │ │ ├── useModel.ts │ │ │ │ ├── useSsrContext.ts │ │ │ │ ├── useTemplateRef.ts │ │ │ │ └── withMemo.ts │ │ │ ├── hmr.ts │ │ │ ├── hydration.ts │ │ │ ├── hydrationStrategies.ts │ │ │ ├── index.ts │ │ │ ├── internalObject.ts │ │ │ ├── profiling.ts │ │ │ ├── renderer.ts │ │ │ ├── rendererTemplateRef.ts │ │ │ ├── scheduler.ts │ │ │ ├── vnode.ts │ │ │ └── warning.ts │ │ └── types/ │ │ ├── globalComponents.d.ts │ │ └── scriptSetupHelpers.d.ts │ ├── runtime-dom/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── createApp.spec.ts │ │ │ ├── customElement.spec.ts │ │ │ ├── customizedBuiltIn.spec.ts │ │ │ ├── directives/ │ │ │ │ ├── vCloak.spec.ts │ │ │ │ ├── vModel.spec.ts │ │ │ │ ├── vOn.spec.ts │ │ │ │ └── vShow.spec.ts │ │ │ ├── helpers/ │ │ │ │ ├── useCssModule.spec.ts │ │ │ │ └── useCssVars.spec.ts │ │ │ ├── nodeOps.spec.ts │ │ │ ├── patchAttrs.spec.ts │ │ │ ├── patchClass.spec.ts │ │ │ ├── patchEvents.spec.ts │ │ │ ├── patchProps.spec.ts │ │ │ ├── patchStyle.spec.ts │ │ │ └── rendererStaticNode.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── apiCustomElement.ts │ │ ├── components/ │ │ │ ├── Transition.ts │ │ │ └── TransitionGroup.ts │ │ ├── directives/ │ │ │ ├── vModel.ts │ │ │ ├── vOn.ts │ │ │ └── vShow.ts │ │ ├── helpers/ │ │ │ ├── useCssModule.ts │ │ │ └── useCssVars.ts │ │ ├── index.ts │ │ ├── jsx.ts │ │ ├── modules/ │ │ │ ├── attrs.ts │ │ │ ├── class.ts │ │ │ ├── events.ts │ │ │ ├── props.ts │ │ │ └── style.ts │ │ ├── nodeOps.ts │ │ └── patchProp.ts │ ├── runtime-test/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ └── testRuntime.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ ├── nodeOps.ts │ │ ├── patchProp.ts │ │ ├── serialize.ts │ │ └── triggerEvent.ts │ ├── server-renderer/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── createBuffer.bench.ts │ │ │ ├── render.spec.ts │ │ │ ├── ssrAttrFallthrough.spec.ts │ │ │ ├── ssrCompilerOptions.spec.ts │ │ │ ├── ssrComputed.spec.ts │ │ │ ├── ssrDirectives.spec.ts │ │ │ ├── ssrDynamicComponent.spec.ts │ │ │ ├── ssrInterpolate.spec.ts │ │ │ ├── ssrRenderAttrs.spec.ts │ │ │ ├── ssrRenderList.spec.ts │ │ │ ├── ssrScopeId.spec.ts │ │ │ ├── ssrSlot.spec.ts │ │ │ ├── ssrSuspense.spec.ts │ │ │ ├── ssrTeleport.spec.ts │ │ │ ├── ssrVModelHelpers.spec.ts │ │ │ ├── ssrWatch.spec.ts │ │ │ ├── unrollBuffer.bench.ts │ │ │ └── webStream.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── helpers/ │ │ │ ├── ssrCompile.ts │ │ │ ├── ssrGetDirectiveProps.ts │ │ │ ├── ssrInterpolate.ts │ │ │ ├── ssrRenderAttrs.ts │ │ │ ├── ssrRenderComponent.ts │ │ │ ├── ssrRenderList.ts │ │ │ ├── ssrRenderSlot.ts │ │ │ ├── ssrRenderSuspense.ts │ │ │ ├── ssrRenderTeleport.ts │ │ │ └── ssrVModelHelpers.ts │ │ ├── index.ts │ │ ├── internal.ts │ │ ├── render.ts │ │ ├── renderToStream.ts │ │ └── renderToString.ts │ ├── shared/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ └── codeframe.spec.ts.snap │ │ │ ├── codeframe.spec.ts │ │ │ ├── cssVars.spec.ts │ │ │ ├── escapeHtml.spec.ts │ │ │ ├── looseEqual.spec.ts │ │ │ ├── normalizeProp.spec.ts │ │ │ └── toDisplayString.spec.ts │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── codeframe.ts │ │ ├── cssVars.ts │ │ ├── domAttrConfig.ts │ │ ├── domTagConfig.ts │ │ ├── escapeHtml.ts │ │ ├── general.ts │ │ ├── globalsAllowList.ts │ │ ├── index.ts │ │ ├── looseEqual.ts │ │ ├── makeMap.ts │ │ ├── normalizeProp.ts │ │ ├── patchFlags.ts │ │ ├── shapeFlags.ts │ │ ├── slotFlags.ts │ │ ├── toDisplayString.ts │ │ └── typeUtils.ts │ ├── vue/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── customElementCasing.spec.ts │ │ │ ├── e2e/ │ │ │ │ ├── Transition.spec.ts │ │ │ │ ├── TransitionGroup.spec.ts │ │ │ │ ├── commits.mock.ts │ │ │ │ ├── commits.spec.ts │ │ │ │ ├── e2eUtils.ts │ │ │ │ ├── grid.spec.ts │ │ │ │ ├── hydration-strat-custom.html │ │ │ │ ├── hydration-strat-idle.html │ │ │ │ ├── hydration-strat-interaction.html │ │ │ │ ├── hydration-strat-media.html │ │ │ │ ├── hydration-strat-visible.html │ │ │ │ ├── hydrationStrategies.spec.ts │ │ │ │ ├── markdown.spec.ts │ │ │ │ ├── memory-leak.spec.ts │ │ │ │ ├── ssr-custom-element.spec.ts │ │ │ │ ├── svg.spec.ts │ │ │ │ ├── todomvc.spec.ts │ │ │ │ ├── transition.html │ │ │ │ ├── tree.spec.ts │ │ │ │ ├── trusted-types.html │ │ │ │ ├── trusted-types.spec.ts │ │ │ │ └── vModel.spec.ts │ │ │ ├── index.spec.ts │ │ │ ├── mathmlNamespace.spec.ts │ │ │ ├── runtimeCompilerOptions.spec.ts │ │ │ └── svgNamespace.spec.ts │ │ ├── compiler-sfc/ │ │ │ ├── index.browser.js │ │ │ ├── index.browser.mjs │ │ │ ├── index.d.mts │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.mjs │ │ │ ├── package.json │ │ │ └── register-ts.js │ │ ├── examples/ │ │ │ ├── classic/ │ │ │ │ ├── commits.html │ │ │ │ ├── grid.html │ │ │ │ ├── markdown.html │ │ │ │ ├── svg.html │ │ │ │ ├── todomvc.html │ │ │ │ └── tree.html │ │ │ ├── composition/ │ │ │ │ ├── commits.html │ │ │ │ ├── grid.html │ │ │ │ ├── markdown.html │ │ │ │ ├── svg.html │ │ │ │ ├── todomvc.html │ │ │ │ └── tree.html │ │ │ └── transition/ │ │ │ ├── list.html │ │ │ └── modal.html │ │ ├── index.js │ │ ├── index.mjs │ │ ├── jsx-runtime/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.mjs │ │ │ └── package.json │ │ ├── jsx.d.ts │ │ ├── package.json │ │ ├── server-renderer/ │ │ │ ├── index.d.mts │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.mjs │ │ │ └── package.json │ │ └── src/ │ │ ├── dev.ts │ │ ├── index.ts │ │ └── runtime.ts │ └── vue-compat/ │ ├── LICENSE │ ├── README.md │ ├── __tests__/ │ │ ├── compiler.spec.ts │ │ ├── componentAsync.spec.ts │ │ ├── componentFunctional.spec.ts │ │ ├── componentVModel.spec.ts │ │ ├── filters.spec.ts │ │ ├── global.spec.ts │ │ ├── globalConfig.spec.ts │ │ ├── instance.spec.ts │ │ ├── misc.spec.ts │ │ ├── options.spec.ts │ │ ├── renderFn.spec.ts │ │ └── utils.ts │ ├── index.js │ ├── package.json │ └── src/ │ ├── createCompatVue.ts │ ├── dev.ts │ ├── esm-index.ts │ ├── esm-runtime.ts │ ├── index.ts │ └── runtime.ts ├── packages-private/ │ ├── dts-built-test/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── dts-test/ │ │ ├── README.md │ │ ├── appDirective.test-d.ts │ │ ├── appUse.test-d.ts │ │ ├── built.test-d.ts │ │ ├── compiler.test-d.ts │ │ ├── component.test-d.ts │ │ ├── componentInstance.test-d.tsx │ │ ├── componentTypeExtensions.test-d.tsx │ │ ├── defineComponent.test-d.tsx │ │ ├── defineCustomElement.test-d.ts │ │ ├── directives.test-d.ts │ │ ├── extractProps.test-d.ts │ │ ├── functionalComponent.test-d.tsx │ │ ├── h.test-d.ts │ │ ├── inject.test-d.ts │ │ ├── package.json │ │ ├── reactivity.test-d.ts │ │ ├── ref.test-d.ts │ │ ├── scheduler.test-d.ts │ │ ├── setupHelpers.test-d.ts │ │ ├── tsconfig.test.json │ │ ├── tsx.test-d.tsx │ │ ├── utils.d.ts │ │ └── watch.test-d.ts │ ├── global.d.ts │ ├── sfc-playground/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── Header.vue │ │ │ ├── VersionSelect.vue │ │ │ ├── download/ │ │ │ │ ├── download.ts │ │ │ │ └── template/ │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ ├── package.json │ │ │ │ └── vite.config.js │ │ │ ├── icons/ │ │ │ │ ├── Copy.vue │ │ │ │ ├── Download.vue │ │ │ │ ├── GitHub.vue │ │ │ │ ├── Moon.vue │ │ │ │ ├── Reload.vue │ │ │ │ ├── Share.vue │ │ │ │ └── Sun.vue │ │ │ ├── main.ts │ │ │ ├── vue-dev-proxy-prod.ts │ │ │ ├── vue-dev-proxy.ts │ │ │ └── vue-server-renderer-dev-proxy.ts │ │ ├── vercel.json │ │ └── vite.config.ts │ ├── template-explorer/ │ │ ├── README.md │ │ ├── _redirects │ │ ├── index.html │ │ ├── local.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── options.ts │ │ │ └── theme.ts │ │ └── style.css │ ├── tsconfig.json │ └── vite-debug/ │ ├── App.vue │ ├── README.md │ ├── index.html │ ├── main.ts │ ├── package.json │ ├── tsconfig.json │ └── vite.config.ts ├── pnpm-workspace.yaml ├── rollup.config.js ├── rollup.dts.config.js ├── scripts/ │ ├── aliases.js │ ├── build.js │ ├── dev.js │ ├── inline-enums.js │ ├── pre-dev-sfc.js │ ├── release.js │ ├── setup-vitest.ts │ ├── size-report.js │ ├── usage-size.js │ ├── utils.js │ ├── verify-commit.js │ └── verify-treeshaking.js ├── tsconfig.build.json ├── tsconfig.json └── vitest.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .git-blame-ignore-revs ================================================ # update prettier & eslint config (#9162) bfe6b459d3a0ce6168611ee1ac7e6e789709df9d ================================================ FILE: .github/FUNDING.yml ================================================ github: yyx990803 open_collective: vuejs ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: "\U0001F41E Bug report" description: Create a report to help us improve body: - type: markdown attributes: value: | **Before You Start...** This form is only for submitting bug reports. If you have a usage question or are unsure if this is really a bug, make sure to: - Read the [docs](https://vuejs.org/) - Ask on [Discord Chat](https://chat.vuejs.org/) - Ask on [GitHub Discussions](https://github.com/vuejs/core/discussions) - Look for / ask questions on [Stack Overflow](https://stackoverflow.com/questions/ask?tags=vue.js) Also try to search for your issue - it may have already been answered or even fixed in the development branch. However, if you find that an old, closed issue still persists in the latest version, you should open a new issue using the form below instead of commenting on the old issue. - type: input id: version attributes: label: Vue version validations: required: true - type: input id: reproduction-link attributes: label: Link to minimal reproduction description: | The easiest way to provide a reproduction is by showing the bug in [The SFC Playground](https://play.vuejs.org/). If it cannot be reproduced in the playground and requires a proper build setup, try [StackBlitz](https://vite.new/vue). If neither of these are suitable, you can always provide a GitHub repository. The reproduction should be **minimal** - i.e. it should contain only the bare minimum amount of code needed to show the bug. See [Bug Reproduction Guidelines](https://github.com/vuejs/core/blob/main/.github/bug-repro-guidelines.md) for more details. Please do not just fill in a random link. The issue will be closed if no valid reproduction is provided. placeholder: Reproduction Link validations: required: true - type: textarea id: steps-to-reproduce attributes: label: Steps to reproduce description: | What do we need to do after opening your repro in order to make the bug happen? Clear and concise reproduction instructions are important for us to be able to triage your issue in a timely manner. Note that you can use [Markdown](https://guides.github.com/features/mastering-markdown/) to format lists and code. placeholder: Steps to reproduce validations: required: true - type: textarea id: expected attributes: label: What is expected? validations: required: true - type: textarea id: actually-happening attributes: label: What is actually happening? validations: required: true - type: textarea id: system-info attributes: label: System Info description: Output of `npx envinfo --system --npmPackages vue --binaries --browsers` render: shell placeholder: System, Binaries, Browsers - type: textarea id: additional-comments attributes: label: Any additional comments? description: e.g. some background/context of how you ran into this bug. ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Feature Request url: https://github.com/vuejs/rfcs/discussions about: Suggest new features for consideration - name: Discord Chat url: https://chat.vuejs.org about: Ask questions and discuss with other Vue users in real time. - name: Questions & Discussions url: https://github.com/vuejs/core/discussions about: Use GitHub discussions for message-board style questions and discussions. - name: Patreon url: https://www.patreon.com/evanyou about: Love Vue.js? Please consider supporting us via Patreon. - name: Open Collective url: https://opencollective.com/vuejs/donate about: Love Vue.js? Please consider supporting us via Open Collective. ================================================ FILE: .github/bug-repro-guidelines.md ================================================ ## About Bug Reproductions A bug reproduction is a piece of code that can run and demonstrate how a bug can happen. ### Text is not enough It's impossible to fix a bug from mere text descriptions. First, it's very difficult to precisely describe a technical problem while keeping it easy to follow; Second, the real cause may very well be something that you forgot to even mention. A reproduction is the only way that can reliably help us understand what is going on, so please provide one. ### A repro must be runnable Screenshots or videos are NOT reproductions! They only show that the bug exists, but do not provide enough information on why it happens. Only runnable code provides the most complete context and allows us to properly debug the scenario. That said, in some cases videos/gifs can help explain interaction issues that are hard to describe in text. ### A repro should be minimal Some users would give us a link to a real project and hope we can help them figure out what is wrong. We generally do not accept such requests because: You are already familiar with your codebase, but we are not. It is extremely time-consuming to hunt a bug in a big and unfamiliar codebase. The problematic behavior may very well be caused by your code rather than by a bug in Vue. A minimal reproduction means it demonstrates the bug, and the bug only. It should only contain the bare minimum amount of code that can reliably cause the bug. Try your best to get rid of anything that isn't directly related to the problem. ### How to create a repro For Vue 3 core reproductions, try reproducing it in [The SFC Playground](https://play.vuejs.org/). If it cannot be reproduced in the playground and requires a proper build setup, try [StackBlitz](https://vite.new/vue). If neither of these are suitable, you can always provide a GitHub repository. ================================================ FILE: .github/commit-convention.md ================================================ ## Git Commit Message Convention > This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular). #### TL;DR: Messages must be matched by the following regex: ```regexp /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\(.+\))?: .{1,50}/ ``` #### Examples Appears under "Features" header, `compiler` subheader: ``` feat(compiler): add 'comments' option ``` Appears under "Bug Fixes" header, `v-model` subheader, with a link to issue #28: ``` fix(v-model): handle events on blur close #28 ``` Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: ``` perf(core): improve vdom diffing by removing 'foo' option BREAKING CHANGE: The 'foo' option has been removed. ``` The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. ``` revert: feat(compiler): add 'comments' option This reverts commit 667ecc1654a317a13331b17617d973392f415f02. ``` ### Full Message Format A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: ``` ():