Showing preview only (2,397K chars total). Download the full file or copy to clipboard to get everything.
Repository: vuejs/vue
Branch: main
Commit: 9e8870794008
Files: 502
Total size: 2.2 MB
Directory structure:
gitextract_tp3drh92/
├── .editorconfig
├── .git-blame-ignore-revs
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── COMMIT_CONVENTION.md
│ ├── CONTRIBUTING.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ └── config.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── ci.yml
│ └── release-tag.yml
├── .gitignore
├── .prettierrc
├── BACKERS.md
├── CHANGELOG.md
├── LICENSE
├── README.md
├── api-extractor.json
├── api-extractor.tsconfig.json
├── benchmarks/
│ ├── big-table/
│ │ ├── demo.css
│ │ ├── index.html
│ │ └── style.css
│ ├── dbmon/
│ │ ├── ENV.js
│ │ ├── app.js
│ │ ├── index.html
│ │ └── lib/
│ │ ├── memory-stats.js
│ │ ├── monitor.js
│ │ └── styles.css
│ ├── reorder-list/
│ │ └── index.html
│ ├── ssr/
│ │ ├── README.md
│ │ ├── common.js
│ │ ├── renderToStream.js
│ │ └── renderToString.js
│ ├── svg/
│ │ └── index.html
│ └── uptime/
│ └── index.html
├── compiler-sfc/
│ ├── index.d.ts
│ ├── index.js
│ ├── index.mjs
│ └── package.json
├── examples/
│ ├── classic/
│ │ ├── commits/
│ │ │ ├── app.js
│ │ │ └── index.html
│ │ ├── elastic-header/
│ │ │ ├── index.html
│ │ │ └── style.css
│ │ ├── firebase/
│ │ │ ├── app.js
│ │ │ ├── index.html
│ │ │ └── style.css
│ │ ├── grid/
│ │ │ ├── grid.js
│ │ │ ├── index.html
│ │ │ └── style.css
│ │ ├── markdown/
│ │ │ ├── index.html
│ │ │ └── style.css
│ │ ├── modal/
│ │ │ ├── index.html
│ │ │ └── style.css
│ │ ├── move-animations/
│ │ │ └── index.html
│ │ ├── select2/
│ │ │ └── index.html
│ │ ├── svg/
│ │ │ ├── index.html
│ │ │ ├── style.css
│ │ │ └── svg.js
│ │ ├── todomvc/
│ │ │ ├── app.js
│ │ │ ├── index.html
│ │ │ └── readme.md
│ │ └── tree/
│ │ ├── index.html
│ │ └── tree.js
│ └── composition/
│ ├── commits.html
│ ├── grid.html
│ ├── markdown.html
│ ├── svg.html
│ ├── todomvc.html
│ └── tree.html
├── package.json
├── packages/
│ ├── compiler-sfc/
│ │ ├── api-extractor.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── babelUtils.ts
│ │ │ ├── compileScript.ts
│ │ │ ├── compileStyle.ts
│ │ │ ├── compileTemplate.ts
│ │ │ ├── cssVars.ts
│ │ │ ├── index.ts
│ │ │ ├── parse.ts
│ │ │ ├── parseComponent.ts
│ │ │ ├── prefixIdentifiers.ts
│ │ │ ├── rewriteDefault.ts
│ │ │ ├── stylePlugins/
│ │ │ │ ├── scoped.ts
│ │ │ │ └── trim.ts
│ │ │ ├── stylePreprocessors.ts
│ │ │ ├── templateCompilerModules/
│ │ │ │ ├── assetUrl.ts
│ │ │ │ ├── srcset.ts
│ │ │ │ └── utils.ts
│ │ │ ├── types.ts
│ │ │ └── warn.ts
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ ├── compileScript.spec.ts.snap
│ │ │ └── cssVars.spec.ts.snap
│ │ ├── compileScript.spec.ts
│ │ ├── compileStyle.spec.ts
│ │ ├── compileTemplate.spec.ts
│ │ ├── cssVars.spec.ts
│ │ ├── parseComponent.spec.ts
│ │ ├── prefixIdentifiers.spec.ts
│ │ ├── rewriteDefault.spec.ts
│ │ ├── stylePluginScoped.spec.ts
│ │ ├── tsconfig.json
│ │ └── util.ts
│ ├── server-renderer/
│ │ ├── README.md
│ │ ├── client-plugin.d.ts
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── server-plugin.d.ts
│ │ ├── src/
│ │ │ ├── bundle-renderer/
│ │ │ │ ├── create-bundle-renderer.ts
│ │ │ │ ├── create-bundle-runner.ts
│ │ │ │ └── source-map-support.ts
│ │ │ ├── compiler.ts
│ │ │ ├── create-basic-renderer.ts
│ │ │ ├── create-renderer.ts
│ │ │ ├── directives/
│ │ │ │ ├── index.ts
│ │ │ │ ├── model.ts
│ │ │ │ └── show.ts
│ │ │ ├── index-basic.ts
│ │ │ ├── index.ts
│ │ │ ├── modules/
│ │ │ │ ├── attrs.ts
│ │ │ │ ├── class.ts
│ │ │ │ ├── dom-props.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── style.ts
│ │ │ ├── optimizing-compiler/
│ │ │ │ ├── codegen.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── modules.ts
│ │ │ │ ├── optimizer.ts
│ │ │ │ └── runtime-helpers.ts
│ │ │ ├── render-context.ts
│ │ │ ├── render-stream.ts
│ │ │ ├── render.ts
│ │ │ ├── template-renderer/
│ │ │ │ ├── create-async-file-mapper.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── parse-template.ts
│ │ │ │ └── template-stream.ts
│ │ │ ├── util.ts
│ │ │ ├── webpack-plugin/
│ │ │ │ ├── client.ts
│ │ │ │ ├── server.ts
│ │ │ │ └── util.ts
│ │ │ └── write.ts
│ │ ├── test/
│ │ │ ├── async-loader.js
│ │ │ ├── compile-with-webpack.ts
│ │ │ ├── fixtures/
│ │ │ │ ├── app.js
│ │ │ │ ├── async-bar.js
│ │ │ │ ├── async-foo.js
│ │ │ │ ├── cache-opt-out.js
│ │ │ │ ├── cache.js
│ │ │ │ ├── error.js
│ │ │ │ ├── nested-cache.js
│ │ │ │ ├── promise-rejection.js
│ │ │ │ ├── split.js
│ │ │ │ └── test.css
│ │ │ ├── ssr-basic-renderer.spec.ts
│ │ │ ├── ssr-bundle-render.spec.ts
│ │ │ ├── ssr-reactivity.spec.ts
│ │ │ ├── ssr-stream.spec.ts
│ │ │ ├── ssr-string.spec.ts
│ │ │ ├── ssr-template.spec.ts
│ │ │ ├── tsconfig.json
│ │ │ └── utils.ts
│ │ └── types/
│ │ ├── index.d.ts
│ │ ├── plugin.d.ts
│ │ ├── test.ts
│ │ └── tsconfig.json
│ └── template-compiler/
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── types/
│ ├── index.d.ts
│ ├── test.ts
│ └── tsconfig.json
├── pnpm-workspace.yaml
├── scripts/
│ ├── alias.js
│ ├── build.js
│ ├── config.js
│ ├── feature-flags.js
│ ├── gen-release-note.js
│ ├── git-hooks/
│ │ ├── commit-msg
│ │ └── pre-commit
│ ├── release.js
│ └── verify-commit-msg.js
├── src/
│ ├── compiler/
│ │ ├── codeframe.ts
│ │ ├── codegen/
│ │ │ ├── events.ts
│ │ │ └── index.ts
│ │ ├── create-compiler.ts
│ │ ├── directives/
│ │ │ ├── bind.ts
│ │ │ ├── index.ts
│ │ │ ├── model.ts
│ │ │ └── on.ts
│ │ ├── error-detector.ts
│ │ ├── helpers.ts
│ │ ├── index.ts
│ │ ├── optimizer.ts
│ │ ├── parser/
│ │ │ ├── entity-decoder.ts
│ │ │ ├── filter-parser.ts
│ │ │ ├── html-parser.ts
│ │ │ ├── index.ts
│ │ │ └── text-parser.ts
│ │ └── to-function.ts
│ ├── core/
│ │ ├── components/
│ │ │ ├── index.ts
│ │ │ └── keep-alive.ts
│ │ ├── config.ts
│ │ ├── global-api/
│ │ │ ├── assets.ts
│ │ │ ├── extend.ts
│ │ │ ├── index.ts
│ │ │ ├── mixin.ts
│ │ │ └── use.ts
│ │ ├── index.ts
│ │ ├── instance/
│ │ │ ├── events.ts
│ │ │ ├── index.ts
│ │ │ ├── init.ts
│ │ │ ├── inject.ts
│ │ │ ├── lifecycle.ts
│ │ │ ├── proxy.ts
│ │ │ ├── render-helpers/
│ │ │ │ ├── bind-dynamic-keys.ts
│ │ │ │ ├── bind-object-listeners.ts
│ │ │ │ ├── bind-object-props.ts
│ │ │ │ ├── check-keycodes.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── render-list.ts
│ │ │ │ ├── render-slot.ts
│ │ │ │ ├── render-static.ts
│ │ │ │ ├── resolve-filter.ts
│ │ │ │ ├── resolve-scoped-slots.ts
│ │ │ │ └── resolve-slots.ts
│ │ │ ├── render.ts
│ │ │ └── state.ts
│ │ ├── observer/
│ │ │ ├── array.ts
│ │ │ ├── dep.ts
│ │ │ ├── index.ts
│ │ │ ├── scheduler.ts
│ │ │ ├── traverse.ts
│ │ │ └── watcher.ts
│ │ ├── util/
│ │ │ ├── debug.ts
│ │ │ ├── env.ts
│ │ │ ├── error.ts
│ │ │ ├── index.ts
│ │ │ ├── lang.ts
│ │ │ ├── next-tick.ts
│ │ │ ├── options.ts
│ │ │ ├── perf.ts
│ │ │ └── props.ts
│ │ └── vdom/
│ │ ├── create-component.ts
│ │ ├── create-element.ts
│ │ ├── create-functional-component.ts
│ │ ├── helpers/
│ │ │ ├── extract-props.ts
│ │ │ ├── get-first-component-child.ts
│ │ │ ├── index.ts
│ │ │ ├── is-async-placeholder.ts
│ │ │ ├── merge-hook.ts
│ │ │ ├── normalize-children.ts
│ │ │ ├── normalize-scoped-slots.ts
│ │ │ ├── resolve-async-component.ts
│ │ │ └── update-listeners.ts
│ │ ├── modules/
│ │ │ ├── directives.ts
│ │ │ ├── index.ts
│ │ │ └── template-ref.ts
│ │ ├── patch.ts
│ │ └── vnode.ts
│ ├── global.d.ts
│ ├── platforms/
│ │ └── web/
│ │ ├── compiler/
│ │ │ ├── directives/
│ │ │ │ ├── html.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── model.ts
│ │ │ │ └── text.ts
│ │ │ ├── index.ts
│ │ │ ├── modules/
│ │ │ │ ├── class.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── model.ts
│ │ │ │ └── style.ts
│ │ │ ├── options.ts
│ │ │ └── util.ts
│ │ ├── entry-compiler.ts
│ │ ├── entry-runtime-esm.ts
│ │ ├── entry-runtime-with-compiler-esm.ts
│ │ ├── entry-runtime-with-compiler.ts
│ │ ├── entry-runtime.ts
│ │ ├── runtime/
│ │ │ ├── class-util.ts
│ │ │ ├── components/
│ │ │ │ ├── index.ts
│ │ │ │ ├── transition-group.ts
│ │ │ │ └── transition.ts
│ │ │ ├── directives/
│ │ │ │ ├── index.ts
│ │ │ │ ├── model.ts
│ │ │ │ └── show.ts
│ │ │ ├── index.ts
│ │ │ ├── modules/
│ │ │ │ ├── attrs.ts
│ │ │ │ ├── class.ts
│ │ │ │ ├── dom-props.ts
│ │ │ │ ├── events.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── style.ts
│ │ │ │ └── transition.ts
│ │ │ ├── node-ops.ts
│ │ │ ├── patch.ts
│ │ │ └── transition-util.ts
│ │ ├── runtime-with-compiler.ts
│ │ └── util/
│ │ ├── attrs.ts
│ │ ├── class.ts
│ │ ├── compat.ts
│ │ ├── element.ts
│ │ ├── index.ts
│ │ └── style.ts
│ ├── shared/
│ │ ├── constants.ts
│ │ └── util.ts
│ ├── types/
│ │ ├── compiler.ts
│ │ ├── component.ts
│ │ ├── global-api.ts
│ │ ├── modules.d.ts
│ │ ├── options.ts
│ │ ├── ssr.ts
│ │ ├── utils.ts
│ │ └── vnode.ts
│ └── v3/
│ ├── apiAsyncComponent.ts
│ ├── apiInject.ts
│ ├── apiLifecycle.ts
│ ├── apiSetup.ts
│ ├── apiWatch.ts
│ ├── currentInstance.ts
│ ├── debug.ts
│ ├── h.ts
│ ├── index.ts
│ ├── reactivity/
│ │ ├── computed.ts
│ │ ├── effect.ts
│ │ ├── effectScope.ts
│ │ ├── operations.ts
│ │ ├── reactive.ts
│ │ ├── readonly.ts
│ │ └── ref.ts
│ └── sfc-helpers/
│ ├── useCssModule.ts
│ └── useCssVars.ts
├── test/
│ ├── e2e/
│ │ ├── async-edge-cases.html
│ │ ├── async-edge-cases.spec.ts
│ │ ├── basic-ssr.html
│ │ ├── basic-ssr.spec.ts
│ │ ├── commits.mock.ts
│ │ ├── commits.spec.ts
│ │ ├── e2eUtils.ts
│ │ ├── grid.spec.ts
│ │ ├── markdown.spec.ts
│ │ ├── svg.spec.ts
│ │ ├── todomvc.spec.ts
│ │ └── tree.spec.ts
│ ├── helpers/
│ │ ├── classlist.ts
│ │ ├── shim-done.ts
│ │ ├── test-object-option.ts
│ │ ├── to-have-warned.ts
│ │ ├── trigger-event.ts
│ │ ├── vdom.ts
│ │ └── wait-for-update.ts
│ ├── test-env.d.ts
│ ├── transition/
│ │ ├── helpers.ts
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── transition-group.spec.ts
│ │ ├── transition-mode.spec.ts
│ │ ├── transition-with-keep-alive.spec.ts
│ │ └── transition.spec.ts
│ ├── tsconfig.json
│ ├── unit/
│ │ ├── features/
│ │ │ ├── component/
│ │ │ │ ├── component-async.spec.ts
│ │ │ │ ├── component-keep-alive.spec.ts
│ │ │ │ ├── component-scoped-slot.spec.ts
│ │ │ │ ├── component-slot.spec.ts
│ │ │ │ └── component.spec.ts
│ │ │ ├── debug.spec.ts
│ │ │ ├── directives/
│ │ │ │ ├── bind.spec.ts
│ │ │ │ ├── class.spec.ts
│ │ │ │ ├── cloak.spec.ts
│ │ │ │ ├── for.spec.ts
│ │ │ │ ├── html.spec.ts
│ │ │ │ ├── if.spec.ts
│ │ │ │ ├── model-checkbox.spec.ts
│ │ │ │ ├── model-component.spec.ts
│ │ │ │ ├── model-dynamic.spec.ts
│ │ │ │ ├── model-file.spec.ts
│ │ │ │ ├── model-parse.spec.ts
│ │ │ │ ├── model-radio.spec.ts
│ │ │ │ ├── model-select.spec.ts
│ │ │ │ ├── model-text.spec.ts
│ │ │ │ ├── on.spec.ts
│ │ │ │ ├── once.spec.ts
│ │ │ │ ├── pre.spec.ts
│ │ │ │ ├── show.spec.ts
│ │ │ │ ├── static-style-parser.spec.ts
│ │ │ │ ├── style.spec.ts
│ │ │ │ └── text.spec.ts
│ │ │ ├── error-handling.spec.ts
│ │ │ ├── filter/
│ │ │ │ └── filter.spec.ts
│ │ │ ├── global-api/
│ │ │ │ ├── assets.spec.ts
│ │ │ │ ├── compile.spec.ts
│ │ │ │ ├── config.spec.ts
│ │ │ │ ├── extend.spec.ts
│ │ │ │ ├── mixin.spec.ts
│ │ │ │ ├── observable.spec.ts
│ │ │ │ ├── set-delete.spec.ts
│ │ │ │ └── use.spec.ts
│ │ │ ├── instance/
│ │ │ │ ├── init.spec.ts
│ │ │ │ ├── methods-data.spec.ts
│ │ │ │ ├── methods-events.spec.ts
│ │ │ │ ├── methods-lifecycle.spec.ts
│ │ │ │ ├── properties.spec.ts
│ │ │ │ └── render-proxy.spec.ts
│ │ │ ├── options/
│ │ │ │ ├── _scopeId.spec.ts
│ │ │ │ ├── comments.spec.ts
│ │ │ │ ├── components.spec.ts
│ │ │ │ ├── computed.spec.ts
│ │ │ │ ├── data.spec.ts
│ │ │ │ ├── delimiters.spec.ts
│ │ │ │ ├── directives.spec.ts
│ │ │ │ ├── el.spec.ts
│ │ │ │ ├── errorCaptured.spec.ts
│ │ │ │ ├── extends.spec.ts
│ │ │ │ ├── functional.spec.ts
│ │ │ │ ├── inheritAttrs.spec.ts
│ │ │ │ ├── inject.spec.ts
│ │ │ │ ├── lifecycle.spec.ts
│ │ │ │ ├── methods.spec.ts
│ │ │ │ ├── mixins.spec.ts
│ │ │ │ ├── name.spec.ts
│ │ │ │ ├── parent.spec.ts
│ │ │ │ ├── props.spec.ts
│ │ │ │ ├── propsData.spec.ts
│ │ │ │ ├── render.spec.ts
│ │ │ │ ├── renderError.spec.ts
│ │ │ │ ├── template.spec.ts
│ │ │ │ └── watch.spec.ts
│ │ │ ├── template-ref.spec.ts
│ │ │ └── v3/
│ │ │ ├── apiAsyncComponent.spec.ts
│ │ │ ├── apiInject.spec.ts
│ │ │ ├── apiLifecycle.spec.ts
│ │ │ ├── apiSetup.spec.ts
│ │ │ ├── apiWatch.spec.ts
│ │ │ ├── reactivity/
│ │ │ │ ├── computed.spec.ts
│ │ │ │ ├── effectScope.spec.ts
│ │ │ │ ├── reactive.spec.ts
│ │ │ │ ├── readonly.spec.ts
│ │ │ │ ├── ref.spec.ts
│ │ │ │ ├── shallowReactive.spec.ts
│ │ │ │ └── shallowReadonly.spec.ts
│ │ │ ├── setupTemplateRef.spec.ts
│ │ │ └── useCssVars.spec.ts
│ │ └── modules/
│ │ ├── compiler/
│ │ │ ├── codeframe.spec.ts
│ │ │ ├── codegen.spec.ts
│ │ │ ├── compiler-options.spec.ts
│ │ │ ├── optimizer.spec.ts
│ │ │ └── parser.spec.ts
│ │ ├── observer/
│ │ │ ├── dep.spec.ts
│ │ │ ├── observer.spec.ts
│ │ │ ├── scheduler.spec.ts
│ │ │ └── watcher.spec.ts
│ │ ├── server-compiler/
│ │ │ └── compiler-options.spec.ts
│ │ ├── util/
│ │ │ ├── error.spec.ts
│ │ │ ├── next-tick.spec.ts
│ │ │ └── toString.spec.ts
│ │ └── vdom/
│ │ ├── create-component.spec.ts
│ │ ├── create-element.spec.ts
│ │ ├── modules/
│ │ │ ├── attrs.spec.ts
│ │ │ ├── class.spec.ts
│ │ │ ├── directive.spec.ts
│ │ │ ├── dom-props.spec.ts
│ │ │ ├── events.spec.ts
│ │ │ └── style.spec.ts
│ │ └── patch/
│ │ ├── children.spec.ts
│ │ ├── edge-cases.spec.ts
│ │ ├── element.spec.ts
│ │ ├── hooks.spec.ts
│ │ └── hydration.spec.ts
│ └── vitest.setup.ts
├── tsconfig.json
├── types/
│ ├── built-in-components.d.ts
│ ├── common.d.ts
│ ├── index.d.ts
│ ├── jsx.d.ts
│ ├── options.d.ts
│ ├── plugin.d.ts
│ ├── test/
│ │ ├── async-component-test.ts
│ │ ├── augmentation-test.ts
│ │ ├── es-module.ts
│ │ ├── options-test.ts
│ │ ├── plugin-test.ts
│ │ ├── setup-helpers-test.ts
│ │ ├── umd-test.ts
│ │ ├── utils.ts
│ │ ├── v3/
│ │ │ ├── define-async-component-test.tsx
│ │ │ ├── define-component-test.tsx
│ │ │ ├── inject-test.ts
│ │ │ ├── reactivity-test.ts
│ │ │ ├── setup-test.ts
│ │ │ ├── tsx-test.tsx
│ │ │ └── watch-test.ts
│ │ └── vue-test.ts
│ ├── tsconfig.json
│ ├── typings.json
│ ├── umd.d.ts
│ ├── v3-component-options.d.ts
│ ├── v3-component-props.d.ts
│ ├── v3-component-public-instance.d.ts
│ ├── v3-define-async-component.d.ts
│ ├── v3-define-component.d.ts
│ ├── v3-directive.d.ts
│ ├── v3-manual-apis.d.ts
│ ├── v3-setup-context.d.ts
│ ├── v3-setup-helpers.d.ts
│ ├── vnode.d.ts
│ └── vue.d.ts
└── vitest.config.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
================================================
FILE: .git-blame-ignore-revs
================================================
# chore: move to typescript
af9fc2bcff31d5baa413039818a9b3e011deccaf
# workflow: remove eslint, apply prettier
72aed6a149b94b5b929fb47370a7a6d4cb7491c5
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Code of Conduct
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free experience for everyone, regardless of the level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
This Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
================================================
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:
``` js
/^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{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**:
```
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
```
The **header** is mandatory and the **scope** of the header is optional.
### Revert
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
### Type
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.
### Scope
The scope could be anything specifying the place of the commit change. For example `core`, `compiler`, `ssr`, `v-model`, `transition` etc...
### Subject
The subject contains a succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
* don't capitalize the first letter
* no dot (.) at the end
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
### Footer
The footer should contain any information about **Breaking Changes** and is also the place to
reference GitHub issues that this commit **Closes**.
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Vue.js Contributing Guide
Hi! I'm really excited that you are interested in contributing to Vue.js. Before submitting your contribution, please make sure to take a moment and read through the following guidelines:
- [Code of Conduct](https://github.com/vuejs/vue/blob/dev/.github/CODE_OF_CONDUCT.md)
- [Issue Reporting Guidelines](#issue-reporting-guidelines)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Development Setup](#development-setup)
- [Project Structure](#project-structure)
## Issue Reporting Guidelines
- Always use [https://new-issue.vuejs.org/](https://new-issue.vuejs.org/) to create new issues.
## Pull Request Guidelines
- The `master` branch is just a snapshot of the latest stable release. All development should be done in dedicated branches. **Do not submit PRs against the `master` branch.**
- Checkout a topic branch from the relevant branch, e.g. `dev`, and merge back against that branch.
- Work in the `src` folder and **DO NOT** checkin `dist` in the commits.
- It's OK to have multiple small commits as you work on the PR - GitHub will automatically squash it before merging.
- Make sure `npm test` passes. (see [development setup](#development-setup))
- If adding a new feature:
- Add accompanying test case.
- Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
- If fixing bug:
- If you are resolving a special issue, add `(fix #xxxx[,#xxxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `update entities encoding/decoding (fix #3899)`.
- Provide a detailed description of the bug in the PR. Live demo preferred.
- Add appropriate test coverage if applicable.
## Development Setup
You will need [Node.js](https://nodejs.org) **version 18+** and [pnpm](https://pnpm.io/) **version 8+**.
After cloning the repo, run:
```bash
$ pnpm i # install the dependencies of the project
```
### Committing Changes
Commit messages should follow the [commit message convention](./COMMIT_CONVENTION.md) so that changelogs can be automatically generated. Commit messages will be automatically validated upon commit. If you are not familiar with the commit message convention, you can use `npm run commit` instead of `git commit`, which provides an interactive CLI for generating proper commit messages.
### Commonly used NPM scripts
```bash
# watch and auto re-build dist/vue.js
$ npm run dev
# run unit tests
$ npm run test:unit
# run specific tests in watch mode
$ npx vitest {test_file_name_pattern_to_match}
# build all dist files, including npm packages
$ npm run build
# run the full test suite, including unit/e2e/type checking
$ npm test
```
There are some other scripts available in the `scripts` section of the `package.json` file.
The default test script will do the following: lint with ESLint -> type check with Flow -> unit tests with coverage -> e2e tests. **Please make sure to have this pass successfully before submitting a PR.** Although the same tests will be run against your PR on the CI server, it is better to have it working locally.
## Project Structure
- **`scripts`**: contains build-related scripts and configuration files. Usually, you don't need to touch them. However, it would be helpful to familiarize yourself with the following files:
- `scripts/alias.js`: module import aliases used across all source code and tests.
- `scripts/config.js`: contains the build configurations for all files found in `dist/`. Check this file if you want to find out the entry source file for a dist file.
- **`dist`**: contains built files for distribution. Note this directory is only updated when a release happens; they do not reflect the latest changes in development branches.
See [dist/README.md](https://github.com/vuejs/vue/blob/dev/dist/README.md) for more details on dist files.
- **`types`**: contains public types published to npm (note the types shipped here could be different from `src/types`). These were hand-authored before we moved the codebase from Flow to TypeScript. To ensure backwards compatibility, we keep using these manually authored types.
Types for new features added in 2.7 (Composition API) are auto-generated from source code as `types/v3-generated.d.ts` and re-exported from `types/index.d.ts`.
- **`packages`**:
- `vue-server-renderer` and `vue-template-compiler` are distributed as separate NPM packages. They are automatically generated from the source code and always have the same version with the main `vue` package.
- `compiler-sfc` is an internal package that is distributed as part of the main `vue` package. It's aliased and can be imported as `vue/compiler-sfc` similar to Vue 3.
- **`test`**: contains all tests. The unit tests are written with [Jasmine](http://jasmine.github.io/2.3/introduction.html) and run with [Karma](http://karma-runner.github.io/0.13/index.html). The e2e tests are written for and run with [Nightwatch.js](http://nightwatchjs.org/).
- **`src`**: contains the source code. The codebase is written in ES2015 with [Flow](https://flowtype.org/) type annotations.
- **`compiler`**: contains code for the template-to-render-function compiler.
The compiler consists of a parser (converts template strings to element ASTs), an optimizer (detects static trees for vdom render optimization), and a code generator (generate render function code from element ASTs). Note that codegen directly generates code strings from the element AST - it's done this way for smaller code size because the compiler is shipped to the browser in the standalone build.
- **`core`**: contains universal, platform-agnostic runtime code.
The Vue 2.0 core is platform-agnostic. That is, the code inside `core` is able to be run in any JavaScript environment, be it the browser, Node.js, or an embedded JavaScript runtime in native applications.
- **`observer`**: contains code related to the reactivity system.
- **`vdom`**: contains code related to vdom element creation and patching.
- **`instance`**: contains Vue instance constructor and prototype methods.
- **`global-api`**: contains Vue global api.
- **`components`**: contains universal abstract components.
- **`server`**: contains code related to server-side rendering.
- **`platforms`**: contains platform-specific code.
Entry files for dist builds are located in their respective platform directory.
Each platform module contains three parts: `compiler`, `runtime` and `server`, corresponding to the three directories above. Each part contains platform-specific modules/utilities which are imported and injected to the core counterparts in platform-specific entry files. For example, the code implementing the logic behind `v-bind:class` is in `platforms/web/runtime/modules/class.js` - which is imported in `platforms/web/entry-runtime.ts` and used to create the browser-specific vdom patching function.
- **`sfc`**: contains single-file component (`*.vue` files) parsing logic. This is used in the `vue-template-compiler` package.
- **`shared`**: contains utilities shared across the entire codebase.
- **`types`**: contains type declarations added when we ported the codebase from Flow to TypeScript. These types should be considered internal - they care less about type inference for end-user scenarios and prioritize working with internal source code.
## Financial Contribution
As a pure community-driven project without major corporate backing, we also welcome financial contributions via GitHub Sponsors and OpenCollective. Please consult the [Sponsor Page](https://vuejs.org/sponsor/) for more details.
## Credits
Thank you to all the people who have already contributed to Vue.js!
<a href="https://github.com/vuejs/vue/graphs/contributors"><img src="https://opencollective.com/vuejs/contributors.svg?width=890" /></a>
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [yyx990803, posva]
patreon: evanyou
open_collective: vuejs
ko_fi: # Replace with a single Ko-fi username
tidelift: npm/vue
custom: # Replace with a single custom sponsorship URL
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Vue 2 has reached EOL!
url: https://v2.vuejs.org/eol/
about: Vue 2 has reached EOL and is no longer actively maintained. Click the link on the right for more details.
- name: Vue 2 NES by HeroDevs
url: https://www.herodevs.com/support/nes-vue?utm_source=vuejs-github&utm_medium=issue-form
about: Learn more about Vue 2 NES if you have security or compliance requirements for continued Vue 2 usage.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Please make sure to read the Pull Request Guidelines:
https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#pull-request-guidelines
-->
<!-- PULL REQUEST TEMPLATE -->
<!-- (Update "[ ]" to "[x]" to check a box) -->
**What kind of change does this PR introduce?** (check at least one)
- [ ] Bugfix
- [ ] Feature
- [ ] Code style update
- [ ] Refactor
- [ ] Build-related changes
- [ ] Other, please describe:
**Does this PR introduce a breaking change?** (check one)
- [ ] Yes
- [ ] No
If yes, please describe the impact and migration path for existing applications:
**The PR fulfills these requirements:**
- [ ] It's submitted to the `main` branch for v2.x (or to a previous version branch)
- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number)
- [ ] All tests are passing: https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#development-setup
- [ ] New/updated tests are included
If adding a **new feature**, the PR's description includes:
- [ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)
**Other information:**
================================================
FILE: .github/workflows/ci.yml
================================================
name: 'ci'
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
unit-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node version to 18
uses: actions/setup-node@v2
with:
node-version: 18
cache: 'pnpm'
- run: pnpm install
- name: Run unit tests
run: pnpm run test:unit
ssr-sfc-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node version to 18
uses: actions/setup-node@v2
with:
node-version: 18
cache: 'pnpm'
- run: pnpm install
- name: Run SSR tests
run: pnpm run test:ssr
- name: Run compiler-sfc tests
run: pnpm run test:sfc
e2e-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node version to 18
uses: actions/setup-node@v2
with:
node-version: 18
cache: 'pnpm'
- run: pnpm install
- name: Run e2e tests
run: pnpm run test:e2e
- name: Run transition tests
run: pnpm run test:transition
type-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node version to 18
uses: actions/setup-node@v2
with:
node-version: 18
cache: 'pnpm'
- run: pnpm install
- name: Run srouce type check
run: pnpm run ts-check
- name: Run type declaration tests
run: pnpm run test:types
================================================
FILE: .github/workflows/release-tag.yml
================================================
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
name: Create Release
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
- name: Create Release for Tag
id: release_tag
uses: yyx990803/release-tag@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
body: |
Please refer to [CHANGELOG.md](https://github.com/vuejs/vue/blob/main/CHANGELOG.md) for details.
================================================
FILE: .gitignore
================================================
.DS_Store
node_modules
*.log
explorations
TODOs.md
RELEASE_NOTE*.md
packages/server-renderer/basic.js
packages/server-renderer/build.dev.js
packages/server-renderer/build.prod.js
packages/server-renderer/server-plugin.js
packages/server-renderer/client-plugin.js
packages/template-compiler/build.js
packages/template-compiler/browser.js
.vscode
dist
temp
types/v3-generated.d.ts
================================================
FILE: .prettierrc
================================================
semi: false
singleQuote: true
printWidth: 80
trailingComma: 'none'
arrowParens: 'avoid'
================================================
FILE: BACKERS.md
================================================
<h1 align="center">Sponsors & Backers</h1>
Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of the awesome sponsors and backers listed in this file. If you'd like to join them, please consider [ sponsor Vue's development](https://vuejs.org/sponsor/).
<p align="center">
<a target="_blank" href="https://sponsors.vuejs.org/backers.svg">
<img alt="sponsors" src="https://sponsors.vuejs.org/backers.svg">
</a>
</p>
================================================
FILE: CHANGELOG.md
================================================
## [2.7.16 Swan Song](https://github.com/vuejs/vue/compare/v2.7.16-beta.2...v2.7.16) (2023-12-24)
### Bug Fixes
* **lifecycle:** ensure component effect scopes are disconnected ([56ce7f8](https://github.com/vuejs/vue/commit/56ce7f8c573116ed6683149206cf35c987249d42)), closes [#13134](https://github.com/vuejs/vue/issues/13134)
## [2.7.16-beta.2](https://github.com/vuejs/vue/compare/v2.7.16-beta.1...v2.7.16-beta.2) (2023-12-14)
### Bug Fixes
* account for nested render calls ([db9c566](https://github.com/vuejs/vue/commit/db9c566032da0ec5cd758a3e8525e9733874c1e5)), closes [#13131](https://github.com/vuejs/vue/issues/13131)
* **types:** export more types for v3 alignment (jsx / component options) ([895669f](https://github.com/vuejs/vue/commit/895669ffa01f8075a326308caa8ad6a5f69a1919)), closes [#13078](https://github.com/vuejs/vue/issues/13078) [#13128](https://github.com/vuejs/vue/issues/13128)
## [2.7.16-beta.1](https://github.com/vuejs/vue/compare/v2.7.15...v2.7.16-beta.1) (2023-12-08)
### Bug Fixes
* **compiler-sfc:** check template `ref` usage, ([#12985](https://github.com/vuejs/vue/issues/12985)) ([83d9535](https://github.com/vuejs/vue/commit/83d95351a9f809311d624fc3398e7f6829b72447)), closes [#12984](https://github.com/vuejs/vue/issues/12984)
* **compiler-sfc:** fix rewriteDefault edge cases ([25f97a5](https://github.com/vuejs/vue/commit/25f97a5033187372e7b8c591c79336197ee5c833)), closes [#13060](https://github.com/vuejs/vue/issues/13060) [#12892](https://github.com/vuejs/vue/issues/12892) [#12906](https://github.com/vuejs/vue/issues/12906)
* **keep-alive:** fix keep-alive memory leak ([2632249](https://github.com/vuejs/vue/commit/2632249925e632e56f6dfc8fdbcf682c82e4081b)), closes [#12827](https://github.com/vuejs/vue/issues/12827)
* **keep-alive:** fix memory leak without breaking transition tests ([e0747f4](https://github.com/vuejs/vue/commit/e0747f40a879b4000a1959d21377b51d1f1ed988))
* **props:** should not unwrap props that are raw refs ([08382f0](https://github.com/vuejs/vue/commit/08382f008016c3b3b93f84594266f2e191fee91d)), closes [#12930](https://github.com/vuejs/vue/issues/12930)
* **shallowReactive:** should track value if already reactive when set in shallowReactive ([0ad8e8d](https://github.com/vuejs/vue/commit/0ad8e8d94f3a3bf4429f25850c85a6bbb2b81364))
* **style:** always set new styles ([f5ef882](https://github.com/vuejs/vue/commit/f5ef882a781b8a62c9ca00e95006d07636567c8e)), closes [#12901](https://github.com/vuejs/vue/issues/12901) [#12946](https://github.com/vuejs/vue/issues/12946)
* **types:** fix shallowRef's return type ([#12979](https://github.com/vuejs/vue/issues/12979)) ([a174c29](https://github.com/vuejs/vue/commit/a174c29dab2cf655b06f7870e0ac5a78ef35ec8a)), closes [#12978](https://github.com/vuejs/vue/issues/12978)
* **types:** fix type augmentation and compiler-sfc types w/moduleResolution: bundler ([#13107](https://github.com/vuejs/vue/issues/13107)) ([de0b97b](https://github.com/vuejs/vue/commit/de0b97b3eadae120eda505b45df2de2115dcb6f0)), closes [#13106](https://github.com/vuejs/vue/issues/13106)
* **types:** provide types for built-in components ([3650c12](https://github.com/vuejs/vue/commit/3650c12f7d3a20f3155bc1fd2b068e84289e0d33)), closes [#13002](https://github.com/vuejs/vue/issues/13002)
* **types:** type VNodeChildren should allow type number ([#13067](https://github.com/vuejs/vue/issues/13067)) ([24fcf69](https://github.com/vuejs/vue/commit/24fcf69624a633d43dfc0aa5fa6b93d11de7fad5)), closes [#12973](https://github.com/vuejs/vue/issues/12973)
* **utils:** unwrap refs when stringifying values in template ([ae3e4b1](https://github.com/vuejs/vue/commit/ae3e4b1c706b8d61a4a312ca5d23441df021b4b4)), closes [#12884](https://github.com/vuejs/vue/issues/12884) [#12888](https://github.com/vuejs/vue/issues/12888)
* **watch:** new property addition should trigger deep watcher with getter ([6d857f5](https://github.com/vuejs/vue/commit/6d857f5bee275dc98106e3b2cbc7722f5ec0cfc0)), closes [#12967](https://github.com/vuejs/vue/issues/12967) [#12972](https://github.com/vuejs/vue/issues/12972)
## [2.7.15](https://github.com/vuejs/vue/compare/v2.7.14...v2.7.15) (2023-10-23)
### Bug Fixes
* **compiler-sfc:** add semicolon after `defineProps` statement ([#12879](https://github.com/vuejs/vue/issues/12879)) ([51fef2c](https://github.com/vuejs/vue/commit/51fef2ca69459c1175e105991f60511f1996e0c8))
* **compiler-sfc:** fix macro usage in multi-variable declaration ([#12873](https://github.com/vuejs/vue/issues/12873)) ([d27c128](https://github.com/vuejs/vue/commit/d27c128b7cb1640f3aa185a5ecdea4ff35763794))
* **compiler-sfc:** Optimize the value of emitIdentifier ([#12851](https://github.com/vuejs/vue/issues/12851)) ([bb59751](https://github.com/vuejs/vue/commit/bb59751dd4e45afcaafd607f22505a724b1ef841))
* **compiler-sfc:** Resolve object expression parsing errors in `v-on` ([#12862](https://github.com/vuejs/vue/issues/12862)) ([b8c8b3f](https://github.com/vuejs/vue/commit/b8c8b3fc7a211744fdabd237a1a986a1f80b7c43))
* **lifecycle:** scope might changed when call hook ([#13070](https://github.com/vuejs/vue/issues/13070)) ([74ca5a1](https://github.com/vuejs/vue/commit/74ca5a13ba12a31580f1567e7c6d789e96730e46))
* **patch:** clone insert hooks to avoid being mutated during iteration ([#12905](https://github.com/vuejs/vue/issues/12905)) ([c223634](https://github.com/vuejs/vue/commit/c22363425ae246ccbb8418342e94edfa270d93e5))
* **types/sfc:** improve the type inference using `withDefaults` ([#12872](https://github.com/vuejs/vue/issues/12872)) ([099401e](https://github.com/vuejs/vue/commit/099401e227fd5ed496ff615528d1a9b3b64d4fbf))
* **types:** correct serverPrefetch this type ([#13068](https://github.com/vuejs/vue/issues/13068)) ([67c1d26](https://github.com/vuejs/vue/commit/67c1d26cb0af3eb2db0a11fc7768a8299e7f7d58)), closes [#12488](https://github.com/vuejs/vue/issues/12488)
## [2.7.14](https://github.com/vuejs/vue/compare/v2.7.13...v2.7.14) (2022-11-09)
### Bug Fixes
* **compiler-sfc:** fix template usage check edge case for v-slot destructured default value ([#12842](https://github.com/vuejs/vue/issues/12842)) ([5e3d4e9](https://github.com/vuejs/vue/commit/5e3d4e90cdf92ec0a72bbb2bd44125f1faafae1d)), closes [#12841](https://github.com/vuejs/vue/issues/12841)
* **provide/inject:** do not mutate original provide options during merge ([d1899ca](https://github.com/vuejs/vue/commit/d1899caf688de961e63e7a0d56f806fc4a12efd9)), closes [#12854](https://github.com/vuejs/vue/issues/12854)
* **reactivity:** avoid using WeakMap for IE compatibility ([29b5f58](https://github.com/vuejs/vue/commit/29b5f588032600baae9854ac9a4105916a5aa648)), closes [#12837](https://github.com/vuejs/vue/issues/12837)
* **types:** fix spreading VNodeData in tsx ([#12789](https://github.com/vuejs/vue/issues/12789)) ([f7db7f3](https://github.com/vuejs/vue/commit/f7db7f361b6356591781b9f33abbb0d5b7f9b97c)), closes [#12778](https://github.com/vuejs/vue/issues/12778)
* **types:** stricter type condition for `EventHandlers` ([#12840](https://github.com/vuejs/vue/issues/12840)) ([0b3cf7d](https://github.com/vuejs/vue/commit/0b3cf7dda9ac605b2b9f799acacd2793e974f225)), closes [#12832](https://github.com/vuejs/vue/issues/12832)
## [2.7.13](https://github.com/vuejs/vue/compare/v2.7.12...v2.7.13) (2022-10-14)
### Bug Fixes
* **effectScope:** calling off() of a detached scope should not break currentScope ([800207c](https://github.com/vuejs/vue/commit/800207c473c7d6dfcdc883100a3d443fc5ad2e39)), closes [#12825](https://github.com/vuejs/vue/issues/12825)
* **types:** style attribute svg ([#12800](https://github.com/vuejs/vue/issues/12800)) ([8e26261](https://github.com/vuejs/vue/commit/8e262618cdc3251ca9630b17de4a000567ffb007))
* **watch:** avoid traversing objects that are marked non-reactive ([#12806](https://github.com/vuejs/vue/issues/12806)) ([5960f05](https://github.com/vuejs/vue/commit/5960f05c69099c174062b6672c7a21d717a3bccf))
## [2.7.12](https://github.com/vuejs/vue/compare/v2.7.11...v2.7.12) (2022-10-12)
### Reverts
* Revert "fix(setup): setup hook should be called before beforeCreate" ([e80cd09](https://github.com/vuejs/vue/commit/e80cd09fff570df57d608f8f5aaccee6d7f31917)), closes [#12802](https://github.com/vuejs/vue/issues/12802) [#12821](https://github.com/vuejs/vue/issues/12821) [#12822](https://github.com/vuejs/vue/issues/12822)
## [2.7.11](https://github.com/vuejs/vue/compare/v2.7.10...v2.7.11) (2022-10-11)
### Bug Fixes
* **build:** enforce LF line ending in built files ([738f4b3](https://github.com/vuejs/vue/commit/738f4b3c570dc3a1818924a203a9f8e4b1ec90f0)), closes [#12819](https://github.com/vuejs/vue/issues/12819)
* **compiler-sfc:** export parseComponent for compat with fork-ts-checker-webpack-plugin ([0d6d972](https://github.com/vuejs/vue/commit/0d6d972b32521fd18eb853b1073c0a19859a499a)), closes [#12719](https://github.com/vuejs/vue/issues/12719)
* **reactivity:** check skip first before checking ref when creating observer ([#12813](https://github.com/vuejs/vue/issues/12813)) ([5d26f81](https://github.com/vuejs/vue/commit/5d26f815c643d41e6ca6f29329593223b981fc24)), closes [#12812](https://github.com/vuejs/vue/issues/12812)
* **reactivity:** use WeakMap for proxy/raw checks, compat with non-extensible objects ([4a0d88e](https://github.com/vuejs/vue/commit/4a0d88e46e4180edc7f22e36c25df3f8ac5d60d2)), closes [#12799](https://github.com/vuejs/vue/issues/12799) [#12798](https://github.com/vuejs/vue/issues/12798)
* **setup:** setup hook should be called before beforeCreate ([e1342df](https://github.com/vuejs/vue/commit/e1342df7847a51c75192fec74e94378178e046b0)), closes [#12802](https://github.com/vuejs/vue/issues/12802)
* **sfc:** prune returned bindings for non-TS as well ([fb13930](https://github.com/vuejs/vue/commit/fb1393009660b38046b1f6dfb532b481cc53b3b7)), closes [#12765](https://github.com/vuejs/vue/issues/12765)
* **sfc:** remove sfc scoped deep syntax deprecation warnings ([2f335b2](https://github.com/vuejs/vue/commit/2f335b2f9d09b962f40e38740826d444e4fff073))
* **types:** fix error with options watch ([#12779](https://github.com/vuejs/vue/issues/12779)) ([bc5b92a](https://github.com/vuejs/vue/commit/bc5b92adde147436f2adb25e457f0c967829467f)), closes [#12780](https://github.com/vuejs/vue/issues/12780)
* **types:** support Ref and function types in tsx ref attribute ([#12759](https://github.com/vuejs/vue/issues/12759)) ([87f69aa](https://github.com/vuejs/vue/commit/87f69aa26f195390b948fbb0ff62cf954b58c82c)), closes [#12758](https://github.com/vuejs/vue/issues/12758)
* **types:** vue 3 directive type compatibility ([#12792](https://github.com/vuejs/vue/issues/12792)) ([27eed82](https://github.com/vuejs/vue/commit/27eed829ccf9978a63b8cd989ff4c03897276bc2))
### Performance Improvements
* improve unsub perf for deps with massive amount of subs ([8880b55](https://github.com/vuejs/vue/commit/8880b55d52f8d873f79ef67436217c8752cddef5)), closes [#12696](https://github.com/vuejs/vue/issues/12696)
## [2.7.10](https://github.com/vuejs/vue/compare/v2.7.9...v2.7.10) (2022-08-23)
### Bug Fixes
* **compiler-sfc:** avoid deindent when lang is jsx/tsx ([46ca7bc](https://github.com/vuejs/vue/commit/46ca7bcddc06c50796ccff82d8c45693f1f14f47)), closes [#12755](https://github.com/vuejs/vue/issues/12755)
* fix parent of multi-nested HOC $el not updating ([#12757](https://github.com/vuejs/vue/issues/12757)) ([e0b26c4](https://github.com/vuejs/vue/commit/e0b26c483a1ba407a818b1fcba1a439df24e84a8)), closes [#12589](https://github.com/vuejs/vue/issues/12589)
* **types:** Add missing type parameter constraints ([#12754](https://github.com/vuejs/vue/issues/12754)) ([810f6d1](https://github.com/vuejs/vue/commit/810f6d12edea47cde7f39eaf7ec3ae1b7300d40c))
## [2.7.9](https://github.com/vuejs/vue/compare/v2.7.8...v2.7.9) (2022-08-19)
### Bug Fixes
* **compiler-sfc:** allow full hostnames in asset url base ([#12732](https://github.com/vuejs/vue/issues/12732)) ([5c742eb](https://github.com/vuejs/vue/commit/5c742eb2e0d8dad268fb29ed4f92d286b5e0f4b5)), closes [#12731](https://github.com/vuejs/vue/issues/12731)
* **compiler-sfc:** rewriteDefault for class with decorators ([#12747](https://github.com/vuejs/vue/issues/12747)) ([5221d4d](https://github.com/vuejs/vue/commit/5221d4d3b6049c87d196d99dbb64bcd3f3b07279))
* directives shorthand normalize error ([#12744](https://github.com/vuejs/vue/issues/12744)) ([2263948](https://github.com/vuejs/vue/commit/2263948c249e7486403bc5880712e6d9fd15c17f)), closes [#12743](https://github.com/vuejs/vue/issues/12743)
* ensure render watcher of manually created instance is correctly tracked in owner scope ([bd89ce5](https://github.com/vuejs/vue/commit/bd89ce53a9de417a9372630bb5d433a40acc1a53)), closes [#12701](https://github.com/vuejs/vue/issues/12701)
* fix effect scope tracking for manually created instances ([7161176](https://github.com/vuejs/vue/commit/7161176cd0dff10d65ab58e266018aff2660610f)), closes [#12705](https://github.com/vuejs/vue/issues/12705)
* **ssr:** fix on-component directives rendering ([#12661](https://github.com/vuejs/vue/issues/12661)) ([165a14a](https://github.com/vuejs/vue/commit/165a14a6c6c406176037465d2961259c5c980399)), closes [#10733](https://github.com/vuejs/vue/issues/10733)
* **types:** allow attaching unknown options to defined component ([b4bf4c5](https://github.com/vuejs/vue/commit/b4bf4c52ad31e02307cfd4d643dc5610c893e3ba)), closes [#12742](https://github.com/vuejs/vue/issues/12742)
* **types:** fix missing error for accessing undefined instance properties ([8521f9d](https://github.com/vuejs/vue/commit/8521f9d3f63d26bde99b747f0cb14d0ac5ba5971)), closes [#12718](https://github.com/vuejs/vue/issues/12718)
* **types:** fix options suggestions when using defineComponent ([4b37b56](https://github.com/vuejs/vue/commit/4b37b568c7c3fd238aa61fcc956f882223f8e87f)), closes [#12736](https://github.com/vuejs/vue/issues/12736)
* **types:** Make SetupBindings optional on ExtendedVue and CombinedVueInstance ([#12727](https://github.com/vuejs/vue/issues/12727)) ([00458cd](https://github.com/vuejs/vue/commit/00458cd38d209410d3c675729230a42a0a34a4b9)), closes [#12726](https://github.com/vuejs/vue/issues/12726) [#12717](https://github.com/vuejs/vue/issues/12717)
* **watch:** avoid pre watcher firing on unmount ([f0057b1](https://github.com/vuejs/vue/commit/f0057b101e6451d5095cdb7fd6308fd31ac0450c)), closes [#12703](https://github.com/vuejs/vue/issues/12703)
### Features
* **types:** enhance type for onErrorCaptured ([#12735](https://github.com/vuejs/vue/issues/12735)) ([bba6b3d](https://github.com/vuejs/vue/commit/bba6b3d6b4e3e26d28abbf20e74ec2f3e64f1a92))
* **types:** export DefineComponent ([80d1baf](https://github.com/vuejs/vue/commit/80d1baf92050da411fb1bfe714401c498001dd36)), closes [#12748](https://github.com/vuejs/vue/issues/12748)
* **types:** support mixins inference for new Vue() ([#12737](https://github.com/vuejs/vue/issues/12737)) ([89a6b5e](https://github.com/vuejs/vue/commit/89a6b5e8658a6e3ae2cf649829901784ac9deb3c)), closes [#12730](https://github.com/vuejs/vue/issues/12730)
## [2.7.8](https://github.com/vuejs/vue/compare/v2.7.7...v2.7.8) (2022-07-22)
### Bug Fixes
* **reactivity:** fix shallowReactive nested ref setting edge cases ([2af751b](https://github.com/vuejs/vue/commit/2af751b6efa0cd9cb817ed96af41948e92599837)), closes [#12688](https://github.com/vuejs/vue/issues/12688)
* **sfc:** align `<script setup>` component resolution edge case with v3 ([#12687](https://github.com/vuejs/vue/issues/12687)) ([a695c5a](https://github.com/vuejs/vue/commit/a695c5a6df415101a5f728e87dbe087b4fbb0b7b)), closes [#12685](https://github.com/vuejs/vue/issues/12685)
* **types:** avoid circular type inference between v2 and v3 instance types ([fabc1cf](https://github.com/vuejs/vue/commit/fabc1cf89f55dd7f3f95fa7890d2540f40e9f845)), closes [#12683](https://github.com/vuejs/vue/issues/12683)
* **types:** export `defineAsyncComponent` type ([#12684](https://github.com/vuejs/vue/issues/12684)) ([ba7dd2c](https://github.com/vuejs/vue/commit/ba7dd2c4ed62dba30bde7c1d521f7bfbab529102))
### Features
* **setup:** support listeners on setup context + `useListeners()` helper ([adf3ac8](https://github.com/vuejs/vue/commit/adf3ac8adcf204dcc34b851da6ab4d914bd11cf9))
## [2.7.7](https://github.com/vuejs/vue/compare/v2.7.6...v2.7.7) (2022-07-16)
### Bug Fixes
* **codegen:** script setup should not attempt to resolve native elements as component ([e8d3a7d](https://github.com/vuejs/vue/commit/e8d3a7d7a17f9e66d592fb1ddc4a603af9958d36)), closes [#12674](https://github.com/vuejs/vue/issues/12674)
* **inject:** fix edge case of provided with async-mutated getters ([ea5d0f3](https://github.com/vuejs/vue/commit/ea5d0f3fbfd983cb0275457cbcef344f926381ea)), closes [#12667](https://github.com/vuejs/vue/issues/12667)
* **setup:** ensure setup context slots can be accessed immediately ([67760f8](https://github.com/vuejs/vue/commit/67760f8d30778f58afeada3589d4ac4493329ad5)), closes [#12672](https://github.com/vuejs/vue/issues/12672)
* **types:** vue.d.ts should use relative import to v3-component-public-instance ([#12668](https://github.com/vuejs/vue/issues/12668)) ([46ec648](https://github.com/vuejs/vue/commit/46ec64869479393f95b6abda7a4adecf19867d06)), closes [#12666](https://github.com/vuejs/vue/issues/12666)
* **watch:** fix queueing multiple post watchers ([25ffdb6](https://github.com/vuejs/vue/commit/25ffdb62d22fe8688aca144d945671d5c82a8887)), closes [#12664](https://github.com/vuejs/vue/issues/12664)
## [2.7.6](https://github.com/vuejs/vue/compare/v2.7.5...v2.7.6) (2022-07-15)
### Bug Fixes
* **types:** $refs can also contain ComponentPublicInstance ([#12659](https://github.com/vuejs/vue/issues/12659)) ([fffbb9e](https://github.com/vuejs/vue/commit/fffbb9e856de5e4b3053a6b4d01d1404bfb6f85e))
* **types:** fix $children and $root instance types ([52a5979](https://github.com/vuejs/vue/commit/52a59790a5b6e16c9f8cc737fcd784413dda282d)), closes [#12655](https://github.com/vuejs/vue/issues/12655)
* **types:** fix missing expose() type on setup context ([e0a9546](https://github.com/vuejs/vue/commit/e0a9546ef32fa4bbfc4bede3002b2d6a5be8cf72)), closes [#12660](https://github.com/vuejs/vue/issues/12660)
## [2.7.5](https://github.com/vuejs/vue/compare/v2.7.4...v2.7.5) (2022-07-13)
### Bug Fixes
* add missing export from `vue.runtime.mjs` ([#12648](https://github.com/vuejs/vue/issues/12648)) ([08fb4a2](https://github.com/vuejs/vue/commit/08fb4a222c016c79af77ab96817d2ed9b7abbd80))
* detect property add/deletion on reactive objects from setup when used in templates ([a6e7498](https://github.com/vuejs/vue/commit/a6e74985cf2eab6f16d03a8eda3bf3fc7950127c))
* do not set currentInstance in beforeCreate ([0825d30](https://github.com/vuejs/vue/commit/0825d3087f9f39435838329c16adc2a7bfccd51d)), closes [#12636](https://github.com/vuejs/vue/issues/12636)
* **reactivity:** fix watch behavior inconsistency + deep ref shallow check ([98fb01c](https://github.com/vuejs/vue/commit/98fb01c79c41c3b9f9134f0abb77d233ce4e5b44)), closes [#12643](https://github.com/vuejs/vue/issues/12643)
* **sfc:** fix sfc name inference type check ([04b4703](https://github.com/vuejs/vue/commit/04b4703de72b1c1e686a3aa81d5b5b56799dabab)), closes [#12637](https://github.com/vuejs/vue/issues/12637)
* **types:** support Vue interface augmentations in defineComponent ([005e52d](https://github.com/vuejs/vue/commit/005e52d0b6f1a5bf9679789c5c4b90afd442d86b)), closes [#12642](https://github.com/vuejs/vue/issues/12642)
* **watch:** fix deep watch for structures containing raw refs ([1a2c3c2](https://github.com/vuejs/vue/commit/1a2c3c2d77ba96ef496f4c86329b7798026511ae)), closes [#12652](https://github.com/vuejs/vue/issues/12652)
## [2.7.4](https://github.com/vuejs/vue/compare/v2.7.3...v2.7.4) (2022-07-08)
### Bug Fixes
* **build:** fix mjs dual package hazard ([012e10c](https://github.com/vuejs/vue/commit/012e10c9ca13fcbc9bf67bf2835883edcd4faace)), closes [#12626](https://github.com/vuejs/vue/issues/12626)
* **compiler-sfc:** use safer deindent default for compatibility with previous behavior ([b70a258](https://github.com/vuejs/vue/commit/b70a2585fcd102def2bb5a3b2b589edf5311122d))
* pass element creation helper to static render fns for functional components ([dc8a68e](https://github.com/vuejs/vue/commit/dc8a68e8c6c4e8ed4fdde094004fca272d71ef2e)), closes [#12625](https://github.com/vuejs/vue/issues/12625)
* **ssr/reactivity:** fix array setting error at created in ssr [[#12632](https://github.com/vuejs/vue/issues/12632)] ([#12633](https://github.com/vuejs/vue/issues/12633)) ([ca7daef](https://github.com/vuejs/vue/commit/ca7daefaa15a192046d22d060220cd595a6a275f))
* **types:** fix missing instance properties on defineComponent this ([f8de4ca](https://github.com/vuejs/vue/commit/f8de4ca9d458a03378e848b1e62d6507f7124871)), closes [#12628](https://github.com/vuejs/vue/issues/12628#issuecomment-1177258223)
* **types:** fix this.$slots type for defineComponent ([d3add06](https://github.com/vuejs/vue/commit/d3add06e6e18a78a3745240632fecd076eb49d19))
* **types:** fix type inference when using components option ([1d5a411](https://github.com/vuejs/vue/commit/1d5a411c1e3aa062aa5080432cf3f852f1583ed2))
* **types:** global component registration type compat w/ defineComponent ([26ff4bc](https://github.com/vuejs/vue/commit/26ff4bc0ed75d8bf7921523a2e546df24ec81d8f)), closes [#12622](https://github.com/vuejs/vue/issues/12622)
* **watch:** fix watchers triggered in mounted hook ([8904ca7](https://github.com/vuejs/vue/commit/8904ca77c2d675707728e6a50decd3ef3370a428)), closes [#12624](https://github.com/vuejs/vue/issues/12624)
### Features
* defineAsyncComponent ([9d12106](https://github.com/vuejs/vue/commit/9d12106e211e0cbf33f9066606a8ff29f8cc8e8d)), closes [#12608](https://github.com/vuejs/vue/issues/12608)
* support functional components in defineComponent ([559600f](https://github.com/vuejs/vue/commit/559600f13d312915c0a1b54ed4edd41327dbedd6)), closes [#12619](https://github.com/vuejs/vue/issues/12619)
## [2.7.3](https://github.com/vuejs/vue/compare/v2.7.2...v2.7.3) (2022-07-06)
### Bug Fixes
* add renderTracked/Triggered merge strategy ([#12616](https://github.com/vuejs/vue/issues/12616)) ([6d1dbee](https://github.com/vuejs/vue/commit/6d1dbeee7ebd27a87c37393d8cabf2ef8253f3a4))
* **ssr/reactivity:** fix composition api behavior in SSR ([360272b](https://github.com/vuejs/vue/commit/360272bde32e93b1a8d611e4b97af1300c38e7a3)), closes [#12615](https://github.com/vuejs/vue/issues/12615)
* **types:** allow slot attribute ([94ccca2](https://github.com/vuejs/vue/commit/94ccca207c9c5fc0fc8985e0c103d8a1c9cff412)), closes [#12617](https://github.com/vuejs/vue/issues/12617)
## [2.7.2](https://github.com/vuejs/vue/compare/v2.7.1...v2.7.2) (2022-07-05)
### Bug Fixes
* **compiler-sfc:** preserve old deindent behavior for pug ([1294385](https://github.com/vuejs/vue/commit/1294385300742acbea5f05c166685bd4a1fab35a)), closes [#12611](https://github.com/vuejs/vue/issues/12611)
### Features
* allow passing directive definition directly to h() ([#12590](https://github.com/vuejs/vue/issues/12590)) ([d45bbea](https://github.com/vuejs/vue/commit/d45bbeac2710a5cf9185377abc2342295f0bb4e2))
* **types:** define component improvements ([#12612](https://github.com/vuejs/vue/issues/12612)) ([fb93c1b](https://github.com/vuejs/vue/commit/fb93c1be77f12ea1375c5e8b47d168e4d5ceb7be))
## [2.7.1](https://github.com/vuejs/vue/compare/v2.7.0...v2.7.1) (2022-07-04)
### Bug Fixes
* **compiler-sfc:** fix template usage check edge case for v-on statements ([caceece](https://github.com/vuejs/vue/commit/caceece8fa9b75c4832a91d3af0bc2958166d3f2)), closes [#12591](https://github.com/vuejs/vue/issues/12591)
* export proxyRefs ([e452e9d](https://github.com/vuejs/vue/commit/e452e9d4368aaba173e8c942e5fd82f999cf65ae)), closes [#12600](https://github.com/vuejs/vue/issues/12600)
* fix NaN comparison on state change ([ff5acb1](https://github.com/vuejs/vue/commit/ff5acb12cfa64f975f216a55aafa976b07052665)), closes [#12595](https://github.com/vuejs/vue/issues/12595)
* **reactivity:** shallowReactive should not unwrap refs ([#12605](https://github.com/vuejs/vue/issues/12605)) ([15b9b9b](https://github.com/vuejs/vue/commit/15b9b9b19dd3ae7cce5dcd89739e5cf719523fc5)), closes [#12597](https://github.com/vuejs/vue/issues/12597)
# [2.7.0](https://github.com/vuejs/vue/compare/v2.7.0-beta.8...v2.7.0) (2022-07-01)
## Backported Features
- [Composition API](https://vuejs.org/guide/extras/composition-api-faq.html)
- SFC [`<script setup>`](https://vuejs.org/api/sfc-script-setup.html)
- SFC [CSS v-bind](https://vuejs.org/api/sfc-css-features.html#v-bind-in-css)
In addition, the following APIs are also supported:
- `defineComponent()` with improved type inference (compared to `Vue.extend`)
- `h()`, `useSlot()`, `useAttrs()`, `useCssModules()`
- `set()`, `del()` and `nextTick()` are also provided as named exports in ESM builds.
- The `emits` option is also supported, but only for type-checking purposes (does not affect runtime behavior)
2.7 also supports using ESNext syntax in template expressions. When using a build system, the compiled template render function will go through the same loaders / plugins configured for normal JavaScript. This means if you have configured Babel for `.js` files, it will also apply to the expressions in your SFC templates.
### Notes on API exposure
- In ESM builds, these APIs are provided as named exports (and named exports only):
```js
import Vue, { ref } from 'vue'
Vue.ref // undefined, use named export instead
```
- In UMD and CJS builds, these APIs are exposed as properties on the global `Vue` object.
- When bundling with CJS builds externalized, bundlers should be able to handle ESM interop when externalizing CJS builds.
### Behavior Differences from Vue 3
The Composition API is backported using Vue 2's getter/setter-based reactivity system to ensure browser compatibility. This means there are some important behavior differences from Vue 3's proxy-based system:
- All [Vue 2 change detection caveats](https://v2.vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats) still apply.
- `reactive()`, `ref()`, and `shallowReactive()` will directly convert original objects instead of creating proxies. This means:
```js
// true in 2.7, false in 3.x
reactive(foo) === foo
```
- `readonly()` **does** create a separate object, but it won't track newly added properties and does not work on arrays.
- Avoid using arrays as root values in `reactive()` because without property access the array's mutation won't be tracked (this will result in a warning).
- Reactivity APIs ignore properties with symbol keys.
In addition, the following features are explicitly **NOT** ported:
- ❌ `createApp()` (Vue 2 doesn't have isolated app scope)
- ❌ Top-level `await` in `<script setup>` (Vue 2 does not support async component initialization)
- ❌ TypeScript syntax in template expressions (incompatible w/ Vue 2 parser)
- ❌ Reactivity transform (still experimental)
- ❌ `expose` option is not supported for options components (but `defineExpose()` is supported in `<script setup>`).
### TypeScript Changes
- `defineComponent` provides improved type inference similar to that of Vue 3. Note the type of `this` inside `defineComponent()` is not interoperable with `this` from `Vue.extend()`.
- Similar to Vue 3, TSX support is now built-in. If your project previously had manual JSX type shims, make sure to remove them.
## Upgrade Guide
### Vue CLI / webpack
1. Upgrade local `@vue/cli-xxx` dependencies the latest version in your major version range (if applicable):
- `~4.5.18` for v4
- `~5.0.6` for v5
2. Upgrade `vue` to `^2.7.0`. You can also remove `vue-template-compiler` from the dependencies - it is no longer needed in 2.7.
Note: if you are using `@vue/test-utils`, you may need to keep it in the dependencies for now, but this requirement will also be lifted in a new release of test utils.
3. Check your package manager lockfile to ensure the following dependencies meet the version requirements. They may be transitive dependencies not listed in `package.json`.
- `vue-loader`: `^15.10.0`
- `vue-demi`: `^0.13.1`
If not, you will need to remove `node_modules` and the lockfile and perform a fresh install to ensure they are bumped to the latest version.
4. If you were previously using [`@vue/composition-api`](https://github.com/vuejs/composition-api), update imports from it to `vue` instead. Note that some APIs exported by the plugin, e.g. `createApp`, are not ported in 2.7.
5. Update `eslint-plugin-vue` to latest version (9+) if you run into unused variable lint errors when using `<script setup>`.
6. The SFC compiler for 2.7 now uses PostCSS 8 (upgraded from 7). PostCSS 8 should be backwards compatible with most plugins, but the upgrade **may** cause issues if you were previously using a custom PostCSS plugin that can only work with PostCSS 7. In such cases, you will need to upgrade the relevant plugins to their PostCSS 8 compatible versions.
### Vite
2.7 support for Vite is provided via a new plugin: [@vitejs/plugin-vue2](https://github.com/vitejs/vite-plugin-vue2). This new plugin requires Vue 2.7 or above and supersedes the existing [vite-plugin-vue2](https://github.com/underfin/vite-plugin-vue2).
Note that the new plugin does not handle Vue-specific JSX / TSX transform, which is intentional. Vue 2 JSX / TSX transform should be handled in a separate, dedicated plugin, which will be provided soon.
### Volar Compatibility
2.7 ships improved type definitions so it is no longer necessary to install `@vue/runtime-dom` just for Volar template type inference support. All you need now is the following config in `tsconfig.json`:
```json
{
// ...
"vueCompilerOptions": {
"target": 2.7
}
}
```
### Devtools Support
Vue Devtools 6.2.0 has added support for inspecting 2.7 Composition API state, but the extensions may still need a few days to go through review on respective publishing platforms.
### Bug Fixes
* **sfc:** only include legacy decorator parser plugin when new plugin is not used ([326d24a](https://github.com/vuejs/vue/commit/326d24a4e42b4f4fd243b36037e88b71963d963d))
# [2.7.0-beta.8](https://github.com/vuejs/vue/compare/v2.7.0-beta.7...v2.7.0-beta.8) (2022-06-28)
### Bug Fixes
* **compiler-sfc:** should transform non relative paths when base option is present ([008d78b](https://github.com/vuejs/vue/commit/008d78bd7280716d2d70e150e3ed2ac5ee8497f2))
# [2.7.0-beta.7](https://github.com/vuejs/vue/compare/v2.7.0-beta.6...v2.7.0-beta.7) (2022-06-27)
### Bug Fixes
* types/v3-directive not published ([#12571](https://github.com/vuejs/vue/issues/12571)) ([11e4bfe](https://github.com/vuejs/vue/commit/11e4bfe806b574747495edfb9ba22f78676ceb7c))
# [2.7.0-beta.6](https://github.com/vuejs/vue/compare/v2.7.0-beta.5...v2.7.0-beta.6) (2022-06-26)
### Bug Fixes
* **reactivity:** readonly() compat with classes ([44ab1cd](https://github.com/vuejs/vue/commit/44ab1cda746252a1a81f88e1a9658d33f484ed41)), closes [#12574](https://github.com/vuejs/vue/issues/12574)
* **watch:** template ref watcher should fire after owner instance mounted hook ([089b27c](https://github.com/vuejs/vue/commit/089b27c30b470acd98286ffe072525beb2320dea)), closes [#12578](https://github.com/vuejs/vue/issues/12578)
# [2.7.0-beta.5](https://github.com/vuejs/vue/compare/v2.7.0-beta.4...v2.7.0-beta.5) (2022-06-22)
### Bug Fixes
* **types:** fix instance type inference for setup() with no return value ([65531f5](https://github.com/vuejs/vue/commit/65531f580314d832f44ecd5c782f79da3e977da7)), closes [#12568](https://github.com/vuejs/vue/issues/12568)
* **watch:** fix pre watchers not flushed on mount for nested component ([7a3aa3f](https://github.com/vuejs/vue/commit/7a3aa3faac6b8eb066f32813788b4c1d16f34c6b)), closes [#12569](https://github.com/vuejs/vue/issues/12569)
# [2.7.0-beta.4](https://github.com/vuejs/vue/compare/v2.7.0-beta.3...v2.7.0-beta.4) (2022-06-21)
### Bug Fixes
* **compiler-sfc:** properly handle shorthand property in template expressions ([9b9f2bf](https://github.com/vuejs/vue/commit/9b9f2bf1c8429136e7122d146e0e39bdeada5d1d)), closes [#12566](https://github.com/vuejs/vue/issues/12566)
# [2.7.0-beta.3](https://github.com/vuejs/vue/compare/v2.7.0-beta.2...v2.7.0-beta.3) (2022-06-20)
### Bug Fixes
* remove wrong observe toggle, properly disable tracking in setup() ([2d67641](https://github.com/vuejs/vue/commit/2d676416566c06d7c789899c92bf0f6924ec284a))
* **setup:** setup props should pass isReactive check ([52cf912](https://github.com/vuejs/vue/commit/52cf912d855a7fae8d8c89452f0d275846e26a87)), closes [#12561](https://github.com/vuejs/vue/issues/12561)
* **template-ref:** preserve ref removal behavior in non-composition-api usage ([2533a36](https://github.com/vuejs/vue/commit/2533a360a838c41238dc9b9b840932f2957c65d4)), closes [#12554](https://github.com/vuejs/vue/issues/12554)
### Features
* **sfc:** css v-bind ([8ab0074](https://github.com/vuejs/vue/commit/8ab0074bab83473fd025ae538a3455e3277320c4))
* **sfc:** parse needMap compat ([d3916b6](https://github.com/vuejs/vue/commit/d3916b69b491bb0964102b69a8bb2e9336f7677b))
* useCssModules ([0fabda7](https://github.com/vuejs/vue/commit/0fabda7a3b016c1c0cb5d92f5d8efc35f0dbde40))
# [2.7.0-beta.2](https://github.com/vuejs/vue/compare/v2.7.0-beta.1...v2.7.0-beta.2) (2022-06-17)
### Bug Fixes
* **compiler-sfc:** do not transform external and data urls in templates ([328ebff](https://github.com/vuejs/vue/commit/328ebff04198143385371c857ad23f739be9509d))
# [2.7.0-beta.1](https://github.com/vuejs/vue/compare/v2.7.0-alpha.12...v2.7.0-beta.1) (2022-06-17)
### Bug Fixes
* **compiler-sfc:** expose src on custom blocks as well ([cdfc4c1](https://github.com/vuejs/vue/commit/cdfc4c134ddadc33f3b50d53ec6316b0c96f4567))
### Features
* **compiler-sfc:** support includeAbsolute in transformAssetUrl ([8f5817a](https://github.com/vuejs/vue/commit/8f5817a7c9a0664438e4299f82ac41a67f156f89))
* warn top level await usage in `<script setup>` ([efa8a74](https://github.com/vuejs/vue/commit/efa8a749644cfd6a0d6e9e92a1f342e2eff77d5a))
# [2.7.0-alpha.12](https://github.com/vuejs/vue/compare/v2.7.0-alpha.11...v2.7.0-alpha.12) (2022-06-16)
### Features
* further align compiler-sfc api + expose rewriteDefault ([8ce585d](https://github.com/vuejs/vue/commit/8ce585d70c2e1adb04650801b03dcc9552cbaf95))
# [2.7.0-alpha.11](https://github.com/vuejs/vue/compare/v2.7.0-alpha.10...v2.7.0-alpha.11) (2022-06-16)
### Bug Fixes
* further align types with v3 ([2726b6d](https://github.com/vuejs/vue/commit/2726b6d9ff3030af63012a304c33781163461a23))
# [2.7.0-alpha.10](https://github.com/vuejs/vue/compare/v2.7.0-alpha.9...v2.7.0-alpha.10) (2022-06-16)
### Bug Fixes
* avoid warning when accessing _setupProxy ([cdfd9f3](https://github.com/vuejs/vue/commit/cdfd9f321e35981774785806bb1629a73ec58064))
### Features
* export version as named export ([749b96d](https://github.com/vuejs/vue/commit/749b96d84e6551c5187694a93c5493702035a239))
# [2.7.0-alpha.9](https://github.com/vuejs/vue/compare/v2.7.0-alpha.8...v2.7.0-alpha.9) (2022-06-16)
### Features
* defineExpose() support ([3c2707b](https://github.com/vuejs/vue/commit/3c2707b62e1a355f182c08f85cf7bc9bca1bb34e))
* directive resolution for `<script setup>` ([aa2b1f4](https://github.com/vuejs/vue/commit/aa2b1f4d93bdd257ae26a73994168709369aa6a0))
* resolve components from `<script setup>` ([4b19339](https://github.com/vuejs/vue/commit/4b193390fbc203cc5bae46fe288b1c20c442cc03))
* types for `<script setup>` macros ([7173ad4](https://github.com/vuejs/vue/commit/7173ad42729fa0913c3e7de94d251341929ee7c6))
# [2.7.0-alpha.8](https://github.com/vuejs/vue/compare/v2.7.0-alpha.7...v2.7.0-alpha.8) (2022-06-14)
### Features
- Basic `<script setup>` support. Requires `vue-loader@^15.10.0-beta.1`.
- Component resolution doesn't work yet
- Types for `defineXXX` macros not supported yet
# [2.7.0-alpha.7](https://github.com/vuejs/vue/compare/v2.7.0-alpha.6...v2.7.0-alpha.7) (2022-06-14)
# [2.7.0-alpha.6](https://github.com/vuejs/vue/compare/v2.7.0-alpha.5...v2.7.0-alpha.6) (2022-06-09)
### Features
* Add JSX types for Volar integration. No longer requires `@vue/runtime-dom` for component props validation in templates.
# [2.7.0-alpha.5](https://github.com/vuejs/vue/compare/v2.7.0-alpha.4...v2.7.0-alpha.5) (2022-06-06)
### Bug Fixes
* fix scopedSlots regression ([4f2a04e](https://github.com/vuejs/vue/commit/4f2a04e6a8e1fc71080eed49fd4059d6a53afc1c))
# [2.7.0-alpha.4](https://github.com/vuejs/vue/compare/v2.7.0-alpha.3...v2.7.0-alpha.4) (2022-06-01)
### Bug Fixes
* guard against non-object provide value ([c319cc7](https://github.com/vuejs/vue/commit/c319cc7a74a790414c33db74ad9f1070851de76b))
### Features
* `defineComponent` [206f8a7f](https://github.com/vuejs/vue/commit/206f8a7f0949a50ae062d9d71061716ae3c3a749)
# [2.7.0-alpha.3](https://github.com/vuejs/vue/compare/v2.7.0-alpha.2...v2.7.0-alpha.3) (2022-06-01)
# [2.7.0-alpha.2](https://github.com/vuejs/vue/compare/v2.7.0-alpha.1...v2.7.0-alpha.2) (2022-06-01)
### Features
* add exports field + mjs build ([d317237](https://github.com/vuejs/vue/commit/d3172377e0c2df9e84244ede6fc9a091344e6f1c))
* expose set/del as named exports ([5673363](https://github.com/vuejs/vue/commit/5673363eda9e6082a9ff0300b8c4e79c9388891b))
# [2.7.0-alpha.1](https://github.com/vuejs/vue/compare/v2.6.14...v2.7.0-alpha.1) (2022-05-31)
This release includes full [Composition API](https://vuejs.org/guide/extras/composition-api-faq.html) support, including:
- `setup()` support in components
- Reactivity APIs (`ref()`, `reactive()` etc.)
- Lifecycle hooks (`onMounted()` etc.)
- `provide()` and `inject()`
- `useSlots()` and `useAttrs()`
- template refs with `setup()`
### Behavior difference from Vue 3
- The reactivity system is still getter/setter based and does not use Proxies, so all Vue 2 change detection caveats still apply.
- `reactive()`, `ref()`, and `shallowReactive()` will directly convert original objects instead of creating proxies. They also do not convert properties with symbol keys.
- Avoid using arrays as root values in `reactive()` because without property access the array's mutation won't be tracked (this will result in a warning).
- `readonly()` **does** create a separate object, but it won't track newly added properties and does not work on arrays.
### Notes on API exposure
- In ESM builds, these APIs are provided as named exports (and named exports only):
```js
import Vue, { ref } from 'vue'
Vue.ref // undefined, use named export instead
```
- When bundling with CJS builds externalized, bundlers should be able to handle ESM interop when externalizing CJS builds.
- In UMD builds, these APIs are exposed on the global `Vue` object.
In addition:
- `h()`, `set()`, `del()` and `nextTick()` are now also provided as named exports in ESM builds.
### Bug Fixes
- **v-on:** add removing all dom event listeners when vnode destroyed ([#10085](https://github.com/vuejs/vue/issues/10085)) ([3d29ba8](https://github.com/vuejs/vue/commit/3d29ba863b89fd90dabd0856c0507eacdf5fef22))
### Features
- **compiler:** condenses staticClass whitespace (fix [#12113](https://github.com/vuejs/vue/issues/12113)) ([#12195](https://github.com/vuejs/vue/issues/12195)) ([515467a](https://github.com/vuejs/vue/commit/515467a618479792abedf01a7b1dcef2ac2a17ed))
## [2.6.14](https://github.com/vuejs/vue/compare/v2.6.13...v2.6.14) (2021-06-07)
### Bug Fixes
- **types:** async Component types ([#11906](https://github.com/vuejs/vue/issues/11906)) ([c52427b](https://github.com/vuejs/vue/commit/c52427b0d2c1d203deea6eb69f2b4b181d56022c))
- **v-slot:** fix scoped slot normalization combined with v-if ([#12104](https://github.com/vuejs/vue/issues/12104)) ([38f71de](https://github.com/vuejs/vue/commit/38f71de380d566e4eef60968a8eca6bd6f482dd5))
### Features
- **ssr:** vue-ssr-webpack-plugin compatible with webpack 5 ([#12002](https://github.com/vuejs/vue/issues/12002)) ([80e7730](https://github.com/vuejs/vue/commit/80e7730946538e0371e213100a0fe81299c2f4b2))
## [2.6.13](https://github.com/vuejs/vue/compare/v2.6.12...v2.6.13) (2021-06-01)
### Bug Fixes
- **attrs:** do not consider translate attribute as boolean ([#11392](https://github.com/vuejs/vue/issues/11392)) ([cd57393](https://github.com/vuejs/vue/commit/cd57393fd3e2c169d450607bc4f03652d106bcc2)), closes [#11391](https://github.com/vuejs/vue/issues/11391)
- **compiler:** Allow BigInt usage in templates ([#11152](https://github.com/vuejs/vue/issues/11152)) ([c42b706](https://github.com/vuejs/vue/commit/c42b7066cae7947e9fd877e495aeb38623c2354d))
- **compiler:** avoid converting &nbps; to spaces ([#11065](https://github.com/vuejs/vue/issues/11065)) ([55a30cf](https://github.com/vuejs/vue/commit/55a30cf9db247eba2aca817439fdb3cd15e9184f))
- **compiler:** event handlers with modifiers swallowing arguments (fix [#10867](https://github.com/vuejs/vue/issues/10867)) ([#10958](https://github.com/vuejs/vue/issues/10958)) ([8620706](https://github.com/vuejs/vue/commit/862070662dd4871cb834664435ec836df57c7d57))
- **core:** fix sameVnode for async component ([#11107](https://github.com/vuejs/vue/issues/11107)) ([5260830](https://github.com/vuejs/vue/commit/52608302e9bca84fb9e9f0499e89acade78d3d07))
- **core:** remove trailing comma in function signature ([#10845](https://github.com/vuejs/vue/issues/10845)) ([579e1ff](https://github.com/vuejs/vue/commit/579e1ff9df1d454f85fac386d098b7bf1a42c4f2)), closes [#10843](https://github.com/vuejs/vue/issues/10843)
- **errorHandler:** async error handling for watchers ([#9484](https://github.com/vuejs/vue/issues/9484)) ([e4dea59](https://github.com/vuejs/vue/commit/e4dea59f84dfbf32cda1cdd832380dd90b1a6fd1))
- force update between two components with and without slot ([#11795](https://github.com/vuejs/vue/issues/11795)) ([77b5330](https://github.com/vuejs/vue/commit/77b5330c5498a6b14a83197371e9a2dbf9939a9c))
- give correct namespace in foreignObject ([#11576](https://github.com/vuejs/vue/issues/11576)) ([af5e05d](https://github.com/vuejs/vue/commit/af5e05d87ecd218f73302a1b08dcaedd2b46814a)), closes [#11575](https://github.com/vuejs/vue/issues/11575)
- handle async placeholders in normalizeScopedSlot ([#11963](https://github.com/vuejs/vue/issues/11963)) ([af54514](https://github.com/vuejs/vue/commit/af54514cf97e724d224408c1ecc6c81ddccd4b75))
- **keep-alive:** cache what is really needed not the whole VNode data ([#12015](https://github.com/vuejs/vue/issues/12015)) ([e7baaa1](https://github.com/vuejs/vue/commit/e7baaa12055231c9367fa1c7bf917e534bd8a739))
- **parser:** allow multiple slots with new syntax ([#9785](https://github.com/vuejs/vue/issues/9785)) ([67825c2](https://github.com/vuejs/vue/commit/67825c24bcb0a9f64055bda1b1e4af66aad3c529)), closes [#9781](https://github.com/vuejs/vue/issues/9781)
- pause dep collection during immediate watcher invocation ([#11943](https://github.com/vuejs/vue/issues/11943)) ([987f322](https://github.com/vuejs/vue/commit/987f322b8f419cc307f4294173f8792a706ed73f))
- **props:** correctly warn when a provided prop is Symbol ([#10529](https://github.com/vuejs/vue/issues/10529)) ([abb5ef3](https://github.com/vuejs/vue/commit/abb5ef35dd02919dce19c895ad12113071712df0)), closes [#10519](https://github.com/vuejs/vue/issues/10519)
- **props:** support BigInt in props type validation ([#11191](https://github.com/vuejs/vue/issues/11191)) ([fa1f81e](https://github.com/vuejs/vue/commit/fa1f81e91062e9de6161708209cd7354733aa354))
- **slot:** add a function to return the slot fallback content ([#12014](https://github.com/vuejs/vue/issues/12014)) ([ce457f9](https://github.com/vuejs/vue/commit/ce457f9f4d48548d5e8763c47d013e23c2b65c12))
- **ssr:** avoid missing files in manifest ([#11609](https://github.com/vuejs/vue/issues/11609)) ([b97606c](https://github.com/vuejs/vue/commit/b97606cdc658448b56518ac27af98fc82999d05f))
- **ssr:** inheritAttrs false adds attributes to html ([#11706](https://github.com/vuejs/vue/issues/11706)) ([7e5dc6b](https://github.com/vuejs/vue/commit/7e5dc6bd9ebc1620624191804d2ace43cae557a8))
- **ssr:** textarea keeps undefined/null values ([#11121](https://github.com/vuejs/vue/issues/11121)) ([b8bd149](https://github.com/vuejs/vue/commit/b8bd149d8aa3f175a1a656d62f7b6ec60c31a364))
- **types:** add types for Vue.util.warn function ([#11964](https://github.com/vuejs/vue/issues/11964)) ([e0274e4](https://github.com/vuejs/vue/commit/e0274e4320f68bb93bd7f90bb1ef701ccf9b6f2a)), closes [/github.com/vuejs/vue/blob/v2.6.12/src/core/util/debug.js#L18-L26](https://github.com//github.com/vuejs/vue/blob/v2.6.12/src/core/util/debug.js/issues/L18-L26)
- **types:** allow string for watch handlers in options ([#10396](https://github.com/vuejs/vue/issues/10396)) ([668e1e6](https://github.com/vuejs/vue/commit/668e1e637461ff630803e85bf99158415d276d4c))
- **types:** allow symbol & boolean for vnode key ([#11914](https://github.com/vuejs/vue/issues/11914)) ([5c459f0](https://github.com/vuejs/vue/commit/5c459f0fd6911daca09ad205aecf5423a9d05698))
- **types:** changed expression type to optional string ([#11189](https://github.com/vuejs/vue/issues/11189)) ([7c75462](https://github.com/vuejs/vue/commit/7c754623541c492161f7976203f0b1697a9a0113)), closes [#10871](https://github.com/vuejs/vue/issues/10871)
- **types:** make $refs undefined possible ([#11112](https://github.com/vuejs/vue/issues/11112)) ([2b93e86](https://github.com/vuejs/vue/commit/2b93e86aa1437168476cbb5100cfb3bbbac55efa))
- **v-on:** avoid events with empty keyCode (autocomplete) ([#11326](https://github.com/vuejs/vue/issues/11326)) ([c6d7a6f](https://github.com/vuejs/vue/commit/c6d7a6fce795ffbd6b8a599787eca986bb260a25))
- **v-pre:** do not alter attributes ([#10088](https://github.com/vuejs/vue/issues/10088)) ([0664cb0](https://github.com/vuejs/vue/commit/0664cb01434f3d52efd076b6aafe54066a2a762a)), closes [#10087](https://github.com/vuejs/vue/issues/10087)
- **vdom:** avoid executing root level script tags ([#11487](https://github.com/vuejs/vue/issues/11487)) ([fb16d7b](https://github.com/vuejs/vue/commit/fb16d7bfa1e32c21a2f4b627fb8864d3c5c6b655)), closes [#11483](https://github.com/vuejs/vue/issues/11483)
- **warn:** better message with no constructors props ([#9241](https://github.com/vuejs/vue/issues/9241)) ([6940131](https://github.com/vuejs/vue/commit/69401311f4bf55e58550a2134c33ceb8ae1f180e))
- **warns:** modify `maybeComponent` function in parser ([#10167](https://github.com/vuejs/vue/issues/10167)) ([0603ff6](https://github.com/vuejs/vue/commit/0603ff695d2f41286239298210113cbe2b209e28)), closes [#10152](https://github.com/vuejs/vue/issues/10152)
### Features
- **warns:** avoid warning native modifiers on dynamic components ([#11052](https://github.com/vuejs/vue/issues/11052)) ([3d46692](https://github.com/vuejs/vue/commit/3d46692ee4e8ec67b5bc0f66cdabf4667fa4de88))
- **warn:** warn computed conflict with methods ([#10119](https://github.com/vuejs/vue/issues/10119)) ([3ad60fe](https://github.com/vuejs/vue/commit/3ad60fea73d042fc9a127d19de8329948d3f2ef0))
### Performance Improvements
- preinitialize typeCheck RegExp ([#10990](https://github.com/vuejs/vue/issues/10990)) ([2488a6a](https://github.com/vuejs/vue/commit/2488a6a1e9779f0cca4a64163ef44ac30530a450))
## [2.6.12](https://github.com/vuejs/vue/compare/v2.6.11...v2.6.12) (2020-08-20)
### Bug Fixes
- **security:** upgrade serialize-javascript ([#11434](https://github.com/vuejs/vue/issues/11434)) ([5b39961](https://github.com/vuejs/vue/commit/5b399612d8323ad0bb8b3f6fa8b2982ab73c0e6e))
## [2.6.11](https://github.com/vuejs/vue/compare/v2.6.10...v2.6.11) (2019-12-13)
### Bug Fixes
- **compiler:** Remove the warning for valid v-slot value ([#9917](https://github.com/vuejs/vue/issues/9917)) ([085d188](https://github.com/vuejs/vue/commit/085d188379af98e9f482d7e2009ebfd771bd7ca5))
- fix function expression regex ([#9922](https://github.com/vuejs/vue/issues/9922)) ([569b728](https://github.com/vuejs/vue/commit/569b728ab19d1956bf935a98c9c65a03d92ac85f)), closes [#9920](https://github.com/vuejs/vue/issues/9920)
- **types:** fix global namespace declaration for UMD bundle ([#9912](https://github.com/vuejs/vue/issues/9912)) ([ab50e8e](https://github.com/vuejs/vue/commit/ab50e8e1da2f4f944af683252481728485fedf16))
- **types:** fix prop constructor type inference ([#10779](https://github.com/vuejs/vue/issues/10779)) ([4821149](https://github.com/vuejs/vue/commit/4821149b8bbd4650b1d9c9c3cfbb539ac1e24589))
## [2.6.10](https://github.com/vuejs/vue/compare/v2.6.9...v2.6.10) (2019-03-20)
### Bug Fixes
- **codegen:** support named function expression in v-on ([#9709](https://github.com/vuejs/vue/issues/9709)) ([3433ba5](https://github.com/vuejs/vue/commit/3433ba5beef9a6dd97705943c3441ebbee222afd)), closes [#9707](https://github.com/vuejs/vue/issues/9707)
- **core:** cleanup timeouts for async components ([#9649](https://github.com/vuejs/vue/issues/9649)) ([02d21c2](https://github.com/vuejs/vue/commit/02d21c265c239682e73b2b3f98028f2da5e7205d)), closes [#9648](https://github.com/vuejs/vue/issues/9648)
- **core:** only unset dom prop when not present ([f11449d](https://github.com/vuejs/vue/commit/f11449d916a468651d4fd5024c37e3eebbc9941f)), closes [#9650](https://github.com/vuejs/vue/issues/9650)
- **core:** use window.performance for compatibility in JSDOM ([#9700](https://github.com/vuejs/vue/issues/9700)) ([653c74e](https://github.com/vuejs/vue/commit/653c74e64e5ccd66cda94c77577984f8afa8386d)), closes [#9698](https://github.com/vuejs/vue/issues/9698)
- **scheduler:** revert timeStamp check ([22790b2](https://github.com/vuejs/vue/commit/22790b250cd5239a8379b4ec8cc3a9b570dac4bc)), closes [#9729](https://github.com/vuejs/vue/issues/9729) [#9632](https://github.com/vuejs/vue/issues/9632)
- **slots:** fix slots not updating when passing down normal slots as $scopedSlots ([ebc1893](https://github.com/vuejs/vue/commit/ebc1893faccd1a9d953a8e8feddcb49cf1b9004d)), closes [#9699](https://github.com/vuejs/vue/issues/9699)
- **types:** allow using functions on the PropTypes ([#9733](https://github.com/vuejs/vue/issues/9733)) ([df4af4b](https://github.com/vuejs/vue/commit/df4af4bd1906b9f23b62816142fdfbd6336d3d2f)), closes [#9692](https://github.com/vuejs/vue/issues/9692)
- **types:** support string type for style in VNode data ([#9728](https://github.com/vuejs/vue/issues/9728)) ([982d5a4](https://github.com/vuejs/vue/commit/982d5a492fb95577217e2dacaa044eabe78a8601)), closes [#9727](https://github.com/vuejs/vue/issues/9727)
## [2.6.9](https://github.com/vuejs/vue/compare/v2.6.8...v2.6.9) (2019-03-14)
### Bug Fixes
- **compiler:** whitespace: 'condense' should honor pre tag as well ([#9660](https://github.com/vuejs/vue/issues/9660)) ([f1bdd7f](https://github.com/vuejs/vue/commit/f1bdd7ff9d1fc86f7a8ad8d5cb6d9abc7b2e47f3))
- event timeStamp check for Qt ([7591b9d](https://github.com/vuejs/vue/commit/7591b9dc6dde314f2d32dcd7a8355f696a330979)), closes [#9681](https://github.com/vuejs/vue/issues/9681)
- **scheduler:** fix getNow check in IE9 ([#9647](https://github.com/vuejs/vue/issues/9647)) ([da77d6a](https://github.com/vuejs/vue/commit/da77d6a98bdccd8a2c8bfdfe6b9cb46efcb1193c)), closes [#9632](https://github.com/vuejs/vue/issues/9632)
- **scheduler:** getNow detection can randomly fail ([#9667](https://github.com/vuejs/vue/issues/9667)) ([ef2a380](https://github.com/vuejs/vue/commit/ef2a380c6eb6bd1a7ff516c357dafa717e75a745))
- should consider presence of normal slots when caching normalized scoped slots ([9313cf9](https://github.com/vuejs/vue/commit/9313cf91740e1d43c43cf9e73d905dbab913beb5)), closes [#9644](https://github.com/vuejs/vue/issues/9644)
- should not swallow user catch on rejected promise in methods ([7186940](https://github.com/vuejs/vue/commit/7186940143704acc4ec046132f6a56e9c983e510)), closes [#9694](https://github.com/vuejs/vue/issues/9694)
- should use fallback for scoped slots with single falsy v-if ([781c705](https://github.com/vuejs/vue/commit/781c70514e01bc402828946805bfad7437c7175e)), closes [#9658](https://github.com/vuejs/vue/issues/9658)
- **ssr:** fix nested async functional component rendering ([#9673](https://github.com/vuejs/vue/issues/9673)) ([8082d2f](https://github.com/vuejs/vue/commit/8082d2f910d963f14c151fb445e0fcc5c975cca9)), closes [#9643](https://github.com/vuejs/vue/issues/9643)
- **ssr:** not push non-async css files into map ([#9677](https://github.com/vuejs/vue/issues/9677)) ([d282400](https://github.com/vuejs/vue/commit/d28240009c4c49fb2ef42a79206f0d9ad03f736c))
- **transition:** fix appear check for transition wrapper components ([#9668](https://github.com/vuejs/vue/issues/9668)) ([4de4649](https://github.com/vuejs/vue/commit/4de4649d9637262a9b007720b59f80ac72a5620c))
- v-bind object should be overridable by single bindings ([#9653](https://github.com/vuejs/vue/issues/9653)) ([0b57380](https://github.com/vuejs/vue/commit/0b57380f10986c6b07e3c240acc06bfd2eddfd1b)), closes [#9641](https://github.com/vuejs/vue/issues/9641)
## [2.6.8](https://github.com/vuejs/vue/compare/v2.6.7...v2.6.8) (2019-03-01)
### Bug Fixes
- avoid compression of unicode sequences by using regexps ([#9595](https://github.com/vuejs/vue/issues/9595)) ([7912f75](https://github.com/vuejs/vue/commit/7912f75c5eb09e0aef3e4bfd8a3bb78cad7540d7)), closes [#9456](https://github.com/vuejs/vue/issues/9456)
- **compiler:** set end location for incomplete elements ([#9598](https://github.com/vuejs/vue/issues/9598)) ([cbad54a](https://github.com/vuejs/vue/commit/cbad54aa52847cfc934bb925d53c53ee57fc153d))
- fix modifier parsing for dynamic argument with deep path ([#9585](https://github.com/vuejs/vue/issues/9585)) ([060c3b9](https://github.com/vuejs/vue/commit/060c3b98efa44a9f21bcc038a2593b1cc3c782e9)), closes [#9577](https://github.com/vuejs/vue/issues/9577)
- further adjust max stack size ([571a488](https://github.com/vuejs/vue/commit/571a4880fc06b491a280325b79fd4cbb59ceb47e)), closes [#9562](https://github.com/vuejs/vue/issues/9562)
- handle async component when parent is toggled before resolve ([#9572](https://github.com/vuejs/vue/issues/9572)) ([ed34113](https://github.com/vuejs/vue/commit/ed341137b23315b76ba391db1b0e537950c091e1)), closes [#9571](https://github.com/vuejs/vue/issues/9571)
- scoped slots dynamic check should include v-for on element itself ([2277b23](https://github.com/vuejs/vue/commit/2277b2322cf81b5830a5b85f6600e1896edc7aa9)), closes [#9596](https://github.com/vuejs/vue/issues/9596)
- **types:** allow scoped slots to return a single VNode ([#9563](https://github.com/vuejs/vue/issues/9563)) ([241eea1](https://github.com/vuejs/vue/commit/241eea19a64550bfdb3f9d7e4197127997572842))
- **types:** update this for nextTick api ([#9541](https://github.com/vuejs/vue/issues/9541)) ([f333016](https://github.com/vuejs/vue/commit/f33301619d18b9392597c5230af17921c0b42466))
## [2.6.7](https://github.com/vuejs/vue/compare/v2.6.6...v2.6.7) (2019-02-21)
### Bug Fixes
- **#9511:** avoid promise catch multiple times ([#9526](https://github.com/vuejs/vue/issues/9526)) ([2f3020e](https://github.com/vuejs/vue/commit/2f3020e9cc1ad5c878606b56bb73a30b1d9bb7d9)), closes [#9511](https://github.com/vuejs/vue/issues/9511) [#9511](https://github.com/vuejs/vue/issues/9511) [#9511](https://github.com/vuejs/vue/issues/9511) [#9511](https://github.com/vuejs/vue/issues/9511)
- avoid errors thrown during dom props update ([8a80a23](https://github.com/vuejs/vue/commit/8a80a23ecba23f92f278d664388050ffcd121385)), closes [#9459](https://github.com/vuejs/vue/issues/9459)
- avoid possible infinite loop by accessing observables in error handler ([#9489](https://github.com/vuejs/vue/issues/9489)) ([ee29e41](https://github.com/vuejs/vue/commit/ee29e41ef469b3ca3c793f04289075e3b128447f))
- **compiler:** handle negative length in codeframe repeat ([7a8de91](https://github.com/vuejs/vue/commit/7a8de91cd78f523fabe8452652513250871a01c6))
- ensure generated scoped slot code is compatible with 2.5 ([7ec4627](https://github.com/vuejs/vue/commit/7ec4627902020cccd7b3f4fbc63e1b0d6b9798cd)), closes [#9545](https://github.com/vuejs/vue/issues/9545)
- ensure scoped slots update in conditional branches ([d9b27a9](https://github.com/vuejs/vue/commit/d9b27a92bd5277ee23a4e68a8bd31ecc72f4c99b)), closes [#9534](https://github.com/vuejs/vue/issues/9534)
- scoped slots should update when inside v-for ([8f004ea](https://github.com/vuejs/vue/commit/8f004ea44e06d7764fa884212fa95c2033515928)), closes [#9506](https://github.com/vuejs/vue/issues/9506)
## [2.6.6](https://github.com/vuejs/vue/compare/v2.6.5...v2.6.6) (2019-02-12)
### Bug Fixes
- ensure scoped slot containing passed down slot content updates properly ([21fca2f](https://github.com/vuejs/vue/commit/21fca2fffc3a75235a6656eb85ae40835e04bf69))
- fix keyCode check for Chrome autofill fake key events ([29c348f](https://github.com/vuejs/vue/commit/29c348f3cf60c50a52cc98123f8c54fa8f5672fc)), closes [#9441](https://github.com/vuejs/vue/issues/9441)
## [2.6.5](https://github.com/vuejs/vue/compare/v2.6.4...v2.6.5) (2019-02-11)
### Bug Fixes
- allow passing multiple arguments to scoped slot ([e7d49cd](https://github.com/vuejs/vue/commit/e7d49cdcf2fd9a612e0dac7a7bea318824210881)), closes [#9468](https://github.com/vuejs/vue/issues/9468)
- bail out of event blocking for iOS bug ([0bad7e2](https://github.com/vuejs/vue/commit/0bad7e2a3508b55abaa8aec2a1bd9c1127305cb4)), closes [#9462](https://github.com/vuejs/vue/issues/9462)
- do not cache scoped slots when mixed with normal slots ([060686d](https://github.com/vuejs/vue/commit/060686d6ea4d013129b4d2e93d7d2e5c93e09686))
## [2.6.4](https://github.com/vuejs/vue/compare/v2.6.3...v2.6.4) (2019-02-08)
### Bug Fixes
- avoid breaking avoriaz edge case ([9011b83](https://github.com/vuejs/vue/commit/9011b83db79cf2f3563f8fccb2e41b5b863c3ee9))
- avoid logging same error twice when thrown by user in global handler ([ca57920](https://github.com/vuejs/vue/commit/ca57920edb56000bfc87bb64f4e5e3450c03e13a)), closes [#9445](https://github.com/vuejs/vue/issues/9445)
- empty scoped slot should return undefined ([57bc80a](https://github.com/vuejs/vue/commit/57bc80a546acb2bd092edd393228324b453ae4e2)), closes [#9452](https://github.com/vuejs/vue/issues/9452)
- expose v-slot slots without scope on this.$slots ([0e8560d](https://github.com/vuejs/vue/commit/0e8560d0fc1c0fbf3a52464939701e0e44543b00)), closes [#9421](https://github.com/vuejs/vue/issues/9421) [#9458](https://github.com/vuejs/vue/issues/9458)
- new syntax slots without scope should also be exposed on functional slots() ([8a80086](https://github.com/vuejs/vue/commit/8a800867fe61e5aa642e1e3da91bb890d07312f7))
### Performance Improvements
- cache result from functional ctx.slots() calls ([7a0dfd0](https://github.com/vuejs/vue/commit/7a0dfd0badf3054c95ac1ec66cc6e213f1592c95))
- skip scoped slots normalization when possible ([099f3ba](https://github.com/vuejs/vue/commit/099f3ba60085a089ff369442bdb835f3868e47c0))
## [2.6.3](https://github.com/vuejs/vue/compare/v2.6.2...v2.6.3) (2019-02-06)
### Bug Fixes
- async component should use render owner as force update context ([b9de23b](https://github.com/vuejs/vue/commit/b9de23b1008b52deca7e7df40843e318a42f3f53)), closes [#9432](https://github.com/vuejs/vue/issues/9432)
- avoid exposing internal flags on $scopedSlots ([24b4640](https://github.com/vuejs/vue/commit/24b4640c1f268722f5ab8f03e68e2df897cfbdf6)), closes [#9443](https://github.com/vuejs/vue/issues/9443)
- bail out scoped slot optimization when there are nested scopes ([4d4d22a](https://github.com/vuejs/vue/commit/4d4d22a3f6017c46d08b67afe46af43027b06629)), closes [#9438](https://github.com/vuejs/vue/issues/9438)
- **compiler:** fix v-bind dynamic arguments on slot outlets ([96a09aa](https://github.com/vuejs/vue/commit/96a09aad99bdecbcc0e5c420077bf41893d4a745)), closes [#9444](https://github.com/vuejs/vue/issues/9444)
- skip microtask fix if event is fired from different document ([dae7e41](https://github.com/vuejs/vue/commit/dae7e4182fbbb41e599953cc22e5d54dbb164070)), closes [#9448](https://github.com/vuejs/vue/issues/9448)
- skip microtask fix in Firefix <= 53 ([7bc88f3](https://github.com/vuejs/vue/commit/7bc88f30c3eadded07dd5b460d1e7cb9342d017c)), closes [#9446](https://github.com/vuejs/vue/issues/9446)
- **types:** add Vue.version to types ([#9431](https://github.com/vuejs/vue/issues/9431)) ([54e6a12](https://github.com/vuejs/vue/commit/54e6a121e992f20c03f104533caa4c59e59b1ee7))
### Reverts
- feat: expose all scoped slots on this.$slots ([d5ade28](https://github.com/vuejs/vue/commit/d5ade28652b07303ac6b713813792752ae5e4e04))
## [2.6.2](https://github.com/vuejs/vue/compare/v2.6.1...v2.6.2) (2019-02-05)
### Bug Fixes
- always set transformed model value on attrs ([b034abf](https://github.com/vuejs/vue/commit/b034abf48e793189ce8796c259eed2fbfb79bcd0))
- restore slot-scope + v-if behavior ([44a4ca3](https://github.com/vuejs/vue/commit/44a4ca33b95070e9aa53c6924479519d86dd9b36)), closes [#9422](https://github.com/vuejs/vue/issues/9422)
### Features
- expose all scoped slots on this.$slots ([0129b0e](https://github.com/vuejs/vue/commit/0129b0eb12a1f98a722f100892bfc5e60b0f51ce)), closes [#9421](https://github.com/vuejs/vue/issues/9421)
## [2.6.1](https://github.com/vuejs/vue/compare/v2.6.0...v2.6.1) (2019-02-04)
### Bug Fixes
- avoid blocking first input event in IE when it shouldn't ([#9297](https://github.com/vuejs/vue/issues/9297)) ([0fb03b7](https://github.com/vuejs/vue/commit/0fb03b7831693b4abc90dd0bfe971c36c02d82a6)), closes [#7138](https://github.com/vuejs/vue/issues/7138) [#9042](https://github.com/vuejs/vue/issues/9042) [#9383](https://github.com/vuejs/vue/issues/9383)
- avoid isPromise check when handler return value is Vue instance ([b6b42ca](https://github.com/vuejs/vue/commit/b6b42ca8c41963be292caa266ce4330603f4c4eb)), closes [#9418](https://github.com/vuejs/vue/issues/9418)
- **compiler:** fix inline-template crashing ([#9365](https://github.com/vuejs/vue/issues/9365)) ([55bfb94](https://github.com/vuejs/vue/commit/55bfb94a33ecc9b33131ec0fb78bba2946e8fc75)), closes [#9361](https://github.com/vuejs/vue/issues/9361)
- decode single quotes in html attributes ([#9341](https://github.com/vuejs/vue/issues/9341)) ([c27fe24](https://github.com/vuejs/vue/commit/c27fe24dc6088b517ab17c799a1852f97c22c076))
- **template-compiler:** allow comments on the root node in templates ([#9408](https://github.com/vuejs/vue/issues/9408)) ([1922e7d](https://github.com/vuejs/vue/commit/1922e7d4d99d0397223b3919a1643aacb7afbbab)), closes [#9407](https://github.com/vuejs/vue/issues/9407)
- **v-model:** add value to $attrs if not defined in props ([#9331](https://github.com/vuejs/vue/issues/9331)) ([66fd3c8](https://github.com/vuejs/vue/commit/66fd3c8dd1577d4b634731adf4be4d3db5bf1df6)), closes [#9330](https://github.com/vuejs/vue/issues/9330)
# [2.6.0](https://github.com/vuejs/vue/compare/v2.6.0-beta.3...v2.6.0) (2019-02-04)
### Bug Fixes
- allow more enumerated values for contenteditable ([e632e9a](https://github.com/vuejs/vue/commit/e632e9a0759532e1d902871ca07b02c9ac267e7c)), closes [#9397](https://github.com/vuejs/vue/issues/9397)
- fix child forceUpdate regression ([44a17ba](https://github.com/vuejs/vue/commit/44a17ba2cde7fb9a673486d44de7f29feb5c1882)), closes [#9396](https://github.com/vuejs/vue/issues/9396)
- fix v-bind:style for camelCase properties with !important ([#9386](https://github.com/vuejs/vue/issues/9386)) ([539e481](https://github.com/vuejs/vue/commit/539e481f38706a6202f0eacf54c579362fbd5bb4))
- template v-slot should work with v-else conditions ([2807fd2](https://github.com/vuejs/vue/commit/2807fd24b0c17179336f84d1725b69cd3c7a0aca))
### Features
- move v-bind.prop shorthand behind flag ([64f863b](https://github.com/vuejs/vue/commit/64f863bbb9c8147819ef4547dfdadba0239c6d59))
# [2.6.0-beta.3](https://github.com/vuejs/vue/compare/v2.6.0-beta.2...v2.6.0-beta.3) (2019-01-30)
### Features
- detect and warn invalid dynamic argument expressions ([c9e3a5d](https://github.com/vuejs/vue/commit/c9e3a5d1d92500ac1e1d1eb6f3866a9df5eecf53))
# [2.6.0-beta.2](https://github.com/vuejs/vue/compare/v2.6.0-beta.1...v2.6.0-beta.2) (2019-01-26)
### Bug Fixes
- async edge case fix should apply to more browsers ([ba0ebd4](https://github.com/vuejs/vue/commit/ba0ebd4771ddb5c56c1261f82c842b57ca7163a6))
- fix checkbox event edge case in Firefox ([1868561](https://github.com/vuejs/vue/commit/1868561442507690f07579c258f4db19a650fb9a))
### Features
- adjust v-slot per RFC + enable flag ([67e85de](https://github.com/vuejs/vue/commit/67e85deae2b9720624ed7b20223b905a882942a0))
- dynamic directive arguments for v-on, v-bind and custom directives ([#9373](https://github.com/vuejs/vue/issues/9373)) ([dbc0582](https://github.com/vuejs/vue/commit/dbc0582587f90e78867809bb6ae683301cd0626b))
- **ssr:** allow template option to be function in renderToString ([#9324](https://github.com/vuejs/vue/issues/9324)) ([b65f6d7](https://github.com/vuejs/vue/commit/b65f6d78e0e480601b0042b1b5e8259343b629fb))
- update new slot syntax per RFC revision ([4fca045](https://github.com/vuejs/vue/commit/4fca0454bd716a5d3ba32057ff2ed510af933c8d))
- warning for ambiguous v-slot usage ([8d84572](https://github.com/vuejs/vue/commit/8d8457246daac543c5935aa3cbf62d362431da43))
### Performance Improvements
- improve scoped slots change detection accuracy ([#9371](https://github.com/vuejs/vue/issues/9371)) ([f219bed](https://github.com/vuejs/vue/commit/f219bedae8f9cab131eb5529769bcfdc91ce2912))
# [2.6.0-beta.1](https://github.com/vuejs/vue/compare/v2.5.22...v2.6.0-beta.1) (2019-01-16)
### Bug Fixes
- allow \_ in watch paths (element compat) ([8b382b3](https://github.com/vuejs/vue/commit/8b382b3efb14986e9ea5213d0b57c244b70ae0e7))
- always use microtasks for nextTick ([#8450](https://github.com/vuejs/vue/issues/8450)) ([850555d](https://github.com/vuejs/vue/commit/850555d1faa9be7d8306adffd95c7dee5e58717f)), closes [#7109](https://github.com/vuejs/vue/issues/7109) [#7546](https://github.com/vuejs/vue/issues/7546) [#7707](https://github.com/vuejs/vue/issues/7707) [#7834](https://github.com/vuejs/vue/issues/7834) [#8109](https://github.com/vuejs/vue/issues/8109) [#6566](https://github.com/vuejs/vue/issues/6566)
- **core:** dedupe lifecycle hooks during options merge ([edf7df0](https://github.com/vuejs/vue/commit/edf7df0c837557dd3ea8d7b42ad8d4b21858ade0)), closes [#9199](https://github.com/vuejs/vue/issues/9199)
- **core:** fix merged twice bug when passing extended constructor to mixins ([#9199](https://github.com/vuejs/vue/issues/9199)) ([5371617](https://github.com/vuejs/vue/commit/537161779ea329c1d0a993997555f1c692b8cac1)), closes [#9198](https://github.com/vuejs/vue/issues/9198)
- cover more cases in v-on inline return value ([9432737](https://github.com/vuejs/vue/commit/9432737cf871335c42ce0dc0a0baa21a4d8c3832))
- ensure only nromalize a scoped slot when it is present ([5fb23d4](https://github.com/vuejs/vue/commit/5fb23d4e2971480d14fbee0146e3416a07bc0b9f))
- ensure proxied normal slot uses correct key ([b32c4b6](https://github.com/vuejs/vue/commit/b32c4b693535c35ae10742eb3351cbc123b15941))
- make transition-group key warning a tip to avoid breaking compilation ([d08b49f](https://github.com/vuejs/vue/commit/d08b49f520e0704f9d4e61be4f751e3b2cdac6a8))
- **next-tick:** revert 60da366 ([080dd97](https://github.com/vuejs/vue/commit/080dd971f77f7c631650c4e3027d1802f4e804d8)), closes [#8436](https://github.com/vuejs/vue/issues/8436)
- **provide/inject:** Merges symbol provides ([#7926](https://github.com/vuejs/vue/issues/7926)) ([1933ee8](https://github.com/vuejs/vue/commit/1933ee80ff808b81a691fa6a135c1588d218bc0a))
- return inline invocation return value in v-on handlers ([0ebb0f3](https://github.com/vuejs/vue/commit/0ebb0f39dfee0a5c03adb2f312f617cca37b44d6)), closes [#7628](https://github.com/vuejs/vue/issues/7628)
- **runtime:** DevTools recommendation shows for all browsers ([#8638](https://github.com/vuejs/vue/issues/8638)) ([22ad266](https://github.com/vuejs/vue/commit/22ad26615104c15fd09bc69692e3042bb1bb58e9)), closes [#8634](https://github.com/vuejs/vue/issues/8634)
- **scoped-slots:** ensure $scopedSlots calls always return Arrays ([c7c13c2](https://github.com/vuejs/vue/commit/c7c13c2a156269d29fd9c9f8f6a3e53a2f2cac3d)), closes [#8056](https://github.com/vuejs/vue/issues/8056)
- **ssr:** properly handle invalid and numeric style properties ([7d9cfeb](https://github.com/vuejs/vue/commit/7d9cfebe39ffd531e0948668e688474b276cdec1)), closes [#9231](https://github.com/vuejs/vue/issues/9231)
- **ssr:** should not render invalid numeric style values ([17d8bcb](https://github.com/vuejs/vue/commit/17d8bcb60edc14b2c23f5e6cc92f030897092e21))
- **ssr:** should render 0 as valid value for style property with unit ([aef5b4e](https://github.com/vuejs/vue/commit/aef5b4e47811cb842315bd27d6919650da45279b))
### Features
- add browser ESM build ([861abf4](https://github.com/vuejs/vue/commit/861abf4bb940e89a6ae3c5c3e2dad4ed0bd53b3e))
- add Vue.observable() for explicitly creating observable objects ([c50bbde](https://github.com/vuejs/vue/commit/c50bbde41c4a1868a8a0b33df3238346840bd37c))
- **compiler/watch:** allow unicode characters in component names and watch paths ([#8666](https://github.com/vuejs/vue/issues/8666)) ([9c71852](https://github.com/vuejs/vue/commit/9c718522bac60d13d3b48d6b6512fccfd5cf8858)), closes [#8564](https://github.com/vuejs/vue/issues/8564)
- **compiler:** add whitespace option, deprecate preserveWhitespace option ([e1abedb](https://github.com/vuejs/vue/commit/e1abedb9e66b21da8a7e93e175b9dabe334dfebd)), closes [#9208](https://github.com/vuejs/vue/issues/9208)
- **compiler:** expose generateCodeFrame method ([a4ed58c](https://github.com/vuejs/vue/commit/a4ed58c076649a4536b40a9c98c974c77602c76b))
- **compiler:** output codeframe in browser compiler ([325fc76](https://github.com/vuejs/vue/commit/325fc7693c1574e69fe542f1dbc334030a4b1ec3))
- **compiler:** output source range for compiler errors ([#7127](https://github.com/vuejs/vue/issues/7127)) ([b31a1aa](https://github.com/vuejs/vue/commit/b31a1aa8870474b2ca782c45d55edac2932d4cc2)), closes [#6338](https://github.com/vuejs/vue/issues/6338)
- **compiler:** support deindent: false in vue-template-compiler ([#7215](https://github.com/vuejs/vue/issues/7215)) ([bf0efb0](https://github.com/vuejs/vue/commit/bf0efb02b1f52cceb0bad8588cf6c90e22349049)), closes [#7054](https://github.com/vuejs/vue/issues/7054)
- **config:** expose config.useEventDelegation and default to false ([3be1c5d](https://github.com/vuejs/vue/commit/3be1c5d67e8bdfc9387122317bf3779261010d45))
- **core:** expose all slots on $scopedSlots as functions ([5d52262](https://github.com/vuejs/vue/commit/5d52262f1ce56d080c3438c4773a81dc5c8397aa))
- **errors:** sync/async error handling for lifecycle hooks and v-on handlers ([#8395](https://github.com/vuejs/vue/issues/8395)) ([6e9fcfc](https://github.com/vuejs/vue/commit/6e9fcfc81d922a1b188268bf50d7e67c07d6d662)), closes [#6953](https://github.com/vuejs/vue/issues/6953) [#7653](https://github.com/vuejs/vue/issues/7653)
- expose performance measures ([9ae80ac](https://github.com/vuejs/vue/commit/9ae80acde59d9d149ee5e4e2097f209eac6f834f)), closes [#7570](https://github.com/vuejs/vue/issues/7570)
- **functional:** add scopedSlots to context in functional components ([#7941](https://github.com/vuejs/vue/issues/7941)) ([fb6aa06](https://github.com/vuejs/vue/commit/fb6aa0609045e69a0b6050bc7b6466b63be8d69d))
- new scoped slot syntax implementation update per rfc ([c5c354d](https://github.com/vuejs/vue/commit/c5c354d593d6f6344e78ca098f1ae1fa3e83d6ed))
- **ssr:** Add 'nonce' option to context for ssr outlet script ([#8047](https://github.com/vuejs/vue/issues/8047)) ([f036cce](https://github.com/vuejs/vue/commit/f036cce16377cec328bee03a3a4069275b320312)), closes [#7479](https://github.com/vuejs/vue/issues/7479)
- **ssr:** add custom state serializer option ([4494012](https://github.com/vuejs/vue/commit/44940121eef4e2df5f3cb3c21f3f468af8b336bc)), closes [#6614](https://github.com/vuejs/vue/issues/6614)
- **ssr:** allow opting-out of caching by returning false in serverCacheKey ([ab24285](https://github.com/vuejs/vue/commit/ab24285458c98e25d5749beb4edebef73672de4b)), closes [#8790](https://github.com/vuejs/vue/issues/8790)
- **ssr:** ssrPrefetch option + context.rendered hook ([#9017](https://github.com/vuejs/vue/issues/9017)) ([d7a533d](https://github.com/vuejs/vue/commit/d7a533d6f85aae52aed03202fa5ccb774f0cb2ec))
- support .property shorthand syntax for v-bind.prop modifier ([d2902ca](https://github.com/vuejs/vue/commit/d2902ca8ec5fd184fe81479fea1318553fdb8323)), closes [#7582](https://github.com/vuejs/vue/issues/7582)
- support custom toString() in text interpolation and v-html ([#8217](https://github.com/vuejs/vue/issues/8217)) ([0e4e45e](https://github.com/vuejs/vue/commit/0e4e45ec741416e0042c29a53bbc0e58c8663f6e)), closes [#8093](https://github.com/vuejs/vue/issues/8093)
- support slot-props and its shorthand ([584e89d](https://github.com/vuejs/vue/commit/584e89da4ab17e1ebdae0ae10be77ef9d230c7a0))
- support v-html for SVG elements ([#8652](https://github.com/vuejs/vue/issues/8652)) ([a981c80](https://github.com/vuejs/vue/commit/a981c80d2aedb0d56f98865e39c981819fbf65d0))
- **types:** add Prop to main type declaration file ([#6856](https://github.com/vuejs/vue/issues/6856)) ([5791072](https://github.com/vuejs/vue/commit/57910723c6ba68386c15e095e42c1ed9603c7bcf)), closes [#6850](https://github.com/vuejs/vue/issues/6850)
- **types:** add types for vue-template-compiler ([#7918](https://github.com/vuejs/vue/issues/7918)) ([ced774b](https://github.com/vuejs/vue/commit/ced774be6ddbc53884d7a5d395514a9f62e32336))
- use event delegation when possible ([b7f7f27](https://github.com/vuejs/vue/commit/b7f7f2756928f409950186c5d641034f362b392a)), closes [#6566](https://github.com/vuejs/vue/issues/6566)
- v-bind.sync also listens for kebab-case update event ([#8297](https://github.com/vuejs/vue/issues/8297)) ([3fca527](https://github.com/vuejs/vue/commit/3fca52792ef83fa58a5c28882706d9e8a039790d)), closes [#6428](https://github.com/vuejs/vue/issues/6428)
- **v-for:** support iterables in v-for ([#8179](https://github.com/vuejs/vue/issues/8179)) ([d40eb9c](https://github.com/vuejs/vue/commit/d40eb9c2880c8dd27fedb9fbc508823a15742274))
## [2.5.22](https://github.com/vuejs/vue/compare/v2.5.21...v2.5.22) (2019-01-11)
### Bug Fixes
- **async component:** memory leak after synchronous async loading ([#9275](https://github.com/vuejs/vue/issues/9275)) ([d21e931](https://github.com/vuejs/vue/commit/d21e93139697be2c0a6fdc4ee74d30d2834a729f)), closes [#9229](https://github.com/vuejs/vue/issues/9229)
- **core:** dedupe lifecycle hooks during options merge ([0d2e9c4](https://github.com/vuejs/vue/commit/0d2e9c46f16e9ec5bd0f3eebd2aa31c7f7493856)), closes [#9199](https://github.com/vuejs/vue/issues/9199)
- **core:** fix merged twice bug when passing extended constructor to mixins ([#9199](https://github.com/vuejs/vue/issues/9199)) ([743edac](https://github.com/vuejs/vue/commit/743edacdb6fa0bb711e860b68373274f50c8baa5)), closes [#9198](https://github.com/vuejs/vue/issues/9198)
- **ssr:** support rendering comment ([#9128](https://github.com/vuejs/vue/issues/9128)) ([b06c784](https://github.com/vuejs/vue/commit/b06c784b81a244e1bc2d028216fcd2ab873730b9))
## [2.5.21](https://github.com/vuejs/vue/compare/v2.5.20...v2.5.21) (2018-12-11)
### Bug Fixes
- fix single v-for child optimization ([847e493](https://github.com/vuejs/vue/commit/847e493768371cec4718969e02bdb7f8463f4e03))
- fix v-for component with undefined value ([4748760](https://github.com/vuejs/vue/commit/47487607fbb99339038cf84990ba341c25b5e20d)), closes [#9181](https://github.com/vuejs/vue/issues/9181)
- **lifecycle:** beforeUpdated should not be called if component is destroyed ([#9171](https://github.com/vuejs/vue/issues/9171)) ([87bad80](https://github.com/vuejs/vue/commit/87bad80f0cb9a30b95d9410120ff6e3e2022a723)), closes [#8076](https://github.com/vuejs/vue/issues/8076)
- **types:** accept primitive and falsy values in createElement children ([#9154](https://github.com/vuejs/vue/issues/9154)) ([d780dd2](https://github.com/vuejs/vue/commit/d780dd2e2adcf71f40c086055a659a9a2b4a8282)), closes [#8498](https://github.com/vuejs/vue/issues/8498)
- **v-model:** properly handle multiline v-model expressions ([#9184](https://github.com/vuejs/vue/issues/9184)) ([3d44937](https://github.com/vuejs/vue/commit/3d449376d557c4533a9664f95df3a168ecee9bfa)), closes [#9183](https://github.com/vuejs/vue/issues/9183)
- **weex:** support data class type that is string ([#9139](https://github.com/vuejs/vue/issues/9139)) ([d8285c5](https://github.com/vuejs/vue/commit/d8285c57a613c42eddf2d4f2b75c1cea6aa4703a)), closes [#9124](https://github.com/vuejs/vue/issues/9124)
### Performance Improvements
- skip normalization on single child element v-for ([4074104](https://github.com/vuejs/vue/commit/4074104fac219e61e542f4da3a4800975a8063f2))
### Reverts
- "chore: use keypress in TodoMVC example for IME input methods ([#9172](https://github.com/vuejs/vue/issues/9172))" ([80fb6b8](https://github.com/vuejs/vue/commit/80fb6b8da144bd9c2313702e23a35d72fa620135))
## [2.5.20](https://github.com/vuejs/vue/compare/v2.5.19...v2.5.20) (2018-12-10)
### Bug Fixes
- **types:** avoid `this` in VueConstructor signature ([#9173](https://github.com/vuejs/vue/issues/9173)) ([e06d2af](https://github.com/vuejs/vue/commit/e06d2af276fc8d626a3b048f4d138a243aa690a4)), closes [/github.com/vuejs/vue-class-component/issues/294#issuecomment-445526936](https://github.com//github.com/vuejs/vue-class-component/issues/294/issues/issuecomment-445526936)
## [2.5.19](https://github.com/vuejs/vue/compare/v2.5.18...v2.5.19) (2018-12-09)
### Bug Fixes
- **ssr:** should not warn for custom directives that do not have ssr implementation ([780dac5](https://github.com/vuejs/vue/commit/780dac561b9cd6c3cec28f154f76e7d28352ebf3)), closes [#9167](https://github.com/vuejs/vue/issues/9167)
- **vdom:** remove unnecessary sameVnode condition ([0d4b35f](https://github.com/vuejs/vue/commit/0d4b35f55975946cb0eb4f7f5f35efe3d078473e)), closes [#9168](https://github.com/vuejs/vue/issues/9168)
### Reverts
- fix(sfc): avoid deindent when pad option is specified ([#7647](https://github.com/vuejs/vue/issues/7647)) ([5d721a4](https://github.com/vuejs/vue/commit/5d721a42b140865e50a78445fe21c5f270bde703))
## [2.5.18](https://github.com/vuejs/vue/compare/v2.5.18-beta.0...v2.5.18) (2018-12-07)
### Bug Fixes
- **compiler:** fix codegen for v-for component inside template ([1b4a8a0](https://github.com/vuejs/vue/commit/1b4a8a0c1edaf9c7eb129ba61bca94ba607bbf56)), closes [#9142](https://github.com/vuejs/vue/issues/9142)
- fix keyName checking for space and delete in IE11 ([#9150](https://github.com/vuejs/vue/issues/9150)) ([0ed0aad](https://github.com/vuejs/vue/commit/0ed0aad77228b95e9a61a87386736938837527f8)), closes [#9112](https://github.com/vuejs/vue/issues/9112)
- **ssr:** fix ssr template publicPath generation ([f077ed1](https://github.com/vuejs/vue/commit/f077ed17af14bb2675db64b2aa2d023769219624)), closes [#9145](https://github.com/vuejs/vue/issues/9145)
- **transition-group:** fix activeInstance regression ([8a2dbf5](https://github.com/vuejs/vue/commit/8a2dbf50105ea729125a42fecfe2c2f0371d7836)), closes [#9151](https://github.com/vuejs/vue/issues/9151)
- **types:** correct scopedSlot types ([#9131](https://github.com/vuejs/vue/issues/9131)) ([448ba65](https://github.com/vuejs/vue/commit/448ba65d2b139b29f1e6891add9925ac22ffe10b)), closes [#8946](https://github.com/vuejs/vue/issues/8946)
- **types:** type support for advanced async components ([#8438](https://github.com/vuejs/vue/issues/8438)) ([dfaf9e2](https://github.com/vuejs/vue/commit/dfaf9e24361e10ae68ce3951eaf48262cf90f0ec))
## [2.5.18-beta.0](https://github.com/vuejs/vue/compare/v2.5.17-beta.0...v2.5.18-beta.0) (2018-12-02)
### Bug Fixes
- actually disable dep collection when invoking lifecycle hooks ([#9095](https://github.com/vuejs/vue/issues/9095)) ([0d62bb8](https://github.com/vuejs/vue/commit/0d62bb84ffa1af7a4826aecc11c429c7a020645c)), closes [#9046](https://github.com/vuejs/vue/issues/9046)
- **compiler:** wrap scoped slots v-if conditions in parens ([#9119](https://github.com/vuejs/vue/issues/9119)) ([ef8524a](https://github.com/vuejs/vue/commit/ef8524ab7db8d64ac449ce74f5858aa9d91357ad)), closes [#9114](https://github.com/vuejs/vue/issues/9114)
- **compiler:** maybeComponent should return true when "is" attribute exists ([#8114](https://github.com/vuejs/vue/issues/8114)) ([aef2a5f](https://github.com/vuejs/vue/commit/aef2a5f3dbd5e52ec9d5ce026d7b858539057186)), closes [#8101](https://github.com/vuejs/vue/issues/8101)
- **compiler:** normalize potential functional component children in v-for ([#8558](https://github.com/vuejs/vue/issues/8558)) ([d483a49](https://github.com/vuejs/vue/commit/d483a49c86874b2e75863b661f81feecd46ae721)), closes [#8468](https://github.com/vuejs/vue/issues/8468)
- **compiler:** should keep newline after unary tags in `<pre>` ([#8965](https://github.com/vuejs/vue/issues/8965)) ([05001e6](https://github.com/vuejs/vue/commit/05001e695ebd0b0504d664197a4771463a0f5328)), closes [#8950](https://github.com/vuejs/vue/issues/8950)
- **compiler:** templates inside v-pre should be rendered to HTML ([#8146](https://github.com/vuejs/vue/issues/8146)) ([ecac831](https://github.com/vuejs/vue/commit/ecac831691d27cf7a10ec73a004d3fbad7623d1a)), closes [#8041](https://github.com/vuejs/vue/issues/8041)
- **component:** clean up memory leak after loading async component completes (fix [#8740](https://github.com/vuejs/vue/issues/8740)) ([#8755](https://github.com/vuejs/vue/issues/8755)) ([2e472c5](https://github.com/vuejs/vue/commit/2e472c5e5e559a7a4083b4164ffe0c3911ce0651))
- **core:** avoid mutating original children when cloning vnode ([097f622](https://github.com/vuejs/vue/commit/097f6229dffc34af452b106ad2a3b58845588807)), closes [#7975](https://github.com/vuejs/vue/issues/7975)
- **core:** properly handle reused vnodes ([530ca1b](https://github.com/vuejs/vue/commit/530ca1b2db315fbd0e360807b2031d26665c5d3d)), closes [#7913](https://github.com/vuejs/vue/issues/7913)
- **core:** skip mixins and extends if child is already merged ([#8870](https://github.com/vuejs/vue/issues/8870)) ([80f17fa](https://github.com/vuejs/vue/commit/80f17fa498f5df0388412877799dbd7573c44b2d)), closes [#8865](https://github.com/vuejs/vue/issues/8865)
- **data:** skip recursive call if values are identical ([#8967](https://github.com/vuejs/vue/issues/8967)) ([a7658e0](https://github.com/vuejs/vue/commit/a7658e03a16dc507f0abeba41aee705f773727d0))
- **error handling:** handle errors on immediate watcher execution ([#8581](https://github.com/vuejs/vue/issues/8581)) ([2686818](https://github.com/vuejs/vue/commit/2686818beb5728e3b7aa22f47a3b3f0d39d90c8e)), closes [#8567](https://github.com/vuejs/vue/issues/8567)
- fix potential xss vulnerability in ssr when using v-bind ([3d36a44](https://github.com/vuejs/vue/commit/3d36a443c755bf16f2656a8595dda9076f021a4a))
- fix server env detection in wechat mini program ([#9075](https://github.com/vuejs/vue/issues/9075)) ([05e8bcf](https://github.com/vuejs/vue/commit/05e8bcfe5d308f280f3640df96bd170fbcf1a9b5))
- **for:** use IE compatible regex in v-for regex ([#8048](https://github.com/vuejs/vue/issues/8048)) ([ecc239e](https://github.com/vuejs/vue/commit/ecc239e47516d7f9a93b2cd49da4a2000960b8f7)), closes [#7946](https://github.com/vuejs/vue/issues/7946)
- handle undefined style properties in jsdom (fix [#7444](https://github.com/vuejs/vue/issues/7444)) ([#8281](https://github.com/vuejs/vue/issues/8281)) ([5cfdf1a](https://github.com/vuejs/vue/commit/5cfdf1a2484fa73b572eae4afd196dcf9e1912ba))
- **lifecycle:** updated should not be called after component being destroyed ([#8381](https://github.com/vuejs/vue/issues/8381)) ([a64ff19](https://github.com/vuejs/vue/commit/a64ff1957c35270b818aa9cfdfb2acb6e42ce2a9)), closes [#8076](https://github.com/vuejs/vue/issues/8076)
- make sure global state is restored in the case of an exception in macrotask callback ([#9093](https://github.com/vuejs/vue/issues/9093)) ([b111de4](https://github.com/vuejs/vue/commit/b111de486b1bdc747fe0f5795fe22697d151bb8c))
- **parser:** allow CRLFs in string interpolations ([#8408](https://github.com/vuejs/vue/issues/8408)) ([8f04135](https://github.com/vuejs/vue/commit/8f04135dbaa5f5f0500d42c0968beba8043f5363)), closes [#8103](https://github.com/vuejs/vue/issues/8103)
- replace hardcoded .parentNode with abstract ops, fix [#8713](https://github.com/vuejs/vue/issues/8713) ([#8714](https://github.com/vuejs/vue/issues/8714)) ([1e1ce0c](https://github.com/vuejs/vue/commit/1e1ce0cac7d6c22c980021cbd3cb207a47e85dfb))
- **server:** use path.posix.join to generate public path ([#8177](https://github.com/vuejs/vue/issues/8177)) ([46b8d2c](https://github.com/vuejs/vue/commit/46b8d2c59dc259995a71662229ed52b8b8beeb38)), closes [#8167](https://github.com/vuejs/vue/issues/8167)
- **sfc:** avoid deindent when pad option is specified ([#7647](https://github.com/vuejs/vue/issues/7647)) ([9d2f9a0](https://github.com/vuejs/vue/commit/9d2f9a034f9c40d5ba6d8b1e131b1bfb675dc1cf))
- **shared:** check dates in looseEqual ([#7940](https://github.com/vuejs/vue/issues/7940)) ([db7287c](https://github.com/vuejs/vue/commit/db7287c23b11bdc032fb0786e6617f3c6c40c835)), closes [#7928](https://github.com/vuejs/vue/issues/7928)
- **ssr:** adjust call stack size defer threshold ([e4b1b57](https://github.com/vuejs/vue/commit/e4b1b57fd7117a19cdb376dcb156606e0cc32a94)), closes [#8545](https://github.com/vuejs/vue/issues/8545)
- **ssr:** check js assets more accurate in ssr webpack plugin ([#8639](https://github.com/vuejs/vue/issues/8639)) ([5624278](https://github.com/vuejs/vue/commit/5624278fbe5d85cfe578d749da12b1e73c3e61a9))
- **ssr:** computed properties should pass vm as first argument in ssr ([#9090](https://github.com/vuejs/vue/issues/9090)) ([33e669b](https://github.com/vuejs/vue/commit/33e669b22f69a1f9c9147528360fe0bba85534f0)), closes [#8977](https://github.com/vuejs/vue/issues/8977)
- **ssr:** fix double escaping of staticClass values ([#7859](https://github.com/vuejs/vue/issues/7859)) ([#8037](https://github.com/vuejs/vue/issues/8037)) ([c21b89e](https://github.com/vuejs/vue/commit/c21b89ebeda4c45024c2a71bc7a292d47ebc7ee1))
- **ssr:** remove trailing hash in webpack module identifier when ([ae6dcd6](https://github.com/vuejs/vue/commit/ae6dcd63a017059644502f8741d8a514f3e9cf84))
- **ssr:** render initial and used async css chunks ([#7902](https://github.com/vuejs/vue/issues/7902)) ([575b6e7](https://github.com/vuejs/vue/commit/575b6e77ab82b0bbc581aec3ea9b07135d2d1fcd)), closes [#7897](https://github.com/vuejs/vue/issues/7897)
- **ssr:** resolve server directives the same as on client ([#9129](https://github.com/vuejs/vue/issues/9129)) ([3078352](https://github.com/vuejs/vue/commit/307835284a326569ea12c4a22c7dcb8f36d2d8ca)), closes [#8961](https://github.com/vuejs/vue/issues/8961)
- support modifier combination of click.right + .once ([#8492](https://github.com/vuejs/vue/issues/8492)) ([eb60452](https://github.com/vuejs/vue/commit/eb604529c62e9954305889122f34499ad75b3b45))
- **transition:** check existence of `el.parentNode` ([#8422](https://github.com/vuejs/vue/issues/8422)) ([0b16927](https://github.com/vuejs/vue/commit/0b16927c9d382b9cf134b131b898350340c2ee41)), closes [#8199](https://github.com/vuejs/vue/issues/8199)
- **transition:** handle local-formatted floats in toMs function. ([#8495](https://github.com/vuejs/vue/issues/8495)) ([59d4351](https://github.com/vuejs/vue/commit/59d4351ad8fc042bc263a16ed45a56e9ff5b013e)), closes [#4894](https://github.com/vuejs/vue/issues/4894)
- **transition:** transition-group should only listen for first-level children's end events ([#8374](https://github.com/vuejs/vue/issues/8374)) ([504d5da](https://github.com/vuejs/vue/commit/504d5da7eff1c77117c2f57b0c4238e56de80fc5))
- **types:** accept `number` type as key on Vue.set/delete ([#8707](https://github.com/vuejs/vue/issues/8707)) ([#8709](https://github.com/vuejs/vue/issues/8709)) ([0ba79e2](https://github.com/vuejs/vue/commit/0ba79e2588309ba386f570ed84d372611c4dd165))
- **types:** fix `renderError`arguments type ([#8636](https://github.com/vuejs/vue/issues/8636)) ([ac217d2](https://github.com/vuejs/vue/commit/ac217d2472bb92ce901ef1f46595b44a1b5d1a18)), closes [#8635](https://github.com/vuejs/vue/issues/8635)
- **types:** fix vm.$once argument type ([#8995](https://github.com/vuejs/vue/issues/8995)) ([97086f3](https://github.com/vuejs/vue/commit/97086f365808a040f6cf1ddb12e2b3f63d7769bf)), closes [#8983](https://github.com/vuejs/vue/issues/8983)
- **types:** make VNodeDirective properties optional, fix [#8013](https://github.com/vuejs/vue/issues/8013) ([#8003](https://github.com/vuejs/vue/issues/8003)) ([99a51b4](https://github.com/vuejs/vue/commit/99a51b452fa13fc4392e87215a8c3024adf5f710))
- **types:** relax the return type of props default option ([#8537](https://github.com/vuejs/vue/issues/8537)) ([a9eb198](https://github.com/vuejs/vue/commit/a9eb198413e7b1baaf364e93ec3c093734529fe8))
- **types:** support chain call for Vue.use and Vue.mixin ([#8595](https://github.com/vuejs/vue/issues/8595)) ([c711ec1](https://github.com/vuejs/vue/commit/c711ec189aaf46399756e34d933ba5e0b6576c36))
- **types:** support typing $el as SVGElement ([#8809](https://github.com/vuejs/vue/issues/8809)) ([3cd4af4](https://github.com/vuejs/vue/commit/3cd4af4af0a8a67f5887d5fc967147d433c8612c))
- v-bind object should be overridable with kebab-cased props ([#8845](https://github.com/vuejs/vue/issues/8845)) ([7585241](https://github.com/vuejs/vue/commit/758524134e71ae025238e16a4c1f2b30a1310fe8))
- **v-model:** avoid duplicate model transforms ([7b7164c](https://github.com/vuejs/vue/commit/7b7164c11cbb74ed44ee086f0a82acfcc1ff47a2)), closes [#8436](https://github.com/vuejs/vue/issues/8436)
- **v-on:** correctly remove once listener ([#8036](https://github.com/vuejs/vue/issues/8036)) ([19c33a7](https://github.com/vuejs/vue/commit/19c33a7e4072b03069f803263ed0c49feb5f73a9)), closes [#8032](https://github.com/vuejs/vue/issues/8032)
- **v-pre:** skip compiling custom component tags in v-pre blocks (fix [#8286](https://github.com/vuejs/vue/issues/8286)) ([#8376](https://github.com/vuejs/vue/issues/8376)) ([a71853b](https://github.com/vuejs/vue/commit/a71853bfc5b6ee117af05408f4d75c80893d44e2))
### Features
- add async option ([#8240](https://github.com/vuejs/vue/issues/8240)) ([c944827](https://github.com/vuejs/vue/commit/c94482743c41e9bfc745aa06d63f7f83bdd56991))
- **devtools:** store functional render context on vnode in development ([#8586](https://github.com/vuejs/vue/issues/8586)) ([4ecc21c](https://github.com/vuejs/vue/commit/4ecc21c29ec12bb33d3b426cb4d42c579e9b0f2d))
- **server, webpack-plugin:** webpack 4 support ([#7839](https://github.com/vuejs/vue/issues/7839)) ([ef0b250](https://github.com/vuejs/vue/commit/ef0b25097957ae9ef9970be732d6e65cc78902e9))
- **weex:** support object syntax of class ([#7930](https://github.com/vuejs/vue/issues/7930)) ([6226503](https://github.com/vuejs/vue/commit/62265035c0c400ad6ec213541dd7cca58dd71f6e))
### Reverts
- Revert "perf: avoid unnecessary re-renders when computed property value did not change (#7824)" ([6b1d431](https://github.com/vuejs/vue/commit/6b1d431a89f3f7438d01d8cc98546397f0983287)), closes [#7824](https://github.com/vuejs/vue/issues/7824)
## [2.5.17-beta.0](https://github.com/vuejs/vue/compare/v2.5.16...v2.5.17-beta.0) (2018-03-23)
### Bug Fixes
- add missing `asyncMeta` during VNode cloning ([#7861](https://github.com/vuejs/vue/issues/7861)) ([8227fb3](https://github.com/vuejs/vue/commit/8227fb35240ab1f301c30a6ad5d4d25071fa7996))
- beforeUpdate should be called before render and allow state mutation ([#7822](https://github.com/vuejs/vue/issues/7822)) ([b7445a2](https://github.com/vuejs/vue/commit/b7445a2b945dcded287601ace8e711ab5cf35ab5)), closes [#7481](https://github.com/vuejs/vue/issues/7481)
- **codegen:** support IE11 and Edge use of "Esc" key ([#7887](https://github.com/vuejs/vue/issues/7887)) ([1bd6196](https://github.com/vuejs/vue/commit/1bd6196fb234c28754d9a27095afe0b5b84990ad)), closes [#7880](https://github.com/vuejs/vue/issues/7880)
- correct the `has` implementation in the `_renderProxy` ([#7878](https://github.com/vuejs/vue/issues/7878)) ([7b38739](https://github.com/vuejs/vue/commit/7b387390aa917edffc0eabce0b4186ea1ef40e2c))
- ensure init/prepatch hooks are still respected ([de42278](https://github.com/vuejs/vue/commit/de42278d34f6a800cec5c7eb781c1b8b83a829dd)), closes [vue-router#1338](https://github.com/vue-router/issues/1338)
- invoke component node create hooks before insertion ([#7823](https://github.com/vuejs/vue/issues/7823)) ([f43ce3a](https://github.com/vuejs/vue/commit/f43ce3a5d8f73e273f2d03c9d86ea5662cda481a)), closes [#7531](https://github.com/vuejs/vue/issues/7531)
- **observer:** invoke getters on initial observation if setter defined ([#7828](https://github.com/vuejs/vue/issues/7828)) ([7a145d8](https://github.com/vuejs/vue/commit/7a145d86430bad65271f4d6ab1344b215fefe52a))
### Performance Improvements
- avoid unnecessary re-renders when computed property value did not change ([#7824](https://github.com/vuejs/vue/issues/7824)) ([653aac2](https://github.com/vuejs/vue/commit/653aac2c57d15f0e93a2c1cc7e6fad156658df19)), closes [#7767](https://github.com/vuejs/vue/issues/7767)
### Reverts
- Revert "refactor: remove unnecessary checks (#7875)" ([903be9b](https://github.com/vuejs/vue/commit/903be9b91f7c41d40e228676df9d66d2c064fe23)), closes [#7875](https://github.com/vuejs/vue/issues/7875)
## [2.5.16](https://github.com/vuejs/vue/compare/v2.5.15...v2.5.16) (2018-03-13)
### Bug Fixes
- allow multiline expression in v-for ([71b4b25](https://github.com/vuejs/vue/commit/71b4b25375fa4bcd929e1161c35cab133e4a7c23)), closes [#7792](https://github.com/vuejs/vue/issues/7792)
- **core:** Make set/delete warning condition for undefined, null and ([#7818](https://github.com/vuejs/vue/issues/7818)) ([9084747](https://github.com/vuejs/vue/commit/9084747e307dc9b415ff8e2a788c6a585a2a8f6c)), closes [#7452](https://github.com/vuejs/vue/issues/7452)
- fix keyName checking for arrow keys in IE11 ([4378fc5](https://github.com/vuejs/vue/commit/4378fc5124067c2b3a3517dd7f527edd9be2ad37)), closes [#7806](https://github.com/vuejs/vue/issues/7806)
- fix regression on duplicate component init when using shared data objects ([984927a](https://github.com/vuejs/vue/commit/984927a1a98d10ad8af44f2accfb08d34d517610)), closes [#7805](https://github.com/vuejs/vue/issues/7805)
- fix wrongly matched named slots in functional components ([62a922e](https://github.com/vuejs/vue/commit/62a922e865f5e578f67b386cb614abfc173d7851)), closes [#7817](https://github.com/vuejs/vue/issues/7817)
- **keep-alive:** run prune after render for correct active component check ([215f877](https://github.com/vuejs/vue/commit/215f877d1b7eb6583f7adf15676ead8611f07379)), closes [#7566](https://github.com/vuejs/vue/issues/7566)
- **model:** fix static input type being overwritten by v-bind object ([#7819](https://github.com/vuejs/vue/issues/7819)) ([a6169d1](https://github.com/vuejs/vue/commit/a6169d1eb71d64eacddf1738e72d21725e2bff00)), closes [#7811](https://github.com/vuejs/vue/issues/7811)
- named slots for nested functional components ([6dd73e9](https://github.com/vuejs/vue/commit/6dd73e9ee44c09f04d3f616fcce18750a55e2e4f)), closes [#7710](https://github.com/vuejs/vue/issues/7710)
- **ssr:** fix SSR for async functional components ([882e719](https://github.com/vuejs/vue/commit/882e7199fd8eee039291c4b9f7f324dcf46f32fd)), closes [#7784](https://github.com/vuejs/vue/issues/7784)
- **ssr:** fix v-show inline style rendering when style binding is array ([#7814](https://github.com/vuejs/vue/issues/7814)) ([1a979c4](https://github.com/vuejs/vue/commit/1a979c44d6543d89f8a7e26ad7f995b1bf2aee3c)), closes [#7813](https://github.com/vuejs/vue/issues/7813)
## [2.5.15](https://github.com/vuejs/vue/compare/v2.5.14...v2.5.15) (2018-03-10)
### Bug Fixes
- do not traverse VNodes when registering dependencies ([84a9a9d](https://github.com/vuejs/vue/commit/84a9a9d61057f6f40a9ad2bee456b39ef0a8f001)), closes [#7786](https://github.com/vuejs/vue/issues/7786)
## [2.5.14](https://github.com/vuejs/vue/compare/v2.5.13...v2.5.14) (2018-03-09)
### Bug Fixes
- address potential regex backtrack ([cd33407](https://github.com/vuejs/vue/commit/cd334070f3b82d3f5892c4999cc290ccd4f56fd8))
- allow codebase to be inlined directly in HTML ([#7314](https://github.com/vuejs/vue/issues/7314)) ([dccd182](https://github.com/vuejs/vue/commit/dccd182b6763d8ef1871949029c85495ca958246)), closes [#7298](https://github.com/vuejs/vue/issues/7298)
- always install composition event listeners ([f7ca21e](https://github.com/vuejs/vue/commit/f7ca21eab1e0d661945aa6070fc988028c90966f)), closes [#7367](https://github.com/vuejs/vue/issues/7367)
- clean up custom events when patched component no longer have events ([d8b0838](https://github.com/vuejs/vue/commit/d8b08387a293c99b95c1efcf2517447335a618db)), closes [#7294](https://github.com/vuejs/vue/issues/7294)
- **codegen:** support filters with () in older browsers ([#7545](https://github.com/vuejs/vue/issues/7545)) ([dc97a39](https://github.com/vuejs/vue/commit/dc97a39c2f41ce57431d42d8b41811866f8e105c)), closes [#7544](https://github.com/vuejs/vue/issues/7544)
- **core:** disable dependency collection in lifecycle hooks and data getter ([#7596](https://github.com/vuejs/vue/issues/7596)) ([318f29f](https://github.com/vuejs/vue/commit/318f29fcdf3372ff57a09be6d1dc595d14c92e70)), closes [#7573](https://github.com/vuejs/vue/issues/7573)
- **core:** handle edge cases for functional component returning arrays ([8335217](https://github.com/vuejs/vue/commit/8335217cb4bd13fb07e08a76c07df0fceed6c197)), closes [#7282](https://github.com/vuejs/vue/issues/7282)
- do not special case attributes for custom elements ([50b711a](https://github.com/vuejs/vue/commit/50b711af43708426e63b4ea529436b49fafc3f2e)), closes [#6864](https://github.com/vuejs/vue/issues/6864) [#6885](https://github.com/vuejs/vue/issues/6885)
- fix config.productionTip ([ced00b1](https://github.com/vuejs/vue/commit/ced00b1dec8326a653cce225133927fe5b4a3109)), closes [#7565](https://github.com/vuejs/vue/issues/7565)
- fix ssr env detection in weex ([#7375](https://github.com/vuejs/vue/issues/7375)) ([3eb37ac](https://github.com/vuejs/vue/commit/3eb37acf98e2d9737de897ebe7bdb7e9576bcc21))
- **inject:** use hasOwn instead of 'in' for provideKey check ([#7460](https://github.com/vuejs/vue/issues/7460)) ([733c1be](https://github.com/vuejs/vue/commit/733c1be7f5983cdd9e8089a8088b235ba21a4dee)), closes [#7284](https://github.com/vuejs/vue/issues/7284)
- install ssr helpers for functional context during SSR ([9b22d86](https://github.com/vuejs/vue/commit/9b22d86ab315a3c6061a6a4776eab1964304f92e)), closes [#7443](https://github.com/vuejs/vue/issues/7443) [nuxt/nuxt.js#2565](https://github.com/nuxt/nuxt.js/issues/2565)
- **model:** fix array index binding for v-model checkbox ([#7671](https://github.com/vuejs/vue/issues/7671)) ([550c3c0](https://github.com/vuejs/vue/commit/550c3c0d14af5485bb7e507c504664a7136e9bf9)), closes [#7670](https://github.com/vuejs/vue/issues/7670)
- **observer:** do not invoke getters on initial observation ([#7302](https://github.com/vuejs/vue/issues/7302)) ([7392dfc](https://github.com/vuejs/vue/commit/7392dfcc1d5fd7b257df5ae134f9eb2f0cc0a51e)), closes [#7280](https://github.com/vuejs/vue/issues/7280)
- **ref:** allow ref key to be zero ([#7676](https://github.com/vuejs/vue/issues/7676)) ([e396eb3](https://github.com/vuejs/vue/commit/e396eb3445904f11232f2355f03e8356173d0e31)), closes [#7669](https://github.com/vuejs/vue/issues/7669)
- respect type order when boolean casting multi-typed props ([81e1e47](https://github.com/vuejs/vue/commit/81e1e47cabbd479e2a285f03120944f1efffe749)), closes [#7485](https://github.com/vuejs/vue/issues/7485)
- **show:** prevent transitions from starting on change truthy values ([#7524](https://github.com/vuejs/vue/issues/7524)) ([013d980](https://github.com/vuejs/vue/commit/013d98092868a0c6721831e91616c64f99119b74)), closes [#7523](https://github.com/vuejs/vue/issues/7523)
- skip v-model & value binding collision check with dynamic type binding ([#7406](https://github.com/vuejs/vue/issues/7406)) ([1c0b4af](https://github.com/vuejs/vue/commit/1c0b4af5fd2f9e8173b8f4718018ee80a6313872)), closes [#7404](https://github.com/vuejs/vue/issues/7404)
- support KeyboardEvent.key in built-in keyboard event modifiers ([#7121](https://github.com/vuejs/vue/issues/7121)) ([1c8e2e8](https://github.com/vuejs/vue/commit/1c8e2e88ed2d74a02178217b318564b73a096c18)), closes [#6900](https://github.com/vuejs/vue/issues/6900)
- **transition:** should not add transition class when cancelled ([#7391](https://github.com/vuejs/vue/issues/7391)) ([5191f13](https://github.com/vuejs/vue/commit/5191f13472d1fc37bdd601079970201fde6bf13e)), closes [#7390](https://github.com/vuejs/vue/issues/7390)
- **types:** add missing `listeners` type on RenderContext ([#7584](https://github.com/vuejs/vue/issues/7584)) ([db1b18c](https://github.com/vuejs/vue/commit/db1b18ceec51761f1bcd6160c51e02b36b86a9c2))
- **types:** contravariant generic default in ComponentOption ([#7369](https://github.com/vuejs/vue/issues/7369)) ([6ee6849](https://github.com/vuejs/vue/commit/6ee684983b1f3384a4050d7c47cee7c6a325db8b))
- **types:** fix wrong errorCaptured type ([#7712](https://github.com/vuejs/vue/issues/7712)) ([6b8516b](https://github.com/vuejs/vue/commit/6b8516b2dde52be643ee6855b45b253a17ed0461))
- **types:** make render option in functional components to optional ([#7663](https://github.com/vuejs/vue/issues/7663)) ([b2092db](https://github.com/vuejs/vue/commit/b2092dbff9ab0ccfa8e59ed3ca540cca0715c683))
- **types:** make VNodeChildrenArrayContents type more accurate ([#7287](https://github.com/vuejs/vue/issues/7287)) ([49aae6b](https://github.com/vuejs/vue/commit/49aae6bb157e0650507974b7a9a1b0f2215e400b))
- **types:** prefer normal component over functional one ([#7687](https://github.com/vuejs/vue/issues/7687)) ([144bf5a](https://github.com/vuejs/vue/commit/144bf5a99e2ebd644f80bc8ab61cd1bf0366961a))
- **v-model:** handle trailing whitespaces in expression ([#7737](https://github.com/vuejs/vue/issues/7737)) ([db58493](https://github.com/vuejs/vue/commit/db584931e20f9ad4b423cfc14d587f9d0240a565))
- **v-on:** return handler value when using modifiers ([#7704](https://github.com/vuejs/vue/issues/7704)) ([6bc75ca](https://github.com/vuejs/vue/commit/6bc75cacb72c0cc7f3d1041b5d9ff447ac2f5f69))
- **vdom:** svg inside foreignObject should be rendered with correct namespace (fix [#7330](https://github.com/vuejs/vue/issues/7330)) ([#7350](https://github.com/vuejs/vue/issues/7350)) ([0529961](https://github.com/vuejs/vue/commit/05299610ea3e89ddbcfe4d8ede0c298223766423))
- **weex:** default value for editor, fix [#7165](https://github.com/vuejs/vue/issues/7165) ([#7286](https://github.com/vuejs/vue/issues/7286)) ([e055df8](https://github.com/vuejs/vue/commit/e055df82fec0e76e4bc65e5a265b42e208595430))
### Features
- support v-model dynamic type binding for v-bind="object" ([41838c8](https://github.com/vuejs/vue/commit/41838c8e8632ba78791996fbc697080b2764bb6a)), closes [#7296](https://github.com/vuejs/vue/issues/7296)
- **weex:** adjust framework entry APIs and add flow annotations ([#7272](https://github.com/vuejs/vue/issues/7272)) ([472a289](https://github.com/vuejs/vue/commit/472a2896bd4f156be168edfecb6ac432b853beb4))
- **weex:** support parse object literal in binding attrs and styles ([#7291](https://github.com/vuejs/vue/issues/7291)) ([ff8fcd2](https://github.com/vuejs/vue/commit/ff8fcd2e2b95694527018f7836bab781f8600d25))
- **weex:** update new syntax for <recycle-list> ([7cc0b55](https://github.com/vuejs/vue/commit/7cc0b559e9e57fcb3baeae5d8d4c8964aa335b5e))
- **weex:** update weex recycle-list compiler ([#7610](https://github.com/vuejs/vue/issues/7610)) ([d6200d7](https://github.com/vuejs/vue/commit/d6200d70261c4a8943190900e0721ede1c4a4f2b))
## [2.5.13](https://github.com/vuejs/vue/compare/v2.5.12...v2.5.13) (2017-12-19)
### Reverts
- Revert "feat: auto cache inline prop literals to avoid child re-render" ([aac7634](https://github.com/vuejs/vue/commit/aac76349e70fe0971ee24a7a1f3dada0e3459fb8))
## [2.5.12](https://github.com/vuejs/vue/compare/v2.5.11...v2.5.12) (2017-12-19)
### Bug Fixes
- **warning:** allow symbol as vdom key ([#7271](https://github.com/vuejs/vue/issues/7271)) ([bacb911](https://github.com/vuejs/vue/commit/bacb911f7df09ff4868b4c848a6d7778872dff5c))
- **weex:** append as tree by default for recycle-list and cell-slot ([#7216](https://github.com/vuejs/vue/issues/7216)) ([d544d05](https://github.com/vuejs/vue/commit/d544d052a9c5ec113c253895211296120d58b6ab))
- **weex:** update recycle-list v-for transform ([0ee81b2](https://github.com/vuejs/vue/commit/0ee81b24b5146bca315503e2f5aa3b01832735f1))
### Features
- **$compiler:** compile weex native directives in preTransformNode ([2d09ee3](https://github.com/vuejs/vue/commit/2d09ee3b8ce37e201d3973587d1cb442d5e08f31))
- **$compiler:** supports compiling v-bind to the weex native directive in recycle-list ([8b893c1](https://github.com/vuejs/vue/commit/8b893c13d6ffa79f294fec76a228509ec48e4706))
- **$compiler:** supports compiling v-else-if and v-else to the weex native directive ([2a1ce0d](https://github.com/vuejs/vue/commit/2a1ce0d92cb12c18f945f69ee5cb6914b389e35e))
- **$compiler:** supports compiling v-for to the weex native directive ([9bd1483](https://github.com/vuejs/vue/commit/9bd1483803d046877bef4f7adf1d3a942085ea1b))
- **$event:** support binding parameters on event handler within weex recycle-list ([acdc3c4](https://github.com/vuejs/vue/commit/acdc3c46e98919faa50b3e4cc308ab73b1a60bfe))
- auto cache inline prop literals to avoid child re-render ([996eb00](https://github.com/vuejs/vue/commit/996eb00a0a0933376c9364c2d187e2bf0512ff0d))
- **compile:** supports compiling v-if to the weex native directive ([7ad368e](https://github.com/vuejs/vue/commit/7ad368ebb6987bd4044f9df184d73ce14ca680f2))
- **types:** extract VueConfiguration type for easy expansion ([#7273](https://github.com/vuejs/vue/issues/7273)) ([#7274](https://github.com/vuejs/vue/issues/7274)) ([c0d516c](https://github.com/vuejs/vue/commit/c0d516c283aa1a1c238b6eb8b8e55f64770d27e8))
- **weex:** generate "[@render](https://github.com/render)" function for weex recycle-list ([#6987](https://github.com/vuejs/vue/issues/6987)) ([0c11aa8](https://github.com/vuejs/vue/commit/0c11aa8addf5ad852e37da358ce2887af72e4193))
- **weex:** partially support lifecycles of virtual component ([#7242](https://github.com/vuejs/vue/issues/7242)) ([661bfe5](https://github.com/vuejs/vue/commit/661bfe552e16d3a7036012021ae3746cfc02710e))
- **weex:** pass stateless component test case ([452a65c](https://github.com/vuejs/vue/commit/452a65c98a9354bb529185638475b72d8ca19543))
- **weex:** recycle-list support stateful child component ([70b97ac](https://github.com/vuejs/vue/commit/70b97ac2f43099a57ce2fb0a23dea0553ba95189))
- **weex:** recycle-list support WIP ([5254ee3](https://github.com/vuejs/vue/commit/5254ee31c481ac16cf8f822b0b4df0f7815ffff3))
- **weex:** split text into separate module ([c104cc5](https://github.com/vuejs/vue/commit/c104cc582d647f5e10b90563cb80907b9e30ec12))
- **weex:** support compiling `v-on` in the weex native directive ([#6892](https://github.com/vuejs/vue/issues/6892)) ([2cb8ea3](https://github.com/vuejs/vue/commit/2cb8ea3fee741807a15bf8f3049ab062a7d9508c))
- **weex:** update weex utils ([#7115](https://github.com/vuejs/vue/issues/7115)) ([3b32652](https://github.com/vuejs/vue/commit/3b32652aa68a06d881e3149bb21ac8711887e7f6))
- **weex:** WIP adjust component transform stage ([62e47c9](https://github.com/vuejs/vue/commit/62e47c9eb4446da79d66ad2385c199f31b4348d8))
- **weex:** WIP fix flow + handle errors in recycle-list template render ([5c2ce00](https://github.com/vuejs/vue/commit/5c2ce0017ff8929e70ce9f701b91d950fb351adb))
- **weex:** WIP implement virtual component ([#7165](https://github.com/vuejs/vue/issues/7165)) ([b8d33ec](https://github.com/vuejs/vue/commit/b8d33ecd9ab8b7a46d8558b4e2caf506235cd165))
- **weex:** WIP invoke recycle-list child component with backing instance ([801f793](https://github.com/vuejs/vue/commit/801f793625273b39fd3f25abbaa04508d6651563))
- **weex:** WIP mark recycle list child component root ([88f3889](https://github.com/vuejs/vue/commit/88f3889f19678981944339be8d22c3ebcd11f822))
- **wip:** recycle list template inline expand ([ac99957](https://github.com/vuejs/vue/commit/ac999573ea6e4be3a421cdff79d66a5274ec58eb))
### Reverts
- revert prop object validation ([01c0750](https://github.com/vuejs/vue/commit/01c07503bf6af902dde06fafa8a0008ee3e303aa)), closes [#7279](https://github.com/vuejs/vue/issues/7279)
- **weex:** remove the "receiveTasks" api and support component hook ([#7053](https://github.com/vuejs/vue/issues/7053)) ([0bf0cbe](https://github.com/vuejs/vue/commit/0bf0cbef76a9d107ea0d4fbd8f54f640a2c5b221))
## [2.5.11](https://github.com/vuejs/vue/compare/v2.5.10...v2.5.11) (2017-12-14)
### Bug Fixes
- avoid unnecessary lowercase coersion in component name validation ([3f0c628](https://github.com/vuejs/vue/commit/3f0c628e2c0fe6bfaecc521c96c6cc12ff24c7c4)), closes [#7237](https://github.com/vuejs/vue/issues/7237)
### Features
- warn misspelled keys on prop validation object ([#7198](https://github.com/vuejs/vue/issues/7198)) ([d02bb37](https://github.com/vuejs/vue/commit/d02bb37efb3c4ee14b8cf9db22d1ab3340ba2c0f))
## [2.5.10](https://github.com/vuejs/vue/compare/v2.5.9...v2.5.10) (2017-12-12)
### Bug Fixes
- **core:** warn duplicate keys in all cases ([#7200](https://github.com/vuejs/vue/issues/7200)) ([023f171](https://github.com/vuejs/vue/commit/023f171f58f7f1b36f0b3e69fc6d330366bfdf43)), closes [#7199](https://github.com/vuejs/vue/issues/7199)
- data() should be called with vm as first argument in mixins ([bd4819e](https://github.com/vuejs/vue/commit/bd4819e6cf1c8d70d25aba2636e01f40faf59443)), closes [#7191](https://github.com/vuejs/vue/issues/7191)
- more consistent component naming warnings across the API ([644274c](https://github.com/vuejs/vue/commit/644274cbd34e14e74e8931fa979b22dc2db04895)), closes [#7212](https://github.com/vuejs/vue/issues/7212)
- revert shared static tree cache to avoid memory leak ([5875c7c](https://github.com/vuejs/vue/commit/5875c7c4906873c31b2feb66bb3ab6a19af6f5d7)), closes [#7184](https://github.com/vuejs/vue/issues/7184)
- should not update in-focus input value with lazy modifier ([60da366](https://github.com/vuejs/vue/commit/60da366a2653a3984d79331d02ebb2ecf7e73a9a)), closes [#7153](https://github.com/vuejs/vue/issues/7153)
- **ssr:** fix double escaping of ssrNode attribute values ([#7224](https://github.com/vuejs/vue/issues/7224)) ([73a89bf](https://github.com/vuejs/vue/commit/73a89bf9e53c0f7f00f193e1b1bb195a71ab761f)), closes [#7223](https://github.com/vuejs/vue/issues/7223)
- **ssr:** properly handle errors in async component ([8936b8d](https://github.com/vuejs/vue/commit/8936b8d9c147441555fcfd4ac748d817ba5ff60e)), closes [#6778](https://github.com/vuejs/vue/issues/6778)
- **v-for:** support array and nested destructuring in v-for ([f5ce6b5](https://github.com/vuejs/vue/commit/f5ce6b50cffef2e0eb8895c462b2433d8f8a701f))
- **weex:** send createFinish signal after root component mounted ([#7154](https://github.com/vuejs/vue/issues/7154)) ([0da8bce](https://github.com/vuejs/vue/commit/0da8bced77654beb14c39ff3b4543b2ef37d1aff))
## [2.5.9](https://github.com/vuejs/vue/compare/v2.5.8...v2.5.9) (2017-11-27)
### Bug Fixes
- block unnecessary input event on textarea placeholder in IE ([0f7c443](https://github.com/vuejs/vue/commit/0f7c443dca800204bc2e00876365869ee79e2d7b)), closes [#7138](https://github.com/vuejs/vue/issues/7138)
- ensure functionalContext is cloned during slot clones ([604e081](https://github.com/vuejs/vue/commit/604e081d0456ed136b24b5f759c608d153dfae93)), closes [#7106](https://github.com/vuejs/vue/issues/7106)
- fix async component resolving in sibling mounted hook ([dd21eac](https://github.com/vuejs/vue/commit/dd21eacc33fee8f8e6151fe1dcb419644f8f98c2)), closes [#7107](https://github.com/vuejs/vue/issues/7107)
- fix v-for iterator parsing destructuring + parens without index ([aa82625](https://github.com/vuejs/vue/commit/aa8262540ac0115d56b53863302b9f8e69f8a03d))
- **keep-alive:** should not destroy active instance when pruning cache ([3932a45](https://github.com/vuejs/vue/commit/3932a451a1419a97ea0200c5cb8096afe9a3e7e7)), closes [#7105](https://github.com/vuejs/vue/issues/7105)
- **types:** add missing ssr renderToString signature ([14e9908](https://github.com/vuejs/vue/commit/14e99086c02f4bcda55e639fb0baf2c664591448))
- **types:** add Promise signature for bundleRenderer.renderToString ([#7098](https://github.com/vuejs/vue/issues/7098)) ([3554eb2](https://github.com/vuejs/vue/commit/3554eb27269e151a0ef3d8c4ad9b29ec6664c471))
- **types:** bump ts version and fix typing bugs ([#7135](https://github.com/vuejs/vue/issues/7135)) ([a71e653](https://github.com/vuejs/vue/commit/a71e653108e4ba56a70107662f3ee30cead59c18))
- **types:** improve and test bundleRenderer.renderToString Promise types ([fcc1229](https://github.com/vuejs/vue/commit/fcc122931b504655c8255645d57612bc74c0f594))
- **types:** use object and string instead of Object and String ([#7126](https://github.com/vuejs/vue/issues/7126)) ([d2e1d49](https://github.com/vuejs/vue/commit/d2e1d49c41ac633ea9410e1062b8e3e01f9d6b6d))
## [2.5.8](https://github.com/vuejs/vue/compare/v2.5.7...v2.5.8) (2017-11-21)
### Bug Fixes
- fix v-for alias deconstruct regression ([ebcef58](https://github.com/vuejs/vue/commit/ebcef58645af1582ca3c8a19ec26967946970301)), closes [#7096](https://github.com/vuejs/vue/issues/7096)
## [2.5.7](https://github.com/vuejs/vue/compare/v2.5.6...v2.5.7) (2017-11-20)
### Bug Fixes
- allow traversing reactive objects which are sealed ([#7080](https://github.com/vuejs/vue/issues/7080)) ([4c22d1d](https://github.com/vuejs/vue/commit/4c22d1d17ffd3a9340c3b17443c7989d04ab14c5))
- fix <keep-alive> include/exclude logic for anonymous components ([a23b913](https://github.com/vuejs/vue/commit/a23b913796a7d18e76185607f250655e18a390c8))
- improve error detector v-for identifier check ([d891cd1](https://github.com/vuejs/vue/commit/d891cd1761df22e1e0b1953c6ed7947fdb79d915)), closes [#6971](https://github.com/vuejs/vue/issues/6971)
- **ssr:** fix bundle renderer require path on windows ([#7085](https://github.com/vuejs/vue/issues/7085)) ([063acb7](https://github.com/vuejs/vue/commit/063acb79ebc02344ab277196d4aea0577b113926))
### Features
- feat: add warning for ambiguous combined usage of slot-scope and v-for ([c264335](https://github.com/vuejs/vue/commit/c264335fbd1b1d838e3c1085b7d6dcd1c752aa43)), closes [#6817](https://github.com/vuejs/vue/issues/6817)
## [2.5.6](https://github.com/vuejs/vue/compare/v2.5.5...v2.5.6) (2017-11-18)
### Bug Fixes
- fix v-model :value warning on custom component ([59dea37](https://github.com/vuejs/vue/commit/59dea374037ec2e6b1f5570a30774f2de0a44adc)), closes [#7084](https://github.com/vuejs/vue/issues/7084)
## [2.5.5](https://github.com/vuejs/vue/compare/v2.5.4...v2.5.5) (2017-11-17)
### Bug Fixes
- init \_staticTrees to avoid runtime reference warning ([f5cd29e](https://github.com/vuejs/vue/commit/f5cd29e1d8197613c4dfb4013b240784c3b64e43)), closes [#7075](https://github.com/vuejs/vue/issues/7075)
- keep-alive should not cache anonymous components ([4d8226f](https://github.com/vuejs/vue/commit/4d8226fb2c84fa2e13a2d8a86dea8a9a5c6ea95f)), closes [#6938](https://github.com/vuejs/vue/issues/6938)
- should warn unknown components inside <keep-alive> ([6d6b373](https://github.com/vuejs/vue/commit/6d6b3739e132723915bc2209663db1b825307865))
### Features
- warn if both v-model and v-bind:value used on same element ([#7056](https://github.com/vuejs/vue/issues/7056)) ([1e14603](https://github.com/vuejs/vue/commit/1e146037fa4280b502d0edf95936bc67e87fd339)), closes [#7048](https://github.com/vuejs/vue/issues/7048) [#7048](https://github.com/vuejs/vue/issues/7048) [#7048](https://github.com/vuejs/vue/issues/7048)
## [2.5.4](https://github.com/vuejs/vue/compare/v2.5.3...v2.5.4) (2017-11-16)
### Bug Fixes
- clone slot nodes for render fn usage as well ([13196b2](https://github.com/vuejs/vue/commit/13196b25b8a0a84b3936982177195d2e04f13f79)), closes [#7041](https://github.com/vuejs/vue/issues/7041)
- normlaize [@click](https://github.com/click).right and [@click](https://github.com/click).middle ([daed1e7](https://github.com/vuejs/vue/commit/daed1e73557d57df244ad8d46c9afff7208c9a2d)), closes [#7020](https://github.com/vuejs/vue/issues/7020)
- should warn unknown components during hydration ([df82aeb](https://github.com/vuejs/vue/commit/df82aeb0bf7454ac99d403000a1ac993e8d8d4de)), closes [#6998](https://github.com/vuejs/vue/issues/6998)
- **ssr:** ensure hydrated class & style bindings are reactive ([5db86b4](https://github.com/vuejs/vue/commit/5db86b4e94857fdde3ae6b71e24da637bc116baa)), closes [#7063](https://github.com/vuejs/vue/issues/7063)
- **transition:** fix out-in transition getting stuck with v-if ([#7023](https://github.com/vuejs/vue/issues/7023)) ([45d7ba8](https://github.com/vuejs/vue/commit/45d7ba842917a075d6cb2563c78210e3b9210a58)), closes [#6687](https://github.com/vuejs/vue/issues/6687)
- **types:** expose VueConstructor ([#7002](https://github.com/vuejs/vue/issues/7002)) ([267ada0](https://github.com/vuejs/vue/commit/267ada04e8dd66f5c159dd6ba1b9f88fbbe78676))
- **weex:** donot rethrow the captured error on weex platform ([#7024](https://github.com/vuejs/vue/issues/7024)) ([c2b1cfe](https://github.com/vuejs/vue/commit/c2b1cfe9ccd08835f2d99f6ce60f67b4de55187f))
### Features
- **weex:** support batch update styles and attributes ([#7046](https://github.com/vuejs/vue/issues/7046)) ([7cf188e](https://github.com/vuejs/vue/commit/7cf188e134fe7bfc9e8a16b763fb85b18eff1eac))
## [2.5.3](https://github.com/vuejs/vue/compare/v2.5.2...v2.5.3) (2017-11-03)
### Bug Fixes
- $set should respect properties on prototype chain ([83ed926](https://github.com/vuejs/vue/commit/83ed92608d81349e1cac2e481ed079e51a490b2b)), closes [#6845](https://github.com/vuejs/vue/issues/6845)
- also clone component slot children during deepClone ([1cf02ef](https://github.com/vuejs/vue/commit/1cf02efda206185cb72bbaafb00037fa6269e3f3)), closes [#6891](https://github.com/vuejs/vue/issues/6891) [#6915](https://github.com/vuejs/vue/issues/6915)
- clean up target variables to avoid memory leaks ([#6932](https://github.com/vuejs/vue/issues/6932)) ([c355319](https://github.com/vuejs/vue/commit/c3553196b8b15a71f982bd5e04c61be52e87c828)), closes [#6931](https://github.com/vuejs/vue/issues/6931)
- **core:** static trees should be cached on options ([#6826](https://github.com/vuejs/vue/issues/6826)) ([#6837](https://github.com/vuejs/vue/issues/6837)) ([b6c384d](https://github.com/vuejs/vue/commit/b6c384dd78b56bd247e6a34d5aea0d3903f5b7fd))
- **events:** properly $off array of events ([#6949](https://github.com/vuejs/vue/issues/6949)) ([c24f3e4](https://github.com/vuejs/vue/commit/c24f3e4208cd045832002ee9916559f6fe0dc2b5))
- handle encoded tabs and newlines in attributes for Chrome a[href] and IE/Edge ([cfd73c2](https://github.com/vuejs/vue/commit/cfd73c2386623341fdbb3ac636c4baf84ea89c2c)), closes [#6828](https://github.com/vuejs/vue/issues/6828) [#6916](https://github.com/vuejs/vue/issues/6916)
- **keep-alive:** higher priority for exclude than include ([#6905](https://github.com/vuejs/vue/issues/6905)) ([604230f](https://github.com/vuejs/vue/commit/604230fe953f864be5dc70bd7d34f64ae43e4f7e))
- **model:** correctly set select v-model initial value on patch ([#6910](https://github.com/vuejs/vue/issues/6910)) ([58a39df](https://github.com/vuejs/vue/commit/58a39dfa0e8c4a51959e9a84369dad8fbca0e6ac))
- properly mark slot rendered flag in production mode ([4fe1a95](https://github.com/vuejs/vue/commit/4fe1a95d2953ecf765e27677fa70ebadb176d4c3)), closes [#6997](https://github.com/vuejs/vue/issues/6997)
- **slots:** properly handle nested named slot passing ([5a9da95](https://github.com/vuejs/vue/commit/5a9da95b8a865416f082952a48416ffc091e4078)), closes [#6996](https://github.com/vuejs/vue/issues/6996)
- special case for static muted attribute in firefox ([f2e00f7](https://github.com/vuejs/vue/commit/f2e00f756fb540fb09ce3414289c652ce172d85c)), closes [#6887](https://github.com/vuejs/vue/issues/6887)
- **ssr:** properly render `<select v-model>` initial state ([e1657fd](https://github.com/vuejs/vue/commit/e1657fd7ce49bff3c3ecad3c56ae527347505c34)), closes [#6986](https://github.com/vuejs/vue/issues/6986)
- **ssr:** properly render textarea value ([79c0d7b](https://github.com/vuejs/vue/commit/79c0d7bcfbcd1ac492e7ceb77f5024d09efdc6b3)), closes [#6986](https://github.com/vuejs/vue/issues/6986)
- **ssr:** should not optimize root if conditions ([4ad9a56](https://github.com/vuejs/vue/commit/4ad9a56b229b156e633f3d575cd0e99ba5e474d9)), closes [#6907](https://github.com/vuejs/vue/issues/6907)
- **types:** improve typing for better completion ([#6886](https://github.com/vuejs/vue/issues/6886)) ([98ea0a3](https://github.com/vuejs/vue/commit/98ea0a3b48e37719f278c10a8ee5fb94d7d5db4e))
- **typing:** relax $options type for TS2.6+ ([#6819](https://github.com/vuejs/vue/issues/6819)) ([9caed00](https://github.com/vuejs/vue/commit/9caed00d20f37c750e39db4ec86d278b453f0e5d))
- **v-model:** v-if / v-else not working with :type + v-model ([#6955](https://github.com/vuejs/vue/issues/6955)) ([0c703e3](https://github.com/vuejs/vue/commit/0c703e34d1a2083d9f162fcf0885deefb803182e)), closes [#6918](https://github.com/vuejs/vue/issues/6918)
- **weex:** stop trim css units in richtext component ([#6927](https://github.com/vuejs/vue/issues/6927)) ([8a784d8](https://github.com/vuejs/vue/commit/8a784d8d2333f0a05569f6c11c5a0fb0ab3a164e))
## [2.5.2](https://github.com/vuejs/vue/compare/v2.5.1...v2.5.2) (2017-10-13)
### Bug Fixes
- further adjust nextTick strategy ([4e0c485](https://github.com/vuejs/vue/commit/4e0c48511d49f331fde31fc87b6ca428330f32d1)), closes [#6813](https://github.com/vuejs/vue/issues/6813)
## [2.5.1](https://github.com/vuejs/vue/compare/v2.5.0...v2.5.1) (2017-10-13)
### Bug Fixes
- backwards compat with checkbox code generated in < 2.5 ([5665eaf](https://github.com/vuejs/vue/commit/5665eaf985a56cfd183ce8ce93c4d813edbd2cf8)), closes [#6803](https://github.com/vuejs/vue/issues/6803)
- fix empty array edge case in normalizeChildren ([1f84dd1](https://github.com/vuejs/vue/commit/1f84dd1c2488d12ef144d4b548b0e80647f9403c)), closes [#6790](https://github.com/vuejs/vue/issues/6790)
- **ssr:** add semicolon before self-removal script ([#6794](https://github.com/vuejs/vue/issues/6794)) ([5a15a8d](https://github.com/vuejs/vue/commit/5a15a8d2089bb833b892123c31a2ca04a511c4c8))
- **transition-group:** work around rollup tree shaking ([#6796](https://github.com/vuejs/vue/issues/6796)) ([60b1af9](https://github.com/vuejs/vue/commit/60b1af9e02b93d9223d2ed1f23e0a618537a4c96)), closes [#6792](https://github.com/vuejs/vue/issues/6792)
- **v-model:** allow arbitrary naems for type binding ([#6802](https://github.com/vuejs/vue/issues/6802)) ([15031b8](https://github.com/vuejs/vue/commit/15031b85427df5409f0bc4c10589cc6259f8a5b2)), closes [#6800](https://github.com/vuejs/vue/issues/6800)
- v-on="object" listeners should fire after high-priority ones ([08a7fb5](https://github.com/vuejs/vue/commit/08a7fb539f9d3ab5b08a3c6cec9a6628929be3be)), closes [#6805](https://github.com/vuejs/vue/issues/6805)
# [2.5.0](https://github.com/vuejs/vue/compare/v2.4.4...v2.5.0) (2017-10-13)
### Bug Fixes
- add slot v-bind warning ([#6736](https://github.com/vuejs/vue/issues/6736)) ([514b90b](https://github.com/vuejs/vue/commit/514b90b64770cba9f905d2dff59dfa0e064e580c)), closes [#6677](https://github.com/vuejs/vue/issues/6677)
- allow an object's Symbols to be observed ([#6704](https://github.com/vuejs/vue/issues/6704)) ([4fd2ce8](https://github.com/vuejs/vue/commit/4fd2ce813cd0a59bd544defe07f44a5731e45f84))
- **compiler:** warn when inline-template component has no children (fix [#6703](https://github.com/vuejs/vue/issues/6703)) ([#6715](https://github.com/vuejs/vue/issues/6715)) ([baabd6d](https://github.com/vuejs/vue/commit/baabd6d14016c730fe40a4202ae9b8f75e80041c))
- **core:** avoid observing VNodes ([4459b87](https://github.com/vuejs/vue/commit/4459b87de902cf3ba496a104304ca80d1c9824c1)), closes [#6610](https://github.com/vuejs/vue/issues/6610)
- ensure nextTick are passed to errorHandler ([#6730](https://github.com/vuejs/vue/issues/6730)) ([ae347a5](https://github.com/vuejs/vue/commit/ae347a52259b24507a9c747c80d78a6beaa36de0))
- fallback to Promise in non-DOM environments ([6d1f4cb](https://github.com/vuejs/vue/commit/6d1f4cb89a156bf5f84942b1031354aa93916cb7))
- fix scoped CSS for nested nodes in functional components ([4216588](https://github.com/vuejs/vue/commit/421658884f7ca786747abf9b89e00925fdfdfba8))
- handle errors in errorHandler ([2b5c83a](https://github.com/vuejs/vue/commit/2b5c83af6d8b15510424af4877d58c261ea02e16)), closes [#6714](https://github.com/vuejs/vue/issues/6714)
- properly handle v-if on `<template>` scoped slot ([68bdbf5](https://github.com/vuejs/vue/commit/68bdbf508b915872627676d6bf987bdac9e5fe97)), closes [#6725](https://github.com/vuejs/vue/issues/6725)
- prevent memory leak due to circular reference in vnodes ([405d8e9](https://github.com/vuejs/vue/commit/405d8e9f4c3201db2ae0e397d9191d9b94edc219)), closes [#6759](https://github.com/vuejs/vue/issues/6759)
- properly render value on `<progress>` in IE/Edge ([c64f9ae](https://github.com/vuejs/vue/commit/c64f9ae1649175ee8cac1c7ecf3283897c948202)), closes [#6666](https://github.com/vuejs/vue/issues/6666)
- **ref:** preserve ref on components after removing root element ([#6718](https://github.com/vuejs/vue/issues/6718)) ([6ad44e1](https://github.com/vuejs/vue/commit/6ad44e13e990951ff152a0fd7042613c5a87f1c0)), closes [#6632](https://github.com/vuejs/vue/issues/6632) [#6641](https://github.com/vuejs/vue/issues/6641)
- resolve async component default for native dynamic import ([2876ed8](https://github.com/vuejs/vue/commit/2876ed870c5368a1767fbeddf06e94b55ebd6234)), closes [#6751](https://github.com/vuejs/vue/issues/6751)
- **ssr:** fix hydration mismatch with adjacent text node from slots ([b080a14](https://github.com/vuejs/vue/commit/b080a14138262f0f274d0888555a11bd7387d576)), closes [vuejs/vue-loader#974](https://github.com/vuejs/vue-loader/issues/974)
- **ssr:** handle inline template compilation error ([dff85b2](https://github.com/vuejs/vue/commit/dff85b230abda63839ed6b80d56ccfc6068b9ae0)), closes [#6766](https://github.com/vuejs/vue/issues/6766)
- use correct ns inside `<foreignObject>` as root node ([cf1ff5b](https://github.com/vuejs/vue/commit/cf1ff5b0dc3d15c1e16821cb5e4fc984c74f07c1)), closes [#6642](https://github.com/vuejs/vue/issues/6642)
- use MessageChannel for nextTick ([6e41679](https://github.com/vuejs/vue/commit/6e41679a96582da3e0a60bdbf123c33ba0e86b31)), closes [#6566](https://github.com/vuejs/vue/issues/6566) [#6690](https://github.com/vuejs/vue/issues/6690)
- warn slot-scope when used as a prop ([8295f71](https://github.com/vuejs/vue/commit/8295f716657ffe516f30e84f29ca94f4a0aefabf))
- work around old Chrome bug ([0f2cb09](https://github.com/vuejs/vue/commit/0f2cb09444e8b2a5fa41aaf8c94e6f2f43e00c2f)), closes [#6601](https://github.com/vuejs/vue/issues/6601)
### Features
- add .exact event modifier ([#5977](https://github.com/vuejs/vue/issues/5977)) ([9734e87](https://github.com/vuejs/vue/commit/9734e878ec4efe59f40fc97d9ef86273ad58a430)), closes [#5976](https://github.com/vuejs/vue/issues/5976)
- add catchError option ([b3cd9bc](https://github.com/vuejs/vue/commit/b3cd9bc3940eb1e01da7081450929557d9c1651e))
- add in-browser build for vue-template-compiler ([a5e5b31](https://github.com/vuejs/vue/commit/a5e5b31455e0d64f834dd691b7488e0e105d32c3))
- add max prop for <keep-alive> ([2cba6d4](https://github.com/vuejs/vue/commit/2cba6d4cb1db8273ee45cccb8e50ebd87191244e))
- **core:** call data method with this value ([#6760](https://github.com/vuejs/vue/issues/6760)) ([3a5432a](https://github.com/vuejs/vue/commit/3a5432a9e3f470ebafcef905281b830537897037)), closes [#6739](https://github.com/vuejs/vue/issues/6739)
- functional component support for compiled templates ([ea0d227](https://github.com/vuejs/vue/commit/ea0d227d2ddfa5fc5e1112acf9cd485b4eae62cb))
- improve template expression error message ([e38d006](https://github.com/vuejs/vue/commit/e38d0067521eee85febedc5f3ed3c24b5454c3a9)), closes [#6771](https://github.com/vuejs/vue/issues/6771)
- **inject:** support providing default values for injections ([#6322](https://github.com/vuejs/vue/issues/6322)) ([88423fc](https://github.com/vuejs/vue/commit/88423fc66a2a4917dcdb7631a4594f05446283b1))
- make vue and basic server renderer compatible in pure js runtimes ([c5d0fa0](https://github.com/vuejs/vue/commit/c5d0fa0503631b53338e5255bc8640da4b2fd4cb))
- rename catchError -> errorCaptured ([6dac3db](https://github.com/vuejs/vue/commit/6dac3dbe441302cebb945b675f78f8e7247e2a97))
- rename inject alias from "name" to "from" ([6893499](https://github.com/vuejs/vue/commit/68934997444c0047c49e419761dfad7fbc043a5d))
- scoped CSS support for functional components ([050bb33](https://github.com/vuejs/vue/commit/050bb33f9b02589357c037623ea8cbf8ff13555b))
- **ssr:** add shouldPrefetch option ([7bc899c](https://github.com/vuejs/vue/commit/7bc899ce0ec10be3fbd4bd7e78b66dd357249c81)), closes [#5964](https://github.com/vuejs/vue/issues/5964)
- **ssr:** auto-remove initial state script if prod ([#6763](https://github.com/vuejs/vue/issues/6763)) ([2d32b5d](https://github.com/vuejs/vue/commit/2d32b5d1b663fa331ec256b73e937af15eb6e3d5)), closes [#6761](https://github.com/vuejs/vue/issues/6761)
- **ssr:** renderToString return Promise ([f881dd1](https://github.com/vuejs/vue/commit/f881dd175a6764f6f80077df20f950dba63ca447)), closes [#6160](https://github.com/vuejs/vue/issues/6160)
- support denoting normal elements as scoped slot ([dae173d](https://github.com/vuejs/vue/commit/dae173d96d15f47de6ce6961354d5c05e4273005))
- support RegExp in ignoredElements ([#6769](https://github.com/vuejs/vue/issues/6769)) ([795b908](https://github.com/vuejs/vue/commit/795b908095b29e76435479879c1ade7ef759ce7b))
- **types:** further improve Vue type declarations for canonical usage ([#6391](https://github.com/vuejs/vue/issues/6391)) ([db138e2](https://github.com/vuejs/vue/commit/db138e2254d71f6b96e033acf66ba43ad269841a))
- **v-model:** create non-existent properties as reactive ([e1da0d5](https://github.com/vuejs/vue/commit/e1da0d585c797860533d6cb10ea3d09c7fb711fc)), closes [#5932](https://github.com/vuejs/vue/issues/5932)
- **v-model:** support dynamic input type binding ([f3fe012](https://github.com/vuejs/vue/commit/f3fe012d5499f607656b152ce5fcb506c641f9f4))
- v-on automatic key inference ([4987eeb](https://github.com/vuejs/vue/commit/4987eeb3a734a16a4978d1061f73039002d351e6))
### Reverts
- fix(v-model): fix input listener with modifier blocking v-model update ([62405aa](https://github.com/vuejs/vue/commit/62405aa9035d5f547c0440263f16f21c1325f100))
## [2.4.4](https://github.com/vuejs/vue/compare/v2.4.3...v2.4.4) (2017-09-14)
### Bug Fixes
- **ssr:** fix bundleRenderer Promise rejection regression ([0c9534f](https://github.com/vuejs/vue/commit/0c9534ff0069b5289ea9598bcb4f5e5ac346c979))
- **ssr:** fix style injection regression ([a2f73f2](https://github.com/vuejs/vue/commit/a2f73f2c2e28771e6597334bd86f82851ce0955e)), closes [#6603](https://github.com/vuejs/vue/issues/6603) [#6353](https://github.com/vuejs/vue/issues/6353)
## [2.4.3](https://github.com/vuejs/vue/compare/v2.4.2...v2.4.3) (2017-09-13)
### Bug Fixes
- $off should ignore undefined handler argument ([fa6a729](https://github.com/vuejs/vue/commit/fa6a7290e3b8cb62fb7f999389f476617b56503e)), closes [#6591](https://github.com/vuejs/vue/issues/6591)
- computed properties should not be cached during SSR ([06741f3](https://github.com/vuejs/vue/commit/06741f326625e2db78d092e586923b97ba006906)), closes [vuejs/vuex#877](https://github.com/vuejs/vuex/issues/877)
- deep clone slot vnodes on re-render ([0529040](https://github.com/vuejs/vue/commit/0529040c17b8632032a43d142aac88386f6b4a1f)), closes [#6372](https://github.com/vuejs/vue/issues/6372)
- **directive:** should invoke unbind & inserted on inner component root element change ([538ad20](https://github.com/vuejs/vue/commit/538ad20d8a37fe7ee2463ff20ac9557af70e0d33)), closes [#6513](https://github.com/vuejs/vue/issues/6513)
- do not use MutationObserver in IE11 ([844a540](https://github.com/vuejs/vue/commit/844a540c647dfa93dc714540953524830dd3475a)), closes [#6466](https://github.com/vuejs/vue/issues/6466)
- ensure $attrs and $listeners are always objects ([#6441](https://github.com/vuejs/vue/issues/6441)) ([59dbd4a](https://github.com/vuejs/vue/commit/59dbd4a414394a3ce581f9fbd9554da9af9e4b1d)), closes [#6263](https://github.com/vuejs/vue/issues/6263)
- ensure outer bindings on nested HOC are properly re-applied on inner root element change ([a744497](https://github.com/vuejs/vue/commit/a7444975343f7828004d90bfb0deeb98db0f46e7))
- handle special case for allowfullscreen on `<embed>` ([d77b953](https://github.com/vuejs/vue/commit/d77b95317cedae299605fb692e2c7c67796b17cb)), closes [#6202](https://github.com/vuejs/vue/issues/6202)
- inherit SVG ns on component root node ([#6511](https://github.com/vuejs/vue/issues/6511)) ([89f0d29](https://github.com/vuejs/vue/commit/89f0d29f2d541aa5a1ac9690258cd7c7ee576ef6)), closes [#6506](https://github.com/vuejs/vue/issues/6506)
- **inject:** exclude not enumerable keys of inject object ([#6346](https://github.com/vuejs/vue/issues/6346)) ([3ee62fd](https://github.com/vuejs/vue/commit/3ee62fd59e20030dd63c08c2390e803d034928fe)), closes [#6574](https://github.com/vuejs/vue/issues/6574)
- preserve slot attribute if not resolved by Vue ([684cd7d](https://github.com/vuejs/vue/commit/684cd7d21aa7cb9a40fb4a8542c4e08fb3801a86)), closes [#6553](https://github.com/vuejs/vue/issues/6553)
- **provide:** provide should default to parentVal during merging ([#6473](https://github.com/vuejs/vue/issues/6473)) ([3c21675](https://github.com/vuejs/vue/commit/3c216755f6eb656c6d864265a8dc7b51b3ae971b)), closes [#6436](https://github.com/vuejs/vue/issues/6436)
- set value as domProp for `<progress>` ([7116af4](https://github.com/vuejs/vue/commit/7116af4e07520040ed7328c39d0a456808bfe1e1)), closes [#6561](https://github.com/vuejs/vue/issues/6561)
- **ssr:** address possible xss vector ([5091e2c](https://github.com/vuejs/vue/commit/5091e2c9847601e329ac36d17eae90bb5cb77a91))
- **ssr:** better handle v-html hydration ([0f00f8f](https://github.com/vuejs/vue/commit/0f00f8fc2b83b964bb929b729a7c9e3675b52106)), closes [#6519](https://github.com/vuejs/vue/issues/6519)
- **ssr:** expose context.styles when no lifecycle styles are injected ([1f52a2a](https://github.com/vuejs/vue/commit/1f52a2a9f433452c15715131ed74433a43d5cfb7)), closes [#6353](https://github.com/vuejs/vue/issues/6353)
- **ssr:** fix cachedEscape memory issue ([02f8b80](https://github.com/vuejs/vue/commit/02f8b806768d70c589e646c384e592e93387b994)), closes [#6332](https://github.com/vuejs/vue/issues/6332)
- **ssr:** handle v-text/v-html with non-string value ([09106f0](https://github.com/vuejs/vue/commit/09106f066a1ba71431e4f9f26246aaf619153e2e)), closes [#6572](https://github.com/vuejs/vue/issues/6572)
- **ssr:** should also escape static text content ([172dbf9](https://github.com/vuejs/vue/commit/172dbf9faf4cb71dff72c77fdfe80fa1932d1ba3)), closes [#6345](https://github.com/vuejs/vue/issues/6345)
- support prop type checking for primitive wrapper objects ([#6450](https://github.com/vuejs/vue/issues/6450)) ([679cd1f](https://github.com/vuejs/vue/commit/679cd1fef448989bf645313c391e4134ecd9f593)), closes [#6447](https://github.com/vuejs/vue/issues/6447)
- **transition:** consider async placeholder as valid child to return ([#6369](https://github.com/vuejs/vue/issues/6369)) ([a43d667](https://github.com/vuejs/vue/commit/a43d66743be2bd62b2398090663e41eeaf0dc75f)), closes [#6256](https://github.com/vuejs/vue/issues/6256)
- **types:** add `inject` option in functional component options type ([#6530](https://github.com/vuejs/vue/issues/6530)) ([1baa0a7](https://github.com/vuejs/vue/commit/1baa0a7884cfa147df7623a34ee277f7d39c7a21))
- **types:** allow variadic plugin use ([#6363](https://github.com/vuejs/vue/issues/6363)) ([38d5218](https://github.com/vuejs/vue/commit/38d52182bf8915628314e2aea7d2cc41ec39a0d6)), closes [#6357](https://github.com/vuejs/vue/issues/6357)
- **v-model:** Allow using array value with array v-model in checkboxes ([#6220](https://github.com/vuejs/vue/issues/6220)) ([d6e6f1d](https://github.com/vuejs/vue/commit/d6e6f1deb180a4f47e94496724623b9e6d8e08b3)), closes [#6219](https://github.com/vuejs/vue/issues/6219)
- **v-model:** avoid unnecessary change event on select options change ([d4d553c](https://github.com/vuejs/vue/commit/d4d553ced75d8c73e75b85cec398be4b09f6f669)), closes [#6193](https://github.com/vuejs/vue/issues/6193) [#6194](https://github.com/vuejs/vue/issues/6194)
- **v-model:** fix input listener with modifier blocking v-model update ([6f312d6](https://github.com/vuejs/vue/commit/6f312d636c3d6049dc9e60007f88ea871b8e8173)), closes [#6552](https://github.com/vuejs/vue/issues/6552)
- **vdom:** avoid diff de-opt when both head/tail are different ([230c6ae](https://github.com/vuejs/vue/commit/230c6ae7822347b9b2a659503291e45fcc58fe41)), closes [#6502](https://github.com/vuejs/vue/issues/6502)
- **vdom:** Don't replace input for text-like type change ([#6344](https://github.com/vuejs/vue/issues/6344)) ([f76d16e](https://github.com/vuejs/vue/commit/f76d16ed9507d4c2a90243ea3d77ccf00df29346)), closes [#6313](https://github.com/vuejs/vue/issues/6313)
### Features
- **weex richtext:** support events and add more test cases ([d627161](https://github.com/vuejs/vue/commit/d627161a91b77ca15e0e30c0313abb33d6c17cbc))
- **weex richtext:** support to parse styles and classList ([b609642](https://github.com/vuejs/vue/commit/b60964256c876de2516977c776201ef56ab13fb7))
- **weex richtext:** treat richtext as runtime components ([3e4d926](https://github.com/vuejs/vue/commit/3e4d926336dfdbb5cc4f9d0daed44eb84b53b0de))
- **weex:** add basic support of richtext ([f1c96e7](https://github.com/vuejs/vue/commit/f1c96e72b2369f3f8cc0078adb732a25cc7bfbfe))
- **weex:** remove **weex_require_module** api ([a8146c0](https://github.com/vuejs/vue/commit/a8146c0c1074cfd8214a62309c372b25035fd838))
- **weex:** return instance in createInstance ([0dc27dc](https://github.com/vuejs/vue/commit/0dc27dcdec72c1c2e12fb49fb95dceca45e84115))
- **weex:** support nested components in richtext ([0ea2bb4](https://github.com/vuejs/vue/commit/0ea2bb4fb4d9c4d846ae5852c871c472c17f4e34))
- **weex:** wrap IFFE for appCode ([f975fac](https://github.com/vuejs/vue/commit/f975fac2a8657590dcc23ea8ccae791d125bc935))
### Performance Improvements
- **core:** prevent iteration of arrays that should not be observable ([#6467](https://github.com/vuejs/vue/issues/6467)) ([aa820cb](https://github.com/vuejs/vue/commit/aa820cba37b69772868c9cdb69235c424e23f529)), closes [#6284](https://github.com/vuejs/vue/issues/6284)
- deep clone slot vnodes on re-render ([#6478](https://github.com/vuejs/vue/issues/6478)) ([5346361](https://github.com/vuejs/vue/commit/53463619e5d19d35dfad1a4245a8dc583681feb3))
- optimize the performance of hyphenate method. ([#6274](https://github.com/vuejs/vue/issues/6274)) ([14ee9e7](https://github.com/vuejs/vue/commit/14ee9e74bf68024fcb53c305b1f15c6aab6e89d3))
- **v-model:** tweak setSelected ([41d774d](https://github.com/vuejs/vue/commit/41d774d112946f986bf0b0e3f30fd962c01ceba2))
## [2.4.2](https://github.com/vuejs/vue/compare/v2.4.1...v2.4.2) (2017-07-21)
### Bug Fixes
- checkbox v-model="array" ignore false-value ([#6180](https://github.com/vuejs/vue/issues/6180)) ([3d14e85](https://github.com/vuejs/vue/commit/3d14e855e422b656859d1b419af43b94320fcfce)), closes [#6178](https://github.com/vuejs/vue/issues/6178)
- **compile:** properly generate comments with special character ([#6156](https://github.com/vuejs/vue/issues/6156)) ([d03fa26](https://github.com/vuejs/vue/commit/d03fa26687605a43d9a0c3f395d1d32375f7eaee)), closes [#6150](https://github.com/vuejs/vue/issues/6150)
- ensure looseEqual is not dependent on key enumeration order ([a8ac129](https://github.com/vuejs/vue/commit/a8ac129a5876a7eeae0137bf2f1b0968d4d6ffad)), closes [#5908](https://github.com/vuejs/vue/issues/5908)
- include boolean in isPrimitive check ([#6127](https://github.com/vuejs/vue/issues/6127)) ([be3dc9c](https://github.com/vuejs/vue/commit/be3dc9c6e923248bcf81eb8240dd4f3c168fac59)), closes [#6126](https://github.com/vuejs/vue/issues/6126)
- **parser:** only ignore the first newline in `<pre>` ([082fc39](https://github.com/vuejs/vue/commit/082fc3967db4d3290e901a38504dcd9bb698e561)), closes [#6146](https://github.com/vuejs/vue/issues/6146)
- **provide/inject:** merge provide properly from mixins ([3036551](https://github.com/vuejs/vue/commit/303655116f8ec78f3b0ac99569637ad868dfe246)), closes [#6175](https://github.com/vuejs/vue/issues/6175)
- **provide/inject:** resolve inject properly from mixins ([#6107](https://github.com/vuejs/vue/issues/6107)) ([b0f00e3](https://github.com/vuejs/vue/commit/b0f00e31e7d06edfdc733e2e7f24d5ca448759f9)), closes [#6093](https://github.com/vuejs/vue/issues/6093)
- **transition:** should trigger transition hooks for v-show in ie9 ([9b4dbba](https://github.com/vuejs/vue/commit/9b4dbba384bc81a99abe429476729f80cb06d19a)), closes [#5525](https://github.com/vuejs/vue/issues/5525)
- **v-bind:** respect .prop modifier on components ([#6159](https://github.com/vuejs/vue/issues/6159)) ([06b9b0b](https://github.com/vuejs/vue/commit/06b9b0bbadcc6c5afd300ed7748294e62ba00803))
- **v-model:** use stricter check for `<select>` option update ([c70addf](https://github.com/vuejs/vue/commit/c70addf7d1a8e820ed80b6ab14aace5aa7b604c5)), closes [#6112](https://github.com/vuejs/vue/issues/6112)
- **v-on:** revert component root data.on/data.nativeOn behavior for ([1713061](https://github.com/vuejs/vue/commit/17130611261fdbab70d0e5ab45036e4b612b17fe)), closes [#6109](https://github.com/vuejs/vue/issues/6109)
- work around IE/Edge bug when accessing document.activeElement from iframe ([fc3d7cd](https://github.com/vuejs/vue/commit/fc3d7cd7a93534d76840418467f303d4b301fbcd)), closes [#6157](https://github.com/vuejs/vue/issues/6157)
### Features
- warn when assigning to computed property with no setter ([eb9168c](https://github.com/vuejs/vue/commit/eb9168cfc1816b53ddb1eccd6310173a37803897)), closes [#6078](https://github.com/vuejs/vue/issues/6078)
### Reverts
- perf: remove src directory from npm module ([#6072](https://github.com/vuejs/vue/issues/6072)) ([ec4b1be](https://github.com/vuejs/vue/commit/ec4b1be42a30a452cca53bbdfdc8404c7a53e890))
## [2.4.1](https://github.com/vuejs/vue/compare/v2.4.0...v2.4.1) (2017-07-13)
# [2.4.0](https://github.com/vuejs/vue/compare/v2.3.3...v2.4.0) (2017-07-13)
### Bug Fixes
- check enterToClass/leaveToClass existence before adding it ([#5912](https://github.com/vuejs/vue/issues/5912)) ([34d8c79](https://github.com/vuejs/vue/commit/34d8c796ac6a8e47bf23155bad71d07fafd1aa51)), closes [#5800](https://github.com/vuejs/vue/issues/5800)
- **core:** add merge strategy for provide option ([#6025](https://github.com/vuejs/vue/issues/6025)) ([306997e](https://github.com/vuejs/vue/commit/306997eaf4ff36f4757c753c8a00ce3851e29cca)), closes [#6008](https://github.com/vuejs/vue/issues/6008)
- **core:** should preserve reactivity-ness of injected objects ([8d66691](https://github.com/vuejs/vue/commit/8d66691ee264969447390822971b8caa029cac3e)), closes [#5913](https://github.com/vuejs/vue/issues/5913)
- ensure cleanup in watcher.get ([#5988](https://github.com/vuejs/vue/issues/5988)) ([f6cd44c](https://github.com/vuejs/vue/commit/f6cd44c48b83640e5d3fbbea46d7b1b9cb439543)), closes [#5975](https://github.com/vuejs/vue/issues/5975)
- handle arrays in v-on object syntax ([086e6d9](https://github.com/vuejs/vue/commit/086e6d98f4217542afcc2794717119c62dde89b8))
- improve Vue.set/Vue.delete API to support multi type of array index ([#5973](https://github.com/vuejs/vue/issues/5973)) ([eea0920](https://github.com/vuejs/vue/commit/eea0920f14d0ea63d1b94c648eeb36ac7dfb4b05)), closes [#5884](https://github.com/vuejs/vue/issues/5884)
- multiple merged vnode hooks not invoked properly ([91deb4f](https://github.com/vuejs/vue/commit/91deb4fd910afd51137820f120d4c26d0a99e629)), closes [#6076](https://github.com/vuejs/vue/issues/6076)
- **parser:** the first newline following pre and textarea tag should be ignored ([#6022](https://github.com/vuejs/vue/issues/6022)) ([4d68079](https://github.com/vuejs/vue/commit/4d680794a5a345078827a3fee3db8658bd35ec3a))
- prefetch should not have `as` attribute ([#5683](https://github.com/vuejs/vue/issues/5683)) ([ebca266](https://github.com/vuejs/vue/commit/ebca266d10febb5ab5ca0cfbcd0dfbff2f2c2170))
- **ref:** refactor function registerRef ([#6039](https://github.com/vuejs/vue/issues/6039)) ([254d85c](https://github.com/vuejs/vue/commit/254d85cfc42d58bf9e3d0626ba959379bdc32d6f)), closes [#5997](https://github.com/vuejs/vue/issues/5997)
- **ssr:** fix bundleRenderer mapped async chunks caching check ([#5963](https://github.com/vuejs/vue/issues/5963)) ([de42186](https://github.com/vuejs/vue/commit/de42186d52562a0ce506580484ff64fe86b765bd))
- **ssr:** reference error when create $ssrContext for root component ([#5981](https://github.com/vuejs/vue/issues/5981)) ([5581654](https://github.com/vuejs/vue/commit/55816543c46e75aa53481ac95a89ff6f87a2d704)), closes [#5941](https://github.com/vuejs/vue/issues/5941)
- support plugin with multi version vue ([#5985](https://github.com/vuejs/vue/issues/5985)) ([049f317](https://github.com/vuejs/vue/commit/049f3171a9d2e97f62c209a4b78a71ec9dae810f)), closes [#5970](https://github.com/vuejs/vue/issues/5970)
- transition group should work with dynamic name ([#6006](https://github.com/vuejs/vue/issues/6006)) ([#6019](https://github.com/vuejs/vue/issues/6019)) ([d8d4ca6](https://github.com/vuejs/vue/commit/d8d4ca6763af55e1715bbc1e0fadd10e5be41db3))
- v-bind object should not override props on scopedSlots ([#5995](https://github.com/vuejs/vue/issues/5995)) ([458030a](https://github.com/vuejs/vue/commit/458030ae19a51982d028dcacfc77ab2cfac8ac26))
- **v-model:** fix input change check for type="number" ([0a9aab5](https://github.com/vuejs/vue/commit/0a9aab510bcca85c78ef06487b5dcf25d76d780d)), closes [#6069](https://github.com/vuejs/vue/issues/6069)
- **v-model:** should generate component-specific code for tags with "is" attribute ([a1d1145](https://github.com/vuejs/vue/commit/a1d1145c9123f7175f3ac20b503cfa507ad455f4)), closes [#6066](https://github.com/vuejs/vue/issues/6066)
- **v-model:** use consistent behavior during IME composition for other text-like input types (fix [#5902](https://github.com/vuejs/vue/issues/5902)) ([4acc8c8](https://github.com/vuejs/vue/commit/4acc8c8be1971112be45e0feb7fb7eddbfc9d247))
### Features
- add .editorconfig ([#5691](https://github.com/vuejs/vue/issues/5691)) ([0cc0b07](https://github.com/vuejs/vue/commit/0cc0b0726d389fca535b35e4593a5ecca3dde6c9))
- add `comments` option to allow preserving comments in template ([#5951](https://github.com/vuejs/vue/issues/5951)) ([e4da249](https://github.com/vuejs/vue/commit/e4da249ab8ef32a0b8156c840c9d2b9773090f8a)), closes [#5392](https://github.com/vuejs/vue/issues/5392)
- Add `defer` to body scripts ([#5704](https://github.com/vuejs/vue/issues/5704)) ([f3757eb](https://github.com/vuejs/vue/commit/f3757eb37bfe38cb2e8d87983a1f83d31ea9d30a))
- **core:** $attrs, $listeners & inheritAttrs option ([6118759](https://github.com/vuejs/vue/commit/61187596b9af48f1cb7b1848ad3eccc02ac2509d)), closes [#5983](https://github.com/vuejs/vue/issues/5983)
- **keep-alive:** support Array for include and exclude ([#5956](https://github.com/vuejs/vue/issues/5956)) ([51c595a](https://github.com/vuejs/vue/commit/51c595a7cef24e12094f66e0f8934fa41edde07d))
- resolve ES module default when resolving async components ([0cd6ef3](https://github.com/vuejs/vue/commit/0cd6ef321b3168d6c46c7a870c3d2a53fd9d4bde))
- **ssr:** inheritAttrs support in SSR ([6bf9772](https://github.com/vuejs/vue/commit/6bf97721f1e38713353d5ac9906c88dca2cdad9b))
- support sync modifier for v-bind="object" ([#5943](https://github.com/vuejs/vue/issues/5943)) ([3965e50](https://github.com/vuejs/vue/commit/3965e5053a7d2f22e90f81d4a153d65c1c670897)), closes [#5937](https://github.com/vuejs/vue/issues/5937)
- **types:** add declaration for inheritAttrs ([1f9e924](https://github.com/vuejs/vue/commit/1f9e924971d7894517075f7f0efeeb85994a7ba0))
- **types:** expose $vnode ([1b7ddd7](https://github.com/vuejs/vue/commit/1b7ddd7a35fab8773508ed47f56d0716081cfa1a))
- **v-on:** support v-on object syntax with no arguments ([11614d6](https://github.com/vuejs/vue/commit/11614d63b7862b68b11cc45c0891437c62a832d7))
- **weex:** implement "weex.supports" api to support feature detection ([#6053](https://github.com/vuejs/vue/issues/6053)) ([b1512d8](https://github.com/vuejs/vue/commit/b1512d8b136e0a12aca8dde9e72bf5200d3afe09))
### Performance Improvements
- remove src directory from npm module ([#6072](https://github.com/vuejs/vue/issues/6072)) ([e761573](https://github.com/vuejs/vue/commit/e7615737f142e3350b53d09d3a46d7ec143d1ef4))
## [2.3.3](https://github.com/vuejs/vue/compare/v2.3.2...v2.3.3) (2017-05-09)
## [2.3.2](https://github.com/vuejs/vue/compare/v2.3.1...v2.3.2) (2017-05-02)
## [2.3.1](https://github.com/vuejs/vue/compare/v2.3.0...v2.3.1) (2017-05-02)
# [2.3.0](https://github.com/vuejs/vue/compare/v2.3.0-beta.1...v2.3.0) (2017-04-27)
# [2.3.0-beta.1](https://github.com/vuejs/vue/compare/v2.2.6...v2.3.0-beta.1) (2017-04-26)
## [2.2.6](https://github.com/vuejs/vue/compare/v2.2.5...v2.2.6) (2017-03-27)
## [2.2.5](https://github.com/vuejs/vue/compare/v2.2.4...v2.2.5) (2017-03-24)
### Bug Fixes
- **inject:** change warn message when trying to mutate an injected value ([#5243](https://github.com/vuejs/vue/issues/5243)) ([23a058e](https://github.com/vuejs/vue/commit/23a058ed13e7faa667ada2b96e242eb7488b601c))
## [2.2.4](https://github.com/vuejs/vue/compare/v2.2.3...v2.2.4) (2017-03-13)
## [2.2.3](https://github.com/vuejs/vue/compare/v2.2.2...v2.2.3) (2017-03-13)
## [2.2.2](https://github.com/vuejs/vue/compare/v2.2.1...v2.2.2) (2017-03-09)
## [2.2.1](https://github.com/vuejs/vue/compare/v2.2.0...v2.2.1) (2017-02-26)
# [2.2.0](https://github.com/vuejs/vue/compare/v2.2.0-beta.2...v2.2.0) (2017-02-26)
# [2.2.0-beta.2](https://github.com/vuejs/vue/compare/v2.2.0-beta.1...v2.2.0-beta.2) (2017-02-25)
### Reverts
- Revert "[WIP] Support for ref callback (#4807)" ([e7a2510](https://github.com/vuejs/vue/commit/e7a2510e631bd25f46b4e1125b83a9236a50ff1d)), closes [#4807](https://github.com/vuejs/vue/issues/4807)
# [2.2.0-beta.1](https://github.com/vuejs/vue/compare/v2.1.10...v2.2.0-beta.1) (2017-02-24)
### Bug Fixes
- **sfc:** component contains '<' only ([#4753](https://github.com/vuejs/vue/issues/4753)) ([938fa4e](https://github.com/vuejs/vue/commit/938fa4efcc9bf6232bf5ace5920398dc2e128ac9))
### Features
- allow customization of component v-model prop/event via model option (close [#4515](https://github.com/vuejs/vue/issues/4515)) ([9d6c8ec](https://github.com/vuejs/vue/commit/9d6c8ec268f659a715e3b38c97a1e03964961703))
- config.performance ([689c107](https://github.com/vuejs/vue/commit/689c107de4624879a5b6282ce43eed5ea3907b38))
- implement template option for vue-server-renderer ([1c79592](https://github.com/vuejs/vue/commit/1c79592524339773d6397b264b2b489606cd55cb))
- provide/inject (close [#4029](https://github.com/vuejs/vue/issues/4029)) ([f916bcf](https://github.com/vuejs/vue/commit/f916bcf37105903290ad2353db9a9436536d6859))
- renderError ([1861ee9](https://github.com/vuejs/vue/commit/1861ee9570730149e01f225323c3a52392e5900f))
- support multi-chunk bundles in ssr bundle renderer ([561447d](https://github.com/vuejs/vue/commit/561447d278da26e95c488ea75856823557b66c5e))
## [2.1.10](https://github.com/vuejs/vue/compare/v2.1.9...v2.1.10) (2017-01-17)
## [2.1.9](https://github.com/vuejs/vue/compare/v2.1.8...v2.1.9) (2017-01-16)
### Reverts
- Revert "also bind static special attrs as props (fix #4530)" ([ab0a225](https://github.com/vuejs/vue/commit/ab0a2259e0ef3f4ebdc8d0d4b929fae3e3f579d8)), closes [#4530](https://github.com/vuejs/vue/issues/4530)
- Revert "Mark node with static props as static (#4662)" ([4e830ba](https://github.com/vuejs/vue/commit/4e830ba3c3c92e78bf3ffbea82a583865deaa52a)), closes [#4662](https://github.com/vuejs/vue/issues/4662)
## [2.1.8](https://github.com/vuejs/vue/compare/v2.1.7...v2.1.8) (2016-12-28)
### Reverts
- Revert "remove no longer necessary code" ([fcc98d5](https://github.com/vuejs/vue/commit/fcc98d52e21bb634c3f0c50eeb4ee87494a7196f))
- Revert "ensure leave transitions and enter transitions are triggered in the same frame (fix #4510)" ([02e2d99](https://github.com/vuejs/vue/commit/02e2d99e277a1ba1bd42e1b81b2273903fdb7fbc)), closes [#4510](https://github.com/vuejs/vue/issues/4510)
- Revert "fix enter transition flicker regression (fix #4576)" ([0bb2d4e](https://github.com/vuejs/vue/commit/0bb2d4e2b621950f5d44ed83b7e9ce15e282db68)), closes [#4576](https://github.com/vuejs/vue/issues/4576)
## [2.1.7](https://github.com/vuejs/vue/compare/v2.1.6...v2.1.7) (2016-12-24)
## [2.1.6](https://github.com/vuejs/vue/compare/v2.1.5...v2.1.6) (2016-12-13)
## [2.1.5](https://github.com/vuejs/vue/compare/v2.1.4...v2.1.5) (2016-12-13)
## [2.1.4](https://github.com/vuejs/vue/compare/v2.1.3...v2.1.4) (2016-12-02)
## [2.1.3](https://github.com/vuejs/vue/compare/v2.1.2...v2.1.3) (2016-11-24)
## [2.1.2](https://github.com/vuejs/vue/compare/v2.1.1...v2.1.2) (2016-11-23)
## [2.1.1](https://github.com/vuejs/vue/compare/v2.1.0...v2.1.1) (2016-11-23)
# [2.1.0](https://github.com/vuejs/vue/compare/v2.0.8...v2.1.0) (2016-11-22)
## [2.0.8](https://github.com/vuejs/vue/compare/v2.0.7...v2.0.8) (2016-11-20)
## [2.0.7](https://github.com/vuejs/vue/compare/v2.0.6...v2.0.7) (2016-11-16)
## [2.0.6](https://github.com/vuejs/vue/compare/v2.0.5...v2.0.6) (2016-11-15)
### Reverts
- Revert "fix #4041, warn overriding Vue's internal methods (#4111)" ([1bcc571](https://github.com/vuejs/vue/commit/1bcc571739d7228db0bc947ee67c20dde5aeb7e0)), closes [#4041](https://github.com/vuejs/vue/issues/4041) [#4111](https://github.com/vuejs/vue/issues/4111)
## [2.0.5](https://github.com/vuejs/vue/compare/v2.0.4...v2.0.5) (2016-11-05)
## [2.0.4](https://github.com/vuejs/vue/compare/v2.0.3...v2.0.4) (2016-11-04)
## [2.0.3](https://github.com/vuejs/vue/compare/v2.0.2...v2.0.3) (2016-10-13)
## [2.0.2](https://github.com/vuejs/vue/compare/v2.0.1...v2.0.2) (2016-10-12)
### Reverts
- Revert "fix select multiple first option auto-selected in Chrome/FF (fix #3852)" ([d0cfd54](https://github.com/vuejs/vue/commit/d0cfd549ba24edc7dced17ef7b8f410c4ea197f0)), closes [#3852](https://github.com/vuejs/vue/issues/3852)
## [2.0.1](https://github.com/vuejs/vue/compare/v2.0.0...v2.0.1) (2016-09-30)
# [2.0.0](https://github.com/vuejs/vue/compare/v2.0.0-rc.8...v2.0.0) (2016-09-30)
# [2.0.0-rc.8](https://github.com/vuejs/vue/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2016-09-27)
# [2.0.0-rc.7](https://github.com/vuejs/vue/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2016-09-23)
# [2.0.0-rc.6](https://github.com/vuejs/vue/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2016-09-13)
# [2.0.0-rc.5](https://github.com/vuejs/vue/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2016-09-08)
# [2.0.0-rc.4](https://github.com/vuejs/vue/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2016-08-29)
# [2.0.0-rc.3](https://github.com/vuejs/vue/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2016-08-20)
# [2.0.0-rc.2](https://github.com/vuejs/vue/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2016-08-16)
### Reverts
- Revert "support transition on component with v-show in root node (fix #3431)" ([68be112](https://github.com/vuejs/vue/commit/68be112652060f9a7123b594a3b18ca5fc31b033)), closes [#3431](https://github.com/vuejs/vue/issues/3431)
# [2.0.0-rc.1](https://github.com/vuejs/vue/compare/v2.0.0-beta.8...v2.0.0-rc.1) (2016-08-11)
# [2.0.0-beta.8](https://github.com/vuejs/vue/compare/v2.0.0-beta.7...v2.0.0-beta.8) (2016-08-10)
# [2.0.0-beta.7](https://github.com/vuejs/vue/compare/v2.0.0-beta.6...v2.0.0-beta.7) (2016-08-05)
# [2.0.0-beta.6](https://github.com/vuejs/vue/compare/v2.0.0-beta.5...v2.0.0-beta.6) (2016-08-01)
# [2.0.0-beta.5](https://github.com/vuejs/vue/compare/v2.0.0-beta.4...v2.0.0-beta.5) (2016-07-27)
### Reverts
- Revert "remove parser pre/post transforms (not used)" ([bee95f8](https://github.com/vuejs/vue/commit/bee95f8c08af2dd5af653847ec569bd801112c90))
# [2.0.0-beta.4](https://github.com/vuejs/vue/compare/v2.0.0-beta.3...v2.0.0-beta.4) (2016-07-26)
# [2.0.0-beta.3](https://github.com/vuejs/vue/compare/v2.0.0-beta.2...v2.0.0-beta.3) (2016-07-24)
# [2.0.0-beta.2](https://github.com/vuejs/vue/compare/v2.0.0-beta.1...v2.0.0-beta.2) (2016-07-17)
# [2.0.0-beta.1](https://github.com/vuejs/vue/compare/v2.0.0-alpha.8...v2.0.0-beta.1) (2016-07-07)
# [2.0.0-alpha.8](https://github.com/vuejs/vue/compare/v2.0.0-alpha.7...v2.0.0-alpha.8) (2016-06-28)
# [2.0.0-alpha.7](https://github.com/vuejs/vue/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2016-06-28)
# [2.0.0-alpha.6](https://github.com/vuejs/vue/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2016-06-22)
# [2.0.0-alpha.5](https://github.com/vuejs/vue/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2016-06-17)
# [2.0.0-alpha.4](https://github.com/vuejs/vue/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2016-06-16)
# [2.0.0-alpha.3](https://github.com/vuejs/vue/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2016-06-15)
# [2.0.0-alpha.2](https://github.com/vuejs/vue/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2016-06-13)
# [2.0.0-alpha.1](https://github.com/vuejs/vue/compare/5b30f3eab89db88cb61894de617bdce53e82393e...v2.0.0-alpha.1) (2016-06-10)
### Reverts
- Revert "simplify array change detection" ([5b30f3e](https://github.com/vuejs/vue/commit/5b30f3eab89db88cb61894de617bdce53e82393e))
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2013-present, Yuxi (Evan) You
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================
## Vue 2 has reached End of Life
**You are looking at the now inactive repository for Vue 2. The actively maintained repository for the latest version of Vue is [vuejs/core](https://github.com/vuejs/core).**
Vue has reached End of Life on December 31st, 2023. It no longer receives new features, updates, or fixes. However, it is still available on all existing distribution channels (CDNs, package managers, Github, etc).
If you are starting a new project, please start with the latest version of Vue (3.x). We also strongly recommend current Vue 2 users to upgrade ([guide](https://v3-migration.vuejs.org/)), but we also acknowledge that not all users have the bandwidth or incentive to do so. If you have to stay on Vue 2 but also have compliance or security requirements about unmaintained software, check out [Vue 2 NES](https://www.herodevs.com/support/nes-vue?utm_source=vuejs-github&utm_medium=vue2-readme).
<p align="center"><a href="https://vuejs.org" target="_blank" rel="noopener noreferrer"><img width="100" src="https://vuejs.org/images/logo.png" alt="Vue logo"></a></p>
<p align="center">
<a href="https://circleci.com/gh/vuejs/vue/tree/dev"><img src="https://img.shields.io/circleci/project/github/vuejs/vue/dev.svg?sanitize=true" alt="Build Status"></a>
<a href="https://codecov.io/github/vuejs/vue?branch=dev"><img src="https://img.shields.io/codecov/c/github/vuejs/vue/dev.svg?sanitize=true" alt="Coverage Status"></a>
<a href="https://npmcharts.com/compare/vue?minimal=true"><img src="https://img.shields.io/npm/dm/vue.svg?sanitize=true" alt="Downloads"></a>
<a href="https://www.npmjs.com/package/vue"><img src="https://img.shields.io/npm/v/vue.svg?sanitize=true" alt="Version"></a>
<a href="https://www.npmjs.com/package/vue"><img src="https://img.shields.io/npm/l/vue.svg?sanitize=true" alt="License"></a>
<a href="https://chat.vuejs.org/"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true" alt="Chat"></a>
</p>
## Sponsors
Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of these awesome [backers](https://github.com/vuejs/core/blob/main/BACKERS.md). If you'd like to join them, please consider [ sponsor Vue's development](https://vuejs.org/sponsor/).
<p align="center">
<h3 align="center">Special Sponsor</h3>
</p>
<p align="center">
<a target="_blank" href="https://github.com/appwrite/appwrite">
<img alt="special sponsor appwrite" src="https://sponsors.vuejs.org/images/appwrite.svg" width="300">
</a>
</p>
<p align="center">
<a target="_blank" href="https://vuejs.org/sponsor/">
<img alt="sponsors" src="https://sponsors.vuejs.org/sponsors.svg?v3">
</a>
</p>
---
## Introduction
Vue (pronounced `/vjuː/`, like view) is a **progressive framework** for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.
#### Browser Compatibility
Vue.js supports all browsers that are [ES5-compliant](https://compat-table.github.io/compat-table/es5/) (IE8 and below are not supported).
## Ecosystem
| Project | Status | Description |
| --------------------- | ------------------------------------------------------------ | ------------------------------------------------------- |
| [vue-router] | [![vue-router-status]][vue-router-package] | Single-page application routing |
| [vuex] | [![vuex-status]][vuex-package] | Large-scale state management |
| [vue-cli] | [![vue-cli-status]][vue-cli-package] | Project scaffolding |
| [vue-loader] | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack |
| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support |
| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API |
| [vue-rx] | [![vue-rx-status]][vue-rx-package] | RxJS integration |
| [vue-devtools] | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension |
[vue-router]: https://github.com/vuejs/vue-router
[vuex]: https://github.com/vuejs/vuex
[vue-cli]: https://github.com/vuejs/vue-cli
[vue-loader]: https://github.com/vuejs/vue-loader
[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer
[vue-class-component]: https://github.com/vuejs/vue-class-component
[vue-rx]: https://github.com/vuejs/vue-rx
[vue-devtools]: https://github.com/vuejs/vue-devtools
[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg
[vuex-status]: https://img.shields.io/npm/v/vuex.svg
[vue-cli-status]: https://img.shields.io/npm/v/@vue/cli.svg
[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg
[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg
[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg
[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg
[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg
[vue-router-package]: https://npmjs.com/package/vue-router
[vuex-package]: https://npmjs.com/package/vuex
[vue-cli-package]: https://npmjs.com/package/@vue/cli
[vue-loader-package]: https://npmjs.com/package/vue-loader
[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer
[vue-class-component-package]: https://npmjs.com/package/vue-class-component
[vue-rx-package]: https://npmjs.com/package/vue-rx
[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd
## Documentation
To check out [live examples](https://v2.vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://v2.vuejs.org).
## Questions
For questions and support please use [the official forum](https://forum.vuejs.org) or [community chat](https://chat.vuejs.org/). The issue list of this repo is **exclusively** for bug reports and feature requests.
## Issues
Please make sure to read the [Issue Reporting Checklist](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately.
## Changelog
Detailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases).
## Stay In Touch
- [Twitter](https://twitter.com/vuejs)
- [Blog](https://medium.com/the-vue-point)
- [Job Board](https://vuejobs.com/?ref=vuejs)
## Contribution
Please make sure to read the [Contributing Guide](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md) before making a pull request. If you have a Vue-related project/component/tool, add it with a pull request to [this curated list](https://github.com/vuejs/awesome-vue)!
Thank you to all the people who already contributed to Vue!
<a href="https://github.com/vuejs/vue/graphs/contributors"><img src="https://opencollective.com/vuejs/contributors.svg?width=890" /></a>
## License
[MIT](https://opensource.org/licenses/MIT)
Copyright (c) 2013-present, Yuxi (Evan) You
================================================
FILE: api-extractor.json
================================================
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"projectFolder": ".",
"compiler": {
"tsconfigFilePath": "api-extractor.tsconfig.json"
},
"mainEntryPointFilePath": "./temp/src/v3/index.d.ts",
"dtsRollup": {
"enabled": true,
"untrimmedFilePath": "",
"publicTrimmedFilePath": "./types/v3-generated.d.ts"
},
"apiReport": {
"enabled": false
},
"docModel": {
"enabled": false
},
"tsdocMetadata": {
"enabled": false
},
"messages": {
"compilerMessageReporting": {
"default": {
"logLevel": "warning"
}
},
"extractorMessageReporting": {
"default": {
"logLevel": "warning",
"addToApiReportFile": true
},
"ae-missing-release-tag": {
"logLevel": "none"
},
"ae-internal-missing-underscore": {
"logLevel": "none"
},
"ae-forgotten-export": {
"logLevel": "none"
}
},
"tsdocMessageReporting": {
"default": {
"logLevel": "warning"
},
"tsdoc-undefined-tag": {
"logLevel": "none"
}
}
}
}
================================================
FILE: api-extractor.tsconfig.json
================================================
{
"extends": "./tsconfig.json",
"compilerOptions": {
"baseUrl": "./temp",
"types": []
}
}
================================================
FILE: benchmarks/big-table/demo.css
================================================
form {
margin-bottom: 15px;
}
td.hidden {
color: #ccc;
}
table.filtered td.item {
background-color: #FFFFBF;
}
table.filtered td.item.hidden {
background-color: transparent;
}
================================================
FILE: benchmarks/big-table/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script src="../../dist/vue.min.js"></script>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="demo.css">
</head>
<body>
<div id="el">
<h1>Rendering Dynamic Big Table</h1>
<p>Reference: <a href="http://insin.github.io/ui-lib-samples/large-datasets/index.html">insin/ui-lib-samples/large-datasets</a></p>
<p>
<span>{{ rows }} x {{ cols }}, {{ optimized ? 'with' : 'without' }} optimization. {{ msg }}</span>
</p>
<p>
<button v-if="optimized" @click="loadBase">Disable optimization</button>
<button v-else @click="loadOptimized">Enable optimization (Object.freeze)</button>
<button @click="unmount">Unmount</button>
<button @click="rerender">Rerender with fresh data</button>
</p>
<form>
<strong>Filter Data</strong>:
<input type="text" v-model="filter">
<!--
If the user is filtering the data, we want to offer some insight into
the breadth of the filtering.
-->
<span v-if="filter">
—
Filtering <strong>{{ filter }}</strong>
over {{ dataPoints }} data points,
{{ visibleCount() }} found.
</span>
</form>
<table width="100%" cellspacing="2" :class="{ filtered: filter }">
<tr v-for="row in grid">
<th>{{ row.id }}</th>
<td v-for="item in row.items"
class="item"
:class="{ hidden: !matches(item) }">
{{ item.value }}
</td>
</tr>
</table>
</div>
<script>
var ROWS = 1000
var COLS = 10
var OPTIMIZED = window.location.hash === '#optimized'
window.onhashchange = function () {
window.location.reload()
}
function generateGrid( rowCount, columnCount ) {
var valuePoints = [
"Daenerys", "Jon", "Sansa", "Arya", "Stannis", "Gregor", "Tyrion",
"Theon", "Joffrey", "Ramsay", "Cersei", "Bran", "Margaery",
"Melisandre", "Daario", "Jamie", "Eddard", "Myrcella", "Robb",
"Jorah", "Petyr", "Tommen", "Sandor", "Oberyn", "Drogo", "Ygritte"
]
var valueIndex = 0
var grid = []
for ( var r = 0; r < rowCount; r++ ) {
var row = {
id: r,
items: []
}
for ( var c = 0; c < columnCount; c++ ) {
row.items.push({
id: ( r + "-" + c ),
value: valuePoints[ valueIndex ]
})
if ( ++valueIndex >= valuePoints.length ) {
valueIndex = 0
}
}
grid.push(row)
}
return OPTIMIZED ? Object.freeze(grid) : grid
}
var grid = generateGrid(ROWS, COLS)
var s = window.performance.now()
console.profile('a')
var vm = new Vue({
el: '#el',
data: {
cols: COLS,
rows: ROWS,
optimized: OPTIMIZED,
msg: 'loading...',
grid: grid,
dataPoints: grid.length * grid[0].items.length,
filter: ''
},
methods: {
matches: function (item) {
return item.value.toLowerCase().indexOf(this.filter.toLowerCase()) > -1
},
visibleCount: function () {
var count = 0
var grid = this.grid
for (var i = 0, l = grid.length; i < l; i++) {
var row = grid[i].items
for (var j = 0, k = row.length; j < k; j++) {
var item = row[j]
var matched = !this.filter || this.matches(item)
if (matched) {
count++
}
}
}
return count
},
loadBase: function () {
window.location.hash = ''
},
loadOptimized: function () {
window.location.hash = '#optimized'
},
unmount: function () {
console.profile('unmount')
var s = window.performance.now()
this.grid = []
setTimeout(function () {
vm.msg = 'umount took: ' + (window.performance.now() - s).toFixed(2) + 'ms'
console.profileEnd('unmount')
}, 0)
},
rerender: function () {
var grid = generateGrid(1000, 10)
var s = window.performance.now()
console.profile('rerender')
this.grid = grid
setTimeout(function () {
vm.msg = 'rerender took: ' + (window.performance.now() - s).toFixed(2) + 'ms'
console.profileEnd('rerender')
}, 0)
}
}
})
console.profileEnd('a')
setTimeout(function () {
vm.msg = 'initial render took: ' + (window.performance.now() - s).toFixed(2) + 'ms'
}, 0)
</script>
</body>
</html>
================================================
FILE: benchmarks/big-table/style.css
================================================
@font-face {
font-family: octicons-anchor;
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff');
}
body {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
text-size-adjust: 100%;
color: #333;
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
font-size: 16px;
line-height: 1.6;
word-wrap: break-word;
padding: 1em;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
strong {
font-weight: bold;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
img {
border: 0;
}
hr {
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre {
font-family: monospace, monospace;
font-size: 1em;
}
input {
color: inherit;
font: inherit;
margin: 0;
}
html input[disabled] {
cursor: default;
}
input {
line-height: normal;
}
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
* {
box-sizing: border-box;
}
input {
font: 13px/1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
}
a {
color: #4078c0;
text-decoration: none;
}
a:hover,
a:active {
text-decoration: underline;
}
hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}
hr:before {
display: table;
content: "";
}
hr:after {
display: table;
clear: both;
content: "";
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}
h1 {
font-size: 30px;
}
h1:first-child {
margin-top: 0;
}
h2 {
font-size: 21px;
}
h3 {
font-size: 16px;
}
h4 {
font-size: 14px;
}
h5 {
font-size: 12px;
}
h6 {
font-size: 11px;
}
blockquote {
margin: 0;
}
ul,
ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}
ol ol,
ul ol {
list-style-type: lower-roman;
}
ul ul ol,
ul ol ol,
ol ul ol,
ol ol ol {
list-style-type: lower-alpha;
}
dd {
margin-left: 0;
}
code {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}
pre {
margin-top: 0;
margin-bottom: 0;
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
.octicon {
font: normal normal normal 16px/1 octicons-anchor;
display: inline-block;
text-decoration: none;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.octicon-link:before {
content: '\f05c';
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
a:not([href]) {
cursor: pointer;
text-decoration: none;
}
.anchor
gitextract_tp3drh92/ ├── .editorconfig ├── .git-blame-ignore-revs ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── COMMIT_CONVENTION.md │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── ci.yml │ └── release-tag.yml ├── .gitignore ├── .prettierrc ├── BACKERS.md ├── CHANGELOG.md ├── LICENSE ├── README.md ├── api-extractor.json ├── api-extractor.tsconfig.json ├── benchmarks/ │ ├── big-table/ │ │ ├── demo.css │ │ ├── index.html │ │ └── style.css │ ├── dbmon/ │ │ ├── ENV.js │ │ ├── app.js │ │ ├── index.html │ │ └── lib/ │ │ ├── memory-stats.js │ │ ├── monitor.js │ │ └── styles.css │ ├── reorder-list/ │ │ └── index.html │ ├── ssr/ │ │ ├── README.md │ │ ├── common.js │ │ ├── renderToStream.js │ │ └── renderToString.js │ ├── svg/ │ │ └── index.html │ └── uptime/ │ └── index.html ├── compiler-sfc/ │ ├── index.d.ts │ ├── index.js │ ├── index.mjs │ └── package.json ├── examples/ │ ├── classic/ │ │ ├── commits/ │ │ │ ├── app.js │ │ │ └── index.html │ │ ├── elastic-header/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── firebase/ │ │ │ ├── app.js │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── grid/ │ │ │ ├── grid.js │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── markdown/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── modal/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── move-animations/ │ │ │ └── index.html │ │ ├── select2/ │ │ │ └── index.html │ │ ├── svg/ │ │ │ ├── index.html │ │ │ ├── style.css │ │ │ └── svg.js │ │ ├── todomvc/ │ │ │ ├── app.js │ │ │ ├── index.html │ │ │ └── readme.md │ │ └── tree/ │ │ ├── index.html │ │ └── tree.js │ └── composition/ │ ├── commits.html │ ├── grid.html │ ├── markdown.html │ ├── svg.html │ ├── todomvc.html │ └── tree.html ├── package.json ├── packages/ │ ├── compiler-sfc/ │ │ ├── api-extractor.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── babelUtils.ts │ │ │ ├── compileScript.ts │ │ │ ├── compileStyle.ts │ │ │ ├── compileTemplate.ts │ │ │ ├── cssVars.ts │ │ │ ├── index.ts │ │ │ ├── parse.ts │ │ │ ├── parseComponent.ts │ │ │ ├── prefixIdentifiers.ts │ │ │ ├── rewriteDefault.ts │ │ │ ├── stylePlugins/ │ │ │ │ ├── scoped.ts │ │ │ │ └── trim.ts │ │ │ ├── stylePreprocessors.ts │ │ │ ├── templateCompilerModules/ │ │ │ │ ├── assetUrl.ts │ │ │ │ ├── srcset.ts │ │ │ │ └── utils.ts │ │ │ ├── types.ts │ │ │ └── warn.ts │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ ├── compileScript.spec.ts.snap │ │ │ └── cssVars.spec.ts.snap │ │ ├── compileScript.spec.ts │ │ ├── compileStyle.spec.ts │ │ ├── compileTemplate.spec.ts │ │ ├── cssVars.spec.ts │ │ ├── parseComponent.spec.ts │ │ ├── prefixIdentifiers.spec.ts │ │ ├── rewriteDefault.spec.ts │ │ ├── stylePluginScoped.spec.ts │ │ ├── tsconfig.json │ │ └── util.ts │ ├── server-renderer/ │ │ ├── README.md │ │ ├── client-plugin.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── server-plugin.d.ts │ │ ├── src/ │ │ │ ├── bundle-renderer/ │ │ │ │ ├── create-bundle-renderer.ts │ │ │ │ ├── create-bundle-runner.ts │ │ │ │ └── source-map-support.ts │ │ │ ├── compiler.ts │ │ │ ├── create-basic-renderer.ts │ │ │ ├── create-renderer.ts │ │ │ ├── directives/ │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ └── show.ts │ │ │ ├── index-basic.ts │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── attrs.ts │ │ │ │ ├── class.ts │ │ │ │ ├── dom-props.ts │ │ │ │ ├── index.ts │ │ │ │ └── style.ts │ │ │ ├── optimizing-compiler/ │ │ │ │ ├── codegen.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules.ts │ │ │ │ ├── optimizer.ts │ │ │ │ └── runtime-helpers.ts │ │ │ ├── render-context.ts │ │ │ ├── render-stream.ts │ │ │ ├── render.ts │ │ │ ├── template-renderer/ │ │ │ │ ├── create-async-file-mapper.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse-template.ts │ │ │ │ └── template-stream.ts │ │ │ ├── util.ts │ │ │ ├── webpack-plugin/ │ │ │ │ ├── client.ts │ │ │ │ ├── server.ts │ │ │ │ └── util.ts │ │ │ └── write.ts │ │ ├── test/ │ │ │ ├── async-loader.js │ │ │ ├── compile-with-webpack.ts │ │ │ ├── fixtures/ │ │ │ │ ├── app.js │ │ │ │ ├── async-bar.js │ │ │ │ ├── async-foo.js │ │ │ │ ├── cache-opt-out.js │ │ │ │ ├── cache.js │ │ │ │ ├── error.js │ │ │ │ ├── nested-cache.js │ │ │ │ ├── promise-rejection.js │ │ │ │ ├── split.js │ │ │ │ └── test.css │ │ │ ├── ssr-basic-renderer.spec.ts │ │ │ ├── ssr-bundle-render.spec.ts │ │ │ ├── ssr-reactivity.spec.ts │ │ │ ├── ssr-stream.spec.ts │ │ │ ├── ssr-string.spec.ts │ │ │ ├── ssr-template.spec.ts │ │ │ ├── tsconfig.json │ │ │ └── utils.ts │ │ └── types/ │ │ ├── index.d.ts │ │ ├── plugin.d.ts │ │ ├── test.ts │ │ └── tsconfig.json │ └── template-compiler/ │ ├── README.md │ ├── index.js │ ├── package.json │ └── types/ │ ├── index.d.ts │ ├── test.ts │ └── tsconfig.json ├── pnpm-workspace.yaml ├── scripts/ │ ├── alias.js │ ├── build.js │ ├── config.js │ ├── feature-flags.js │ ├── gen-release-note.js │ ├── git-hooks/ │ │ ├── commit-msg │ │ └── pre-commit │ ├── release.js │ └── verify-commit-msg.js ├── src/ │ ├── compiler/ │ │ ├── codeframe.ts │ │ ├── codegen/ │ │ │ ├── events.ts │ │ │ └── index.ts │ │ ├── create-compiler.ts │ │ ├── directives/ │ │ │ ├── bind.ts │ │ │ ├── index.ts │ │ │ ├── model.ts │ │ │ └── on.ts │ │ ├── error-detector.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── optimizer.ts │ │ ├── parser/ │ │ │ ├── entity-decoder.ts │ │ │ ├── filter-parser.ts │ │ │ ├── html-parser.ts │ │ │ ├── index.ts │ │ │ └── text-parser.ts │ │ └── to-function.ts │ ├── core/ │ │ ├── components/ │ │ │ ├── index.ts │ │ │ └── keep-alive.ts │ │ ├── config.ts │ │ ├── global-api/ │ │ │ ├── assets.ts │ │ │ ├── extend.ts │ │ │ ├── index.ts │ │ │ ├── mixin.ts │ │ │ └── use.ts │ │ ├── index.ts │ │ ├── instance/ │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── inject.ts │ │ │ ├── lifecycle.ts │ │ │ ├── proxy.ts │ │ │ ├── render-helpers/ │ │ │ │ ├── bind-dynamic-keys.ts │ │ │ │ ├── bind-object-listeners.ts │ │ │ │ ├── bind-object-props.ts │ │ │ │ ├── check-keycodes.ts │ │ │ │ ├── index.ts │ │ │ │ ├── render-list.ts │ │ │ │ ├── render-slot.ts │ │ │ │ ├── render-static.ts │ │ │ │ ├── resolve-filter.ts │ │ │ │ ├── resolve-scoped-slots.ts │ │ │ │ └── resolve-slots.ts │ │ │ ├── render.ts │ │ │ └── state.ts │ │ ├── observer/ │ │ │ ├── array.ts │ │ │ ├── dep.ts │ │ │ ├── index.ts │ │ │ ├── scheduler.ts │ │ │ ├── traverse.ts │ │ │ └── watcher.ts │ │ ├── util/ │ │ │ ├── debug.ts │ │ │ ├── env.ts │ │ │ ├── error.ts │ │ │ ├── index.ts │ │ │ ├── lang.ts │ │ │ ├── next-tick.ts │ │ │ ├── options.ts │ │ │ ├── perf.ts │ │ │ └── props.ts │ │ └── vdom/ │ │ ├── create-component.ts │ │ ├── create-element.ts │ │ ├── create-functional-component.ts │ │ ├── helpers/ │ │ │ ├── extract-props.ts │ │ │ ├── get-first-component-child.ts │ │ │ ├── index.ts │ │ │ ├── is-async-placeholder.ts │ │ │ ├── merge-hook.ts │ │ │ ├── normalize-children.ts │ │ │ ├── normalize-scoped-slots.ts │ │ │ ├── resolve-async-component.ts │ │ │ └── update-listeners.ts │ │ ├── modules/ │ │ │ ├── directives.ts │ │ │ ├── index.ts │ │ │ └── template-ref.ts │ │ ├── patch.ts │ │ └── vnode.ts │ ├── global.d.ts │ ├── platforms/ │ │ └── web/ │ │ ├── compiler/ │ │ │ ├── directives/ │ │ │ │ ├── html.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ └── text.ts │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── class.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ └── style.ts │ │ │ ├── options.ts │ │ │ └── util.ts │ │ ├── entry-compiler.ts │ │ ├── entry-runtime-esm.ts │ │ ├── entry-runtime-with-compiler-esm.ts │ │ ├── entry-runtime-with-compiler.ts │ │ ├── entry-runtime.ts │ │ ├── runtime/ │ │ │ ├── class-util.ts │ │ │ ├── components/ │ │ │ │ ├── index.ts │ │ │ │ ├── transition-group.ts │ │ │ │ └── transition.ts │ │ │ ├── directives/ │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ └── show.ts │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── attrs.ts │ │ │ │ ├── class.ts │ │ │ │ ├── dom-props.ts │ │ │ │ ├── events.ts │ │ │ │ ├── index.ts │ │ │ │ ├── style.ts │ │ │ │ └── transition.ts │ │ │ ├── node-ops.ts │ │ │ ├── patch.ts │ │ │ └── transition-util.ts │ │ ├── runtime-with-compiler.ts │ │ └── util/ │ │ ├── attrs.ts │ │ ├── class.ts │ │ ├── compat.ts │ │ ├── element.ts │ │ ├── index.ts │ │ └── style.ts │ ├── shared/ │ │ ├── constants.ts │ │ └── util.ts │ ├── types/ │ │ ├── compiler.ts │ │ ├── component.ts │ │ ├── global-api.ts │ │ ├── modules.d.ts │ │ ├── options.ts │ │ ├── ssr.ts │ │ ├── utils.ts │ │ └── vnode.ts │ └── v3/ │ ├── apiAsyncComponent.ts │ ├── apiInject.ts │ ├── apiLifecycle.ts │ ├── apiSetup.ts │ ├── apiWatch.ts │ ├── currentInstance.ts │ ├── debug.ts │ ├── h.ts │ ├── index.ts │ ├── reactivity/ │ │ ├── computed.ts │ │ ├── effect.ts │ │ ├── effectScope.ts │ │ ├── operations.ts │ │ ├── reactive.ts │ │ ├── readonly.ts │ │ └── ref.ts │ └── sfc-helpers/ │ ├── useCssModule.ts │ └── useCssVars.ts ├── test/ │ ├── e2e/ │ │ ├── async-edge-cases.html │ │ ├── async-edge-cases.spec.ts │ │ ├── basic-ssr.html │ │ ├── basic-ssr.spec.ts │ │ ├── commits.mock.ts │ │ ├── commits.spec.ts │ │ ├── e2eUtils.ts │ │ ├── grid.spec.ts │ │ ├── markdown.spec.ts │ │ ├── svg.spec.ts │ │ ├── todomvc.spec.ts │ │ └── tree.spec.ts │ ├── helpers/ │ │ ├── classlist.ts │ │ ├── shim-done.ts │ │ ├── test-object-option.ts │ │ ├── to-have-warned.ts │ │ ├── trigger-event.ts │ │ ├── vdom.ts │ │ └── wait-for-update.ts │ ├── test-env.d.ts │ ├── transition/ │ │ ├── helpers.ts │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── transition-group.spec.ts │ │ ├── transition-mode.spec.ts │ │ ├── transition-with-keep-alive.spec.ts │ │ └── transition.spec.ts │ ├── tsconfig.json │ ├── unit/ │ │ ├── features/ │ │ │ ├── component/ │ │ │ │ ├── component-async.spec.ts │ │ │ │ ├── component-keep-alive.spec.ts │ │ │ │ ├── component-scoped-slot.spec.ts │ │ │ │ ├── component-slot.spec.ts │ │ │ │ └── component.spec.ts │ │ │ ├── debug.spec.ts │ │ │ ├── directives/ │ │ │ │ ├── bind.spec.ts │ │ │ │ ├── class.spec.ts │ │ │ │ ├── cloak.spec.ts │ │ │ │ ├── for.spec.ts │ │ │ │ ├── html.spec.ts │ │ │ │ ├── if.spec.ts │ │ │ │ ├── model-checkbox.spec.ts │ │ │ │ ├── model-component.spec.ts │ │ │ │ ├── model-dynamic.spec.ts │ │ │ │ ├── model-file.spec.ts │ │ │ │ ├── model-parse.spec.ts │ │ │ │ ├── model-radio.spec.ts │ │ │ │ ├── model-select.spec.ts │ │ │ │ ├── model-text.spec.ts │ │ │ │ ├── on.spec.ts │ │ │ │ ├── once.spec.ts │ │ │ │ ├── pre.spec.ts │ │ │ │ ├── show.spec.ts │ │ │ │ ├── static-style-parser.spec.ts │ │ │ │ ├── style.spec.ts │ │ │ │ └── text.spec.ts │ │ │ ├── error-handling.spec.ts │ │ │ ├── filter/ │ │ │ │ └── filter.spec.ts │ │ │ ├── global-api/ │ │ │ │ ├── assets.spec.ts │ │ │ │ ├── compile.spec.ts │ │ │ │ ├── config.spec.ts │ │ │ │ ├── extend.spec.ts │ │ │ │ ├── mixin.spec.ts │ │ │ │ ├── observable.spec.ts │ │ │ │ ├── set-delete.spec.ts │ │ │ │ └── use.spec.ts │ │ │ ├── instance/ │ │ │ │ ├── init.spec.ts │ │ │ │ ├── methods-data.spec.ts │ │ │ │ ├── methods-events.spec.ts │ │ │ │ ├── methods-lifecycle.spec.ts │ │ │ │ ├── properties.spec.ts │ │ │ │ └── render-proxy.spec.ts │ │ │ ├── options/ │ │ │ │ ├── _scopeId.spec.ts │ │ │ │ ├── comments.spec.ts │ │ │ │ ├── components.spec.ts │ │ │ │ ├── computed.spec.ts │ │ │ │ ├── data.spec.ts │ │ │ │ ├── delimiters.spec.ts │ │ │ │ ├── directives.spec.ts │ │ │ │ ├── el.spec.ts │ │ │ │ ├── errorCaptured.spec.ts │ │ │ │ ├── extends.spec.ts │ │ │ │ ├── functional.spec.ts │ │ │ │ ├── inheritAttrs.spec.ts │ │ │ │ ├── inject.spec.ts │ │ │ │ ├── lifecycle.spec.ts │ │ │ │ ├── methods.spec.ts │ │ │ │ ├── mixins.spec.ts │ │ │ │ ├── name.spec.ts │ │ │ │ ├── parent.spec.ts │ │ │ │ ├── props.spec.ts │ │ │ │ ├── propsData.spec.ts │ │ │ │ ├── render.spec.ts │ │ │ │ ├── renderError.spec.ts │ │ │ │ ├── template.spec.ts │ │ │ │ └── watch.spec.ts │ │ │ ├── template-ref.spec.ts │ │ │ └── v3/ │ │ │ ├── apiAsyncComponent.spec.ts │ │ │ ├── apiInject.spec.ts │ │ │ ├── apiLifecycle.spec.ts │ │ │ ├── apiSetup.spec.ts │ │ │ ├── apiWatch.spec.ts │ │ │ ├── reactivity/ │ │ │ │ ├── computed.spec.ts │ │ │ │ ├── effectScope.spec.ts │ │ │ │ ├── reactive.spec.ts │ │ │ │ ├── readonly.spec.ts │ │ │ │ ├── ref.spec.ts │ │ │ │ ├── shallowReactive.spec.ts │ │ │ │ └── shallowReadonly.spec.ts │ │ │ ├── setupTemplateRef.spec.ts │ │ │ └── useCssVars.spec.ts │ │ └── modules/ │ │ ├── compiler/ │ │ │ ├── codeframe.spec.ts │ │ │ ├── codegen.spec.ts │ │ │ ├── compiler-options.spec.ts │ │ │ ├── optimizer.spec.ts │ │ │ └── parser.spec.ts │ │ ├── observer/ │ │ │ ├── dep.spec.ts │ │ │ ├── observer.spec.ts │ │ │ ├── scheduler.spec.ts │ │ │ └── watcher.spec.ts │ │ ├── server-compiler/ │ │ │ └── compiler-options.spec.ts │ │ ├── util/ │ │ │ ├── error.spec.ts │ │ │ ├── next-tick.spec.ts │ │ │ └── toString.spec.ts │ │ └── vdom/ │ │ ├── create-component.spec.ts │ │ ├── create-element.spec.ts │ │ ├── modules/ │ │ │ ├── attrs.spec.ts │ │ │ ├── class.spec.ts │ │ │ ├── directive.spec.ts │ │ │ ├── dom-props.spec.ts │ │ │ ├── events.spec.ts │ │ │ └── style.spec.ts │ │ └── patch/ │ │ ├── children.spec.ts │ │ ├── edge-cases.spec.ts │ │ ├── element.spec.ts │ │ ├── hooks.spec.ts │ │ └── hydration.spec.ts │ └── vitest.setup.ts ├── tsconfig.json ├── types/ │ ├── built-in-components.d.ts │ ├── common.d.ts │ ├── index.d.ts │ ├── jsx.d.ts │ ├── options.d.ts │ ├── plugin.d.ts │ ├── test/ │ │ ├── async-component-test.ts │ │ ├── augmentation-test.ts │ │ ├── es-module.ts │ │ ├── options-test.ts │ │ ├── plugin-test.ts │ │ ├── setup-helpers-test.ts │ │ ├── umd-test.ts │ │ ├── utils.ts │ │ ├── v3/ │ │ │ ├── define-async-component-test.tsx │ │ │ ├── define-component-test.tsx │ │ │ ├── inject-test.ts │ │ │ ├── reactivity-test.ts │ │ │ ├── setup-test.ts │ │ │ ├── tsx-test.tsx │ │ │ └── watch-test.ts │ │ └── vue-test.ts │ ├── tsconfig.json │ ├── typings.json │ ├── umd.d.ts │ ├── v3-component-options.d.ts │ ├── v3-component-props.d.ts │ ├── v3-component-public-instance.d.ts │ ├── v3-define-async-component.d.ts │ ├── v3-define-component.d.ts │ ├── v3-directive.d.ts │ ├── v3-manual-apis.d.ts │ ├── v3-setup-context.d.ts │ ├── v3-setup-helpers.d.ts │ ├── vnode.d.ts │ └── vue.d.ts └── vitest.config.ts
SYMBOL INDEX (2081 symbols across 315 files)
FILE: benchmarks/dbmon/ENV.js
function formatElapsed (line 11) | function formatElapsed(value) {
function getElapsedClassName (line 23) | function getElapsedClassName(elapsed) {
function countClassName (line 37) | function countClassName(queries) {
function updateQuery (line 51) | function updateQuery(object) {
function cleanQuery (line 70) | function cleanQuery(value) {
function generateRow (line 86) | function generateRow(object, keepIdentity, counter) {
function getData (line 135) | function getData(keepIdentity) {
function mutations (line 177) | function mutations(value) {
FILE: benchmarks/dbmon/app.js
function loadSamples (line 8) | function loadSamples() {
FILE: benchmarks/dbmon/lib/memory-stats.js
function bytesToSize (line 86) | function bytesToSize( bytes, nFractDigit ){
FILE: benchmarks/ssr/common.js
function generateGrid (line 12) | function generateGrid (rowCount, columnCount) {
FILE: examples/classic/svg/svg.js
function valueToPoint (line 46) | function valueToPoint(value, index, total) {
FILE: examples/classic/todomvc/app.js
function onHashChange (line 143) | function onHashChange () {
FILE: packages/compiler-sfc/src/babelUtils.ts
function walkIdentifiers (line 15) | function walkIdentifiers(
function isReferencedIdentifier (line 87) | function isReferencedIdentifier(
function isInDestructureAssignment (line 119) | function isInDestructureAssignment(
function walkFunctionParams (line 140) | function walkFunctionParams(
function walkBlockDeclarations (line 151) | function walkBlockDeclarations(
function extractIdentifiers (line 173) | function extractIdentifiers(
function markScopeIdentifier (line 218) | function markScopeIdentifier(
function isReferenced (line 256) | function isReferenced(node: Node, parent: Node, grandparent?: Node): boo...
FILE: packages/compiler-sfc/src/compileScript.ts
constant DEFINE_PROPS (line 53) | const DEFINE_PROPS = 'defineProps'
constant DEFINE_EMITS (line 54) | const DEFINE_EMITS = 'defineEmits'
constant DEFINE_EXPOSE (line 55) | const DEFINE_EXPOSE = 'defineExpose'
constant WITH_DEFAULTS (line 56) | const WITH_DEFAULTS = 'withDefaults'
constant DEFAULT_VAR (line 59) | const DEFAULT_VAR = `__default__`
type SFCScriptCompileOptions (line 65) | interface SFCScriptCompileOptions {
type ImportBinding (line 85) | interface ImportBinding {
function compileScript (line 98) | function compileScript(
function registerBinding (line 1275) | function registerBinding(
function walkDeclaration (line 1283) | function walkDeclaration(
function walkObjectPattern (line 1349) | function walkObjectPattern(
function walkArrayPattern (line 1377) | function walkArrayPattern(
function walkPattern (line 1388) | function walkPattern(
type PropTypeData (line 1423) | interface PropTypeData {
function recordType (line 1429) | function recordType(node: Node, declaredTypes: Record<string, string[]>) {
function extractRuntimeProps (line 1442) | function extractRuntimeProps(
function inferRuntimeType (line 1469) | function inferRuntimeType(
function toRuntimeTypeString (line 1556) | function toRuntimeTypeString(types: string[]) {
function extractRuntimeEmits (line 1560) | function extractRuntimeEmits(
function extractEventNames (line 1577) | function extractEventNames(
function genRuntimeEmits (line 1608) | function genRuntimeEmits(emits: Set<string>) {
function isCallOf (line 1616) | function isCallOf(
function canNeverBeRef (line 1630) | function canNeverBeRef(node: Node, userReactiveImport: string): boolean {
function analyzeScriptBindings (line 1663) | function analyzeScriptBindings(ast: Statement[]): BindingMetadata {
function analyzeBindingsFromOptions (line 1675) | function analyzeBindingsFromOptions(node: ObjectExpression): BindingMeta...
function getObjectExpressionKeys (line 1751) | function getObjectExpressionKeys(node: ObjectExpression): string[] {
function getArrayExpressionKeys (line 1768) | function getArrayExpressionKeys(node: ArrayExpression): string[] {
function getObjectOrArrayExpressionKeys (line 1778) | function getObjectOrArrayExpressionKeys(value: Node): string[] {
function resolveTemplateUsageCheckString (line 1790) | function resolveTemplateUsageCheckString(sfc: SFCDescriptor, isTS: boole...
function processExp (line 1841) | function processExp(exp: string, isTS: boolean, dir?: string): string {
function stripStrings (line 1865) | function stripStrings(exp: string) {
function stripTemplateString (line 1871) | function stripTemplateString(str: string): string {
function isImportUsed (line 1879) | function isImportUsed(
function hmrShouldReload (line 1896) | function hmrShouldReload(
FILE: packages/compiler-sfc/src/compileStyle.ts
type SFCStyleCompileOptions (line 12) | interface SFCStyleCompileOptions {
type SFCAsyncStyleCompileOptions (line 26) | interface SFCAsyncStyleCompileOptions extends SFCStyleCompileOptions {
type SFCStyleCompileResults (line 30) | interface SFCStyleCompileResults {
function compileStyle (line 37) | function compileStyle(
function compileStyleAsync (line 43) | function compileStyleAsync(
function doCompileStyle (line 49) | function doCompileStyle(
function preprocess (line 133) | function preprocess(
FILE: packages/compiler-sfc/src/compileTemplate.ts
type SFCTemplateCompileOptions (line 12) | interface SFCTemplateCompileOptions {
type SFCTemplateCompileResults (line 30) | interface SFCTemplateCompileResults {
function compileTemplate (line 38) | function compileTemplate(
function preprocess (line 66) | function preprocess(
function actuallyCompile (line 97) | function actuallyCompile(
FILE: packages/compiler-sfc/src/cssVars.ts
constant CSS_VARS_HELPER (line 7) | const CSS_VARS_HELPER = `useCssVars`
function genCssVarsFromList (line 9) | function genCssVarsFromList(
function genVarName (line 22) | function genVarName(id: string, raw: string, isProd: boolean): string {
function normalizeExpression (line 30) | function normalizeExpression(exp: string) {
function parseCssVars (line 43) | function parseCssVars(sfc: SFCDescriptor): string[] {
type LexerState (line 63) | const enum LexerState {
function lexBinding (line 69) | function lexBinding(content: string, start: number): number | null {
type CssVarsPluginOptions (line 107) | interface CssVarsPluginOptions {
method Declaration (line 116) | Declaration(decl) {
function genCssVarsCode (line 142) | function genCssVarsCode(
function genNormalScriptCssVarsCode (line 160) | function genNormalScriptCssVarsCode(
FILE: packages/compiler-sfc/src/parse.ts
type SFCParseOptions (line 20) | interface SFCParseOptions {
function parse (line 33) | function parse(options: SFCParseOptions): SFCDescriptor {
function generateSourceMap (line 97) | function generateSourceMap(
FILE: packages/compiler-sfc/src/parseComponent.ts
constant DEFAULT_FILENAME (line 8) | const DEFAULT_FILENAME = 'anonymous.vue'
type SFCCustomBlock (line 14) | interface SFCCustomBlock {
type SFCBlock (line 24) | interface SFCBlock extends SFCCustomBlock {
type SFCScriptBlock (line 30) | interface SFCScriptBlock extends SFCBlock {
type SFCDescriptor (line 45) | interface SFCDescriptor {
type VueTemplateCompilerParseOptions (line 68) | interface VueTemplateCompilerParseOptions {
function parseComponent (line 77) | function parseComponent(
FILE: packages/compiler-sfc/src/prefixIdentifiers.ts
function prefixIdentifiers (line 19) | function prefixIdentifiers(
FILE: packages/compiler-sfc/src/rewriteDefault.ts
function rewriteDefault (line 13) | function rewriteDefault(
function hasDefaultExport (line 97) | function hasDefaultExport(input: string): boolean {
function specifierEnd (line 101) | function specifierEnd(
FILE: packages/compiler-sfc/src/stylePlugins/scoped.ts
method Rule (line 13) | Rule(rule) {
method AtRule (line 16) | AtRule(node) {
method OnceExit (line 25) | OnceExit(root) {
function processRule (line 63) | function processRule(id: string, rule: Rule) {
function rewriteSelector (line 80) | function rewriteSelector(
function isSpaceCombinator (line 198) | function isSpaceCombinator(node: selectorParser.Node) {
FILE: packages/compiler-sfc/src/stylePlugins/trim.ts
method Once (line 6) | Once(root) {
FILE: packages/compiler-sfc/src/stylePreprocessors.ts
type StylePreprocessor (line 5) | type StylePreprocessor = (
type StylePreprocessorResults (line 15) | interface StylePreprocessorResults {
function getSource (line 115) | function getSource(
type PreprocessLang (line 127) | type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus'
FILE: packages/compiler-sfc/src/templateCompilerModules/assetUrl.ts
type AssetURLOptions (line 6) | interface AssetURLOptions {
type TransformAssetUrlsOptions (line 10) | interface TransformAssetUrlsOptions {
function transform (line 46) | function transform(
function rewrite (line 70) | function rewrite(
FILE: packages/compiler-sfc/src/templateCompilerModules/srcset.ts
type ImageCandidate (line 7) | interface ImageCandidate {
function transform (line 21) | function transform(
FILE: packages/compiler-sfc/src/templateCompilerModules/utils.ts
function urlToRequire (line 5) | function urlToRequire(
function parseUriParts (line 64) | function parseUriParts(urlString: string): UrlWithStringQuery {
function isExternalUrl (line 79) | function isExternalUrl(url: string): boolean {
function isDataUrl (line 84) | function isDataUrl(url: string): boolean {
FILE: packages/compiler-sfc/src/types.ts
type StartOfSourceMap (line 4) | interface StartOfSourceMap {
type RawSourceMap (line 9) | interface RawSourceMap extends StartOfSourceMap {
type TemplateCompiler (line 17) | interface TemplateCompiler {
type BindingTypes (line 23) | const enum BindingTypes {
type BindingMetadata (line 65) | type BindingMetadata = {
FILE: packages/compiler-sfc/src/warn.ts
function warnOnce (line 3) | function warnOnce(msg: string) {
function warn (line 12) | function warn(msg: string) {
FILE: packages/compiler-sfc/test/compileTemplate.spec.ts
function mockRender (line 6) | function mockRender(code: string, mocks: Record<string, any> = {}) {
FILE: packages/compiler-sfc/test/util.ts
function compile (line 11) | function compile(
function assertCode (line 23) | function assertCode(code: string) {
FILE: packages/server-renderer/src/bundle-renderer/create-bundle-renderer.ts
constant INVALID_MSG (line 13) | const INVALID_MSG =
type RenderBundle (line 24) | type RenderBundle = {
function createBundleRendererCreator (line 32) | function createBundleRendererCreator(
FILE: packages/server-renderer/src/bundle-renderer/create-bundle-runner.ts
function createSandbox (line 8) | function createSandbox(context?: any) {
function compileModule (line 27) | function compileModule(files, basedir, runInNewContext) {
function deepClone (line 79) | function deepClone(val) {
function createBundleRunner (line 93) | function createBundleRunner(entry, files, basedir, runInNewContext) {
FILE: packages/server-renderer/src/bundle-renderer/source-map-support.ts
function createSourceMapConsumers (line 5) | function createSourceMapConsumers(rawMaps: Object) {
function rewriteErrorTrace (line 13) | function rewriteErrorTrace(
function rewriteTraceLine (line 29) | function rewriteTraceLine(
FILE: packages/server-renderer/src/create-basic-renderer.ts
function createBasicRenderer (line 6) | function createBasicRenderer({
FILE: packages/server-renderer/src/create-renderer.ts
type Renderer (line 11) | type Renderer = {
type RenderCache (line 20) | type RenderCache = {
type RenderOptions (line 26) | type RenderOptions = {
function createRenderer (line 43) | function createRenderer({
FILE: packages/server-renderer/src/directives/model.ts
function model (line 6) | function model(node: VNodeWithData, dir: VNodeDirective) {
function getValue (line 29) | function getValue(option) {
function setSelected (line 38) | function setSelected(option) {
FILE: packages/server-renderer/src/directives/show.ts
function show (line 3) | function show(node: VNodeWithData, dir: VNodeDirective) {
FILE: packages/server-renderer/src/index.ts
function createRenderer (line 15) | function createRenderer(
FILE: packages/server-renderer/src/modules/attrs.ts
function renderAttrs (line 15) | function renderAttrs(node: VNodeWithData): string {
function renderAttr (line 54) | function renderAttr(key: string, value: string): string {
FILE: packages/server-renderer/src/modules/class.ts
function renderClass (line 5) | function renderClass(node: VNodeWithData): string | undefined {
FILE: packages/server-renderer/src/modules/dom-props.ts
function renderDOMProps (line 7) | function renderDOMProps(node: VNodeWithData): string {
function setText (line 46) | function setText(node, text, raw) {
FILE: packages/server-renderer/src/modules/style.ts
function genStyle (line 6) | function genStyle(style: Object): string {
function normalizeValue (line 22) | function normalizeValue(key: string, value: any): string {
function renderStyle (line 35) | function renderStyle(vnode: VNodeWithData): string | undefined {
FILE: packages/server-renderer/src/optimizing-compiler/codegen.ts
type StringSegment (line 28) | type StringSegment = {
constant RAW (line 34) | const RAW = 0
constant INTERPOLATION (line 35) | const INTERPOLATION = 1
constant EXPRESSION (line 36) | const EXPRESSION = 2
function generate (line 38) | function generate(
function genSSRElement (line 50) | function genSSRElement(el: ASTElement, state: CodegenState): string {
function genNormalElement (line 80) | function genNormalElement(el, state, stringifyChildren) {
function genSSRChildren (line 90) | function genSSRChildren(el, state, checkSkip?: boolean) {
function genSSRNode (line 94) | function genSSRNode(el, state) {
function genChildrenAsStringNode (line 98) | function genChildrenAsStringNode(el, state) {
function genStringElement (line 104) | function genStringElement(el, state) {
function genStringElementWithChildren (line 108) | function genStringElementWithChildren(el, state) {
function elementToString (line 115) | function elementToString(el, state) {
function elementToSegments (line 119) | function elementToSegments(el, state): Array<StringSegment> {
function elementToOpenTagSegments (line 151) | function elementToOpenTagSegments(el, state): Array<StringSegment> {
function childrenToSegments (line 198) | function childrenToSegments(el, state): Array<StringSegment> {
function nodesToSegments (line 212) | function nodesToSegments(
function flattenSegments (line 234) | function flattenSegments(segments: Array<StringSegment>): string {
FILE: packages/server-renderer/src/optimizing-compiler/modules.ts
function applyModelTransform (line 19) | function applyModelTransform(el: ASTElement, state: CodegenState) {
function genAttrSegments (line 35) | function genAttrSegments(attrs: Array<ASTAttr>): Array<StringSegment> {
function genDOMPropSegments (line 39) | function genDOMPropSegments(
function genAttrSegment (line 56) | function genAttrSegment(name: string, value: string): StringSegment {
function genClassSegments (line 80) | function genClassSegments(
function genStyleSegments (line 96) | function genStyleSegments(
FILE: packages/server-renderer/src/optimizing-compiler/optimizer.ts
function optimize (line 25) | function optimize(root: ASTElement | null, options: CompilerOptions) {
function walk (line 31) | function walk(node: ASTNode, isRoot?: boolean) {
function optimizeSiblings (line 74) | function optimizeSiblings(el) {
function isUnOptimizableTree (line 110) | function isUnOptimizableTree(node: ASTNode): boolean {
function hasCustomDirective (line 125) | function hasCustomDirective(node: ASTNode): boolean {
function isSelectWithModel (line 133) | function isSelectWithModel(node: ASTNode): boolean {
FILE: packages/server-renderer/src/optimizing-compiler/runtime-helpers.ts
function installSSRHelpers (line 31) | function installSSRHelpers(vm: Component) {
class StringNode (line 49) | class StringNode {
method constructor (line 55) | constructor(
function renderStringNode (line 77) | function renderStringNode(
function renderStringList (line 86) | function renderStringList(
function renderAttrs (line 110) | function renderAttrs(obj: Object): string {
function renderDOMProps (line 121) | function renderDOMProps(obj: Object): string {
function renderSSRClass (line 132) | function renderSSRClass(staticClass: string | null, dynamic: any): string {
function renderSSRStyle (line 137) | function renderSSRStyle(
FILE: packages/server-renderer/src/render-context.ts
type RenderState (line 5) | type RenderState =
class RenderContext (line 31) | class RenderContext {
method constructor (line 47) | constructor(options: Record<string, any>) {
method next (line 71) | next() {
function normalizeAsync (line 125) | function normalizeAsync(cache, method) {
FILE: packages/server-renderer/src/render-stream.ts
class RenderStream (line 15) | class RenderStream extends Readable {
method constructor (line 26) | constructor(render: Function) {
method pushBySize (line 57) | pushBySize(n: number) {
method tryRender (line 63) | tryRender() {
method tryNext (line 71) | tryNext() {
method _read (line 79) | _read(n: number) {
FILE: packages/server-renderer/src/render.ts
function waitForServerPrefetch (line 58) | function waitForServerPrefetch(vm, resolve, reject) {
function renderNode (line 79) | function renderNode(node, isRoot, context) {
function registerComponentForCache (line 101) | function registerComponentForCache(options, write) {
function renderComponent (line 111) | function renderComponent(node, isRoot, context) {
function renderComponentWithCache (line 175) | function renderComponentWithCache(node, isRoot, key, context) {
function renderComponentInner (line 192) | function renderComponentInner(node, isRoot, context) {
function renderAsyncComponent (line 222) | function renderAsyncComponent(node, isRoot, context) {
function renderStringNode (line 287) | function renderStringNode(el, context) {
function renderElement (line 304) | function renderElement(el, isRoot, context) {
function hasAncestorData (line 336) | function hasAncestorData(node: VNode) {
function getVShowDirectiveInfo (line 343) | function getVShowDirectiveInfo(node: VNode): VNodeDirective | undefined {
function renderStartingTag (line 360) | function renderStartingTag(node: VNode, context) {
function createRenderFunction (line 427) | function createRenderFunction(
FILE: packages/server-renderer/src/template-renderer/create-async-file-mapper.ts
type AsyncFileMapper (line 9) | type AsyncFileMapper = (files: Array<string>) => Array<string>
function createMapper (line 11) | function createMapper(clientManifest: ClientManifest): AsyncFileMapper {
function createMap (line 28) | function createMap(clientManifest) {
function mapIdToFile (line 36) | function mapIdToFile(id, clientManifest) {
FILE: packages/server-renderer/src/template-renderer/index.ts
type TemplateRendererOptions (line 11) | type TemplateRendererOptions = {
type ClientManifest (line 22) | type ClientManifest = {
type Resource (line 35) | type Resource = {
class TemplateRenderer (line 42) | class TemplateRenderer {
method constructor (line 58) | constructor(options: TemplateRendererOptions) {
method bindRenderFns (line 94) | bindRenderFns(context: Record<string, any>) {
method render (line 107) | render(
method renderStyles (line 143) | renderStyles(context: Record<string, any>): string {
method renderResourceHints (line 163) | renderResourceHints(context: Object): string {
method getPreloadFiles (line 167) | getPreloadFiles(context: Object): Array<Resource> {
method renderPreloadLinks (line 176) | renderPreloadLinks(context: Object): string {
method renderPrefetchLinks (line 204) | renderPrefetchLinks(context: Object): string {
method renderState (line 227) | renderState(
method renderScripts (line 243) | renderScripts(context: Object): string {
method getUsedAsyncFiles (line 260) | getUsedAsyncFiles(context: Record<string, any>): Array<Resource> | und...
method createStream (line 273) | createStream(context: Record<string, any> | undefined): TemplateStream {
function normalizeFile (line 282) | function normalizeFile(file: string): Resource {
function getPreloadType (line 293) | function getPreloadType(ext: string): string {
FILE: packages/server-renderer/src/template-renderer/parse-template.ts
type ParsedTemplate (line 7) | type ParsedTemplate = {
function parseTemplate (line 13) | function parseTemplate(
FILE: packages/server-renderer/src/template-renderer/template-stream.ts
class TemplateStream (line 6) | class TemplateStream extends Transform {
method constructor (line 13) | constructor(
method _transform (line 26) | _transform(data: Buffer | string, encoding: string, done: Function) {
method start (line 35) | start() {
method _flush (line 61) | _flush(done: Function) {
FILE: packages/server-renderer/src/util.ts
constant ESC (line 39) | const ESC = {
function escape (line 46) | function escape(s: string) {
function escapeChar (line 50) | function escapeChar(a) {
function createPromiseCallback (line 103) | function createPromiseCallback() {
FILE: packages/server-renderer/src/webpack-plugin/client.ts
class VueSSRClientPlugin (line 5) | class VueSSRClientPlugin {
method constructor (line 6) | constructor(options = {}) {
method apply (line 16) | apply(compiler) {
FILE: packages/server-renderer/src/webpack-plugin/server.ts
class VueSSRServerPlugin (line 3) | class VueSSRServerPlugin {
method constructor (line 4) | constructor(options = {}) {
method apply (line 14) | apply(compiler) {
FILE: packages/server-renderer/src/write.ts
constant MAX_STACK_DEPTH (line 1) | const MAX_STACK_DEPTH = 800
function createWriteFunction (line 21) | function createWriteFunction(
FILE: packages/server-renderer/test/compile-with-webpack.ts
function compileWithWebpack (line 8) | function compileWithWebpack(
function createWebpackBundleRenderer (line 50) | async function createWebpackBundleRenderer(
FILE: packages/server-renderer/test/fixtures/app.js
method render (line 8) | render(h) {
FILE: packages/server-renderer/test/fixtures/async-bar.js
method beforeCreate (line 2) | beforeCreate() {
method render (line 5) | render(h) {
FILE: packages/server-renderer/test/fixtures/async-foo.js
method beforeCreate (line 7) | beforeCreate() {
method render (line 10) | render(h) {
FILE: packages/server-renderer/test/fixtures/cache-opt-out.js
method render (line 7) | render(h) {
FILE: packages/server-renderer/test/fixtures/cache.js
method render (line 7) | render(h) {
FILE: packages/server-renderer/test/fixtures/nested-cache.js
function createRegisterFn (line 3) | function createRegisterFn(id) {
function addHooks (line 10) | function addHooks(comp) {
method render (line 22) | render(h) {
method render (line 31) | render(h) {
method render (line 40) | render(h) {
FILE: packages/server-renderer/test/fixtures/split.js
method render (line 11) | render(h) {
FILE: packages/server-renderer/test/ssr-basic-renderer.spec.ts
method render (line 29) | render() {
method testAsync (line 33) | testAsync(resolve) {
method created (line 72) | created() {
FILE: packages/server-renderer/test/ssr-bundle-render.spec.ts
function createAssertions (line 10) | function createAssertions(runInNewContext) {
FILE: packages/server-renderer/test/ssr-reactivity.spec.ts
method setup (line 53) | setup() {
method render (line 58) | render(this: any, h) {
method render (line 107) | render(this: any, h) {
method setup (line 110) | setup() {
method render (line 115) | render(this: any, h: any) {
method setup (line 119) | setup(_props) {
method setup (line 170) | setup() {
FILE: packages/server-renderer/test/ssr-stream.spec.ts
method bComp (line 29) | bComp(resolve) {
method render (line 53) | render(h) {
method render (line 82) | render() {
FILE: packages/server-renderer/test/ssr-string.spec.ts
method data (line 565) | data() {
method render (line 568) | render() {
method beforeCreate (line 592) | beforeCreate() {
method created (line 595) | created() {
method beforeCreate (line 602) | beforeCreate() {
method created (line 605) | created() {
method render (line 608) | render() {
method b (line 637) | b() {
method created (line 641) | created() {
method testAsync (line 662) | testAsync(resolve) {
method render (line 747) | render() {
method testAsync (line 775) | testAsync(resolve) {
method testAsync (line 807) | testAsync(resolve) {
method outerAsync (line 845) | outerAsync(resolve) {
method innerAsync (line 857) | innerAsync(resolve) {
method render (line 889) | render() {
method render (line 956) | render() {
method testAsync (line 960) | testAsync(resolve) {
method render (line 1106) | render() {
method bind (line 1233) | bind() {
method render (line 1256) | render() {
method render (line 1284) | render() {
method render (line 1319) | render() {
method foo (line 1543) | foo() {
method created (line 1547) | created() {
method render (line 1596) | render() {
method render (line 1666) | render(h) {
method render (line 1812) | render(h, ctx) {
method serverPrefetch (line 1835) | serverPrefetch() {
method serverPrefetch (line 1863) | serverPrefetch() {
method data (line 1876) | data() {
method serverPrefetch (line 1881) | serverPrefetch() {
method serverPrefetch (line 1913) | serverPrefetch() {
method nestedPrefetch (line 1922) | nestedPrefetch(resolve) {
method serverPrefetch (line 1958) | serverPrefetch() {
method serverPrefetch (line 1979) | serverPrefetch() {
method serverPrefetch (line 2008) | serverPrefetch() {
method render (line 2111) | render(h) {
function renderVmWithOptions (line 2161) | function renderVmWithOptions(options, cb) {
FILE: packages/server-renderer/test/ssr-template.spec.ts
function generateClientManifest (line 15) | async function generateClientManifest(file: string) {
function createRendererWithManifest (line 32) | async function createRendererWithManifest(
function createClientManifestAssertions (line 434) | function createClientManifestAssertions(runInNewContext) {
FILE: packages/server-renderer/test/utils.ts
function _it (line 4) | function _it(
FILE: packages/server-renderer/types/index.d.ts
type RenderCallback (line 11) | type RenderCallback = (err: Error | null, html: string) => void
type Renderer (line 13) | interface Renderer {
type BundleRenderer (line 22) | interface BundleRenderer {
type RendererOptions (line 31) | interface RendererOptions {
type BundleRendererOptions (line 42) | interface BundleRendererOptions extends RendererOptions {
type RenderCache (line 49) | interface RenderCache {
FILE: packages/server-renderer/types/plugin.d.ts
type WebpackPluginOptions (line 3) | interface WebpackPluginOptions {
type WebpackPlugin (line 7) | interface WebpackPlugin {
FILE: packages/server-renderer/types/test.ts
function createApp (line 8) | function createApp(context: any) {
method example (line 99) | example(vnode: VNode, directiveMeta: VNodeDirective) {
FILE: packages/template-compiler/types/index.d.ts
type CompilerOptions (line 6) | interface CompilerOptions {
type CompilerOptionsWithSourceRange (line 14) | interface CompilerOptionsWithSourceRange extends CompilerOptions {
type ErrorWithRange (line 18) | interface ErrorWithRange {
type CompiledResult (line 24) | interface CompiledResult<ErrorType> {
type CompiledResultFunctions (line 32) | interface CompiledResultFunctions {
type ModuleOptions (line 37) | interface ModuleOptions {
type DirectiveFunction (line 46) | type DirectiveFunction = (node: ASTElement, directiveMeta: ASTDirective)...
type SSROptimizability (line 59) | type SSROptimizability = 0 | 1 | 2 | 3 | 4
type ASTModifiers (line 61) | interface ASTModifiers {
type ASTIfCondition (line 65) | interface ASTIfCondition {
type ASTElementHandler (line 70) | interface ASTElementHandler {
type ASTElementHandlers (line 76) | interface ASTElementHandlers {
type ASTDirective (line 80) | interface ASTDirective {
type ASTNode (line 88) | type ASTNode = ASTElement | ASTText | ASTExpression
type ASTElement (line 90) | interface ASTElement {
type ASTExpression (line 165) | interface ASTExpression {
type ASTText (line 175) | interface ASTText {
type SFCParserOptions (line 187) | interface SFCParserOptions {
type SFCBlock (line 192) | interface SFCBlock {
type SFCDescriptor (line 204) | interface SFCDescriptor {
FILE: packages/template-compiler/types/test.ts
method data (line 68) | data() {
FILE: scripts/build.js
function build (line 23) | function build (builds) {
function buildEntry (line 38) | function buildEntry (config) {
function write (line 63) | function write (dest, code, zip) {
function getSize (line 87) | function getSize (code) {
function logError (line 91) | function logError (e) {
function blue (line 95) | function blue (str) {
FILE: scripts/config.js
function genConfig (line 228) | function genConfig(name) {
FILE: scripts/gen-release-note.js
method transform (line 9) | transform (pkg) {
FILE: scripts/release.js
function main (line 36) | async function main() {
function updatePackage (line 134) | function updatePackage(pkgRoot, version) {
function publishPackage (line 146) | async function publishPackage(pkgName, version, runIfNotDry) {
FILE: src/compiler/codeframe.ts
function generateCodeFrame (line 3) | function generateCodeFrame(
function repeat (line 39) | function repeat(str: string, n: number) {
FILE: src/compiler/codegen/events.ts
function genHandlers (line 56) | function genHandlers(
function genHandler (line 80) | function genHandler(
function genKeyFilter (line 145) | function genKeyFilter(keys: Array<string>): string {
function genFilterCode (line 155) | function genFilterCode(key: string): string {
FILE: src/compiler/codegen/index.ts
type TransformFunction (line 18) | type TransformFunction = (el: ASTElement, code: string) => string
type DataGenFunction (line 19) | type DataGenFunction = (el: ASTElement) => string
type DirectiveFunction (line 20) | type DirectiveFunction = (
class CodegenState (line 26) | class CodegenState {
method constructor (line 37) | constructor(options: CompilerOptions) {
type CodegenResult (line 52) | type CodegenResult = {
function generate (line 57) | function generate(
function genElement (line 74) | function genElement(el: ASTElement, state: CodegenState): string {
function checkBindingType (line 126) | function checkBindingType(bindings: BindingMetadata, key: string) {
function genStatic (line 157) | function genStatic(el: ASTElement, state: CodegenState): string {
function genOnce (line 174) | function genOnce(el: ASTElement, state: CodegenState): string {
function genIf (line 202) | function genIf(
function genIfConditions (line 212) | function genIfConditions(
function genFor (line 241) | function genFor(
function genData (line 277) | function genData(el: ASTElement, state: CodegenState): string {
function genDirectives (line 361) | function genDirectives(el: ASTElement, state: CodegenState): string | vo...
function genInlineTemplate (line 392) | function genInlineTemplate(
function genScopedSlots (line 413) | function genScopedSlots(
function hash (line 470) | function hash(str) {
function containsSlotChild (line 479) | function containsSlotChild(el: ASTNode): boolean {
function genScopedSlot (line 489) | function genScopedSlot(el: ASTElement, state: CodegenState): string {
function genChildren (line 513) | function genChildren(
function getNormalizationType (line 551) | function getNormalizationType(
function needsNormalization (line 579) | function needsNormalization(el: ASTElement): boolean {
function genNode (line 583) | function genNode(node: ASTNode, state: CodegenState): string {
function genText (line 593) | function genText(text: ASTText | ASTExpression): string {
function genComment (line 601) | function genComment(comment: ASTText): string {
function genSlot (line 605) | function genSlot(el: ASTElement, state: CodegenState): string {
function genComponent (line 634) | function genComponent(
function genProps (line 645) | function genProps(props: Array<ASTAttr>): string {
function transformSpecialNewlines (line 666) | function transformSpecialNewlines(text: string): string {
FILE: src/compiler/create-compiler.ts
function createCompilerCreator (line 6) | function createCompilerCreator(baseCompile: Function): Function {
FILE: src/compiler/directives/bind.ts
function bind (line 3) | function bind(el: ASTElement, dir: ASTDirective) {
FILE: src/compiler/directives/model.ts
function genComponentModel (line 6) | function genComponentModel(
function genAssignmentCode (line 36) | function genAssignmentCode(value: string, assignment: string): string {
type ModelParseResult (line 62) | type ModelParseResult = {
function parseModel (line 67) | function parseModel(val: string): ModelParseResult {
function next (line 107) | function next(): number {
function eof (line 111) | function eof(): boolean {
function isStringStart (line 115) | function isStringStart(chr: number): boolean {
function parseBracket (line 119) | function parseBracket(chr: number): void {
function parseString (line 137) | function parseString(chr: number): void {
FILE: src/compiler/directives/on.ts
function on (line 4) | function on(el: ASTElement, dir: ASTDirective) {
FILE: src/compiler/error-detector.ts
type Range (line 4) | type Range = { start?: number; end?: number }
function detectErrors (line 32) | function detectErrors(ast: ASTNode | undefined, warn: Function) {
function checkNode (line 38) | function checkNode(node: ASTNode, warn: Function) {
function checkEvent (line 72) | function checkEvent(exp: string, text: string, warn: Function, range?: R...
function checkFor (line 85) | function checkFor(
function checkIdentifier (line 97) | function checkIdentifier(
function checkExpression (line 113) | function checkExpression(
function checkFunctionParameterExpression (line 142) | function checkFunctionParameterExpression(
FILE: src/compiler/helpers.ts
type Range (line 5) | type Range = { start?: number; end?: number }
function baseWarn (line 8) | function baseWarn(msg: string, range?: Range) {
function pluckModuleFunction (line 13) | function pluckModuleFunction<T, K extends keyof T>(
function addProp (line 20) | function addProp(
function addAttr (line 33) | function addAttr(
function addRawAttr (line 48) | function addRawAttr(
function addDirective (line 58) | function addDirective(
function prependModifierMarker (line 84) | function prependModifierMarker(
function addHandler (line 92) | function addHandler(
function getRawBindingAttr (line 172) | function getRawBindingAttr(el: ASTElement, name: string) {
function getBindingAttr (line 180) | function getBindingAttr(
function getAndRemoveAttr (line 201) | function getAndRemoveAttr(
function getAndRemoveAttrByRegex (line 222) | function getAndRemoveAttrByRegex(el: ASTElement, name: RegExp) {
function rangeSetItem (line 233) | function rangeSetItem(item: any, range?: { start?: number; end?: number ...
FILE: src/compiler/optimizer.ts
function optimize (line 20) | function optimize(
function genStaticKeys (line 33) | function genStaticKeys(keys: string): Function {
function markStatic (line 40) | function markStatic(node: ASTNode) {
function markStaticRoots (line 72) | function markStaticRoots(node: ASTNode, isInFor: boolean) {
function isStatic (line 103) | function isStatic(node: ASTNode): boolean {
function isDirectChildOfTemplateFor (line 124) | function isDirectChildOfTemplateFor(node: ASTElement): boolean {
FILE: src/compiler/parser/entity-decoder.ts
method decode (line 4) | decode(html: string): string {
FILE: src/compiler/parser/filter-parser.ts
function parseFilters (line 3) | function parseFilters(exp: string): string {
function wrapFilter (line 106) | function wrapFilter(exp: string, filter: string): string {
FILE: src/compiler/parser/html-parser.ts
function decodeAttr (line 53) | function decodeAttr(value, shouldDecodeNewlines) {
type HTMLParserOptions (line 58) | interface HTMLParserOptions extends CompilerOptions {
function parseHTML (line 71) | function parseHTML(html, options: HTMLParserOptions) {
FILE: src/compiler/parser/index.ts
function createASTElement (line 67) | function createASTElement(
function parse (line 86) | function parse(template: string, options: CompilerOptions): ASTElement {
function processPre (line 424) | function processPre(el) {
function processRawAttrs (line 430) | function processRawAttrs(el) {
function processElement (line 451) | function processElement(element: ASTElement, options: CompilerOptions) {
function processKey (line 470) | function processKey(el) {
function processRef (line 502) | function processRef(el) {
function processFor (line 510) | function processFor(el: ASTElement) {
type ForParseResult (line 522) | type ForParseResult = {
function parseFor (line 529) | function parseFor(exp: string): ForParseResult | undefined {
function processIf (line 548) | function processIf(el) {
function processIfConditions (line 567) | function processIfConditions(el, parent) {
function findPrevElement (line 583) | function findPrevElement(children: Array<any>): ASTElement | void {
function addIfCondition (line 601) | function addIfCondition(el: ASTElement, condition: ASTIfCondition) {
function processOnce (line 608) | function processOnce(el) {
function processSlotContent (line 617) | function processSlotContent(el) {
function getSlotName (line 732) | function getSlotName(binding) {
function processSlotOutlet (line 749) | function processSlotOutlet(el) {
function processComponent (line 763) | function processComponent(el) {
function processAttrs (line 773) | function processAttrs(el) {
function checkInFor (line 922) | function checkInFor(el: ASTElement): boolean {
function parseModifiers (line 933) | function parseModifiers(name: string): Object | void {
function makeAttrsMap (line 944) | function makeAttrsMap(attrs: Array<Record<string, any>>): Record<string,...
function isTextTag (line 956) | function isTextTag(el): boolean {
function isForbiddenTag (line 960) | function isForbiddenTag(el): boolean {
function guardIESVGBug (line 972) | function guardIESVGBug(attrs) {
function checkForAliasModel (line 984) | function checkForAliasModel(el, value) {
FILE: src/compiler/parser/text-parser.ts
type TextParseResult (line 13) | type TextParseResult = {
function parseText (line 18) | function parseText(
FILE: src/compiler/to-function.ts
type CompiledFunctionResult (line 7) | type CompiledFunctionResult = {
function createFunction (line 12) | function createFunction(code, errors) {
function createCompileToFunctionFn (line 21) | function createCompileToFunctionFn(compile: Function): Function {
FILE: src/core/components/keep-alive.ts
type CacheEntry (line 8) | type CacheEntry = {
type CacheEntryMap (line 14) | type CacheEntryMap = Record<string, CacheEntry | null>
function _getComponentName (line 16) | function _getComponentName(opts?: VNodeComponentOptions): string | null {
function matches (line 20) | function matches(
function pruneCache (line 35) | function pruneCache(
function pruneCacheEntry (line 57) | function pruneCacheEntry(
method cacheVNode (line 86) | cacheVNode() {
method created (line 105) | created() {
method destroyed (line 110) | destroyed() {
method mounted (line 116) | mounted() {
method updated (line 126) | updated() {
method render (line 130) | render() {
FILE: src/core/config.ts
type Config (line 9) | interface Config {
FILE: src/core/global-api/assets.ts
function initAssetRegisters (line 5) | function initAssetRegisters(Vue: GlobalAPI) {
FILE: src/core/global-api/extend.ts
function initExtend (line 8) | function initExtend(Vue: GlobalAPI) {
function initProps (line 82) | function initProps(Comp: typeof Component) {
function initComputed (line 89) | function initComputed(Comp: typeof Component) {
FILE: src/core/global-api/index.ts
function initGlobalAPI (line 20) | function initGlobalAPI(Vue: GlobalAPI) {
FILE: src/core/global-api/mixin.ts
function initMixin (line 4) | function initMixin(Vue: GlobalAPI) {
FILE: src/core/global-api/use.ts
function initUse (line 4) | function initUse(Vue: GlobalAPI) {
FILE: src/core/index.ts
method get (line 14) | get() {
FILE: src/core/instance/events.ts
function initEvents (line 12) | function initEvents(vm: Component) {
function add (line 24) | function add(event, fn) {
function remove (line 28) | function remove(event, fn) {
function createOnceHandler (line 32) | function createOnceHandler(event, fn) {
function updateComponentListeners (line 42) | function updateComponentListeners(
function eventsMixin (line 59) | function eventsMixin(Vue: typeof Component) {
FILE: src/core/instance/index.ts
function Vue (line 9) | function Vue(options) {
FILE: src/core/instance/init.ts
function initMixin (line 16) | function initMixin(Vue: typeof Component) {
function initInternalComponent (line 84) | function initInternalComponent(
function resolveConstructorOptions (line 106) | function resolveConstructorOptions(Ctor: typeof Component) {
function resolveModifiedOptions (line 130) | function resolveModifiedOptions(
FILE: src/core/instance/inject.ts
function initProvide (line 6) | function initProvide(vm: Component) {
function initInjections (line 30) | function initInjections(vm: Component) {
function resolveInject (line 53) | function resolveInject(
FILE: src/core/instance/lifecycle.ts
function setActiveInstance (line 27) | function setActiveInstance(vm: Component) {
function initLifecycle (line 35) | function initLifecycle(vm: Component) {
function lifecycleMixin (line 62) | function lifecycleMixin(Vue: typeof Component) {
function mountComponent (line 147) | function mountComponent(
function updateChildComponent (line 246) | function updateChildComponent(
function isInInactiveTree (line 353) | function isInInactiveTree(vm) {
function activateChildComponent (line 360) | function activateChildComponent(vm: Component, direct?: boolean) {
function deactivateChildComponent (line 378) | function deactivateChildComponent(vm: Component, direct?: boolean) {
function callHook (line 394) | function callHook(
FILE: src/core/instance/proxy.ts
method set (line 44) | set(target, key: string, value) {
method has (line 59) | has(target, key) {
method get (line 75) | get(target, key) {
FILE: src/core/instance/render-helpers/bind-dynamic-keys.ts
function bindDynamicKeys (line 12) | function bindDynamicKeys(
function prependModifier (line 34) | function prependModifier(value: any, symbol: string): any {
FILE: src/core/instance/render-helpers/bind-object-listeners.ts
function bindObjectListeners (line 4) | function bindObjectListeners(data: any, value: any): VNodeData {
FILE: src/core/instance/render-helpers/bind-object-props.ts
function bindObjectProps (line 17) | function bindObjectProps(
FILE: src/core/instance/render-helpers/check-keycodes.ts
function isKeyNotMatch (line 4) | function isKeyNotMatch<T>(expect: T | Array<T>, actual: T): boolean {
function checkKeyCodes (line 17) | function checkKeyCodes(
FILE: src/core/instance/render-helpers/index.ts
function installRenderHelpers (line 13) | function installRenderHelpers(target: any) {
FILE: src/core/instance/render-helpers/render-list.ts
function renderList (line 7) | function renderList(
FILE: src/core/instance/render-helpers/render-slot.ts
function renderSlot (line 7) | function renderSlot(
FILE: src/core/instance/render-helpers/render-static.ts
function renderStatic (line 7) | function renderStatic(
function markOnce (line 32) | function markOnce(
function markStatic (line 41) | function markStatic(tree: VNode | Array<VNode>, key: string, isOnce: boo...
function markStaticNode (line 53) | function markStaticNode(node, key, isOnce) {
FILE: src/core/instance/render-helpers/resolve-filter.ts
function resolveFilter (line 6) | function resolveFilter(id: string): Function {
FILE: src/core/instance/render-helpers/resolve-scoped-slots.ts
function resolveScopedSlots (line 4) | function resolveScopedSlots(
FILE: src/core/instance/render-helpers/resolve-slots.ts
function resolveSlots (line 7) | function resolveSlots(
function isWhitespace (line 49) | function isWhitespace(node: VNode): boolean {
FILE: src/core/instance/render.ts
function initRender (line 21) | function initRender(vm: Component) {
function setCurrentRenderingInstance (line 91) | function setCurrentRenderingInstance(vm: Component) {
function renderMixin (line 95) | function renderMixin(Vue: typeof Component) {
FILE: src/core/instance/state.ts
function proxy (line 42) | function proxy(target: Object, sourceKey: string, key: string) {
function initState (line 52) | function initState(vm: Component) {
function initProps (line 72) | function initProps(vm: Component, propsOptions: Object) {
function initData (line 128) | function initData(vm: Component) {
function getData (line 168) | function getData(data: Function, vm: Component): any {
function initComputed (line 183) | function initComputed(vm: Component, computed: Object) {
function defineComputed (line 226) | function defineComputed(
function createComputedGetter (line 256) | function createComputedGetter(key) {
function createGetterInvoker (line 279) | function createGetterInvoker(fn) {
function initMethods (line 285) | function initMethods(vm: Component, methods: Object) {
function initWatch (line 312) | function initWatch(vm: Component, watch: Object) {
function createWatcher (line 325) | function createWatcher(
function stateMixin (line 341) | function stateMixin(Vue: typeof Component) {
FILE: src/core/observer/dep.ts
type DepTarget (line 20) | interface DepTarget extends DebuggerOptions {
class Dep (line 31) | class Dep {
method constructor (line 38) | constructor() {
method addSub (line 43) | addSub(sub: DepTarget) {
method removeSub (line 47) | removeSub(sub: DepTarget) {
method depend (line 59) | depend(info?: DebuggerEventExtraInfo) {
method notify (line 71) | notify(info?: DebuggerEventExtraInfo) {
function pushTarget (line 100) | function pushTarget(target?: DepTarget | null) {
function popTarget (line 105) | function popTarget() {
FILE: src/core/observer/index.ts
constant NO_INITIAL_VALUE (line 22) | const NO_INITIAL_VALUE = {}
function toggleObserving (line 30) | function toggleObserving(value: boolean) {
class Observer (line 48) | class Observer {
method constructor (line 52) | constructor(public value: any, public shallow = false, public mock = f...
method observeArray (line 90) | observeArray(value: any[]) {
function observe (line 104) | function observe(
function defineReactive (line 128) | function defineReactive(
function set (line 223) | function set(
function del (line 283) | function del(target: any[] | object, key: any) {
function dependArray (line 329) | function dependArray(value: Array<any>) {
FILE: src/core/observer/scheduler.ts
constant MAX_UPDATE_COUNT (line 9) | const MAX_UPDATE_COUNT = 100
function resetSchedulerState (line 22) | function resetSchedulerState() {
function flushSchedulerQueue (line 74) | function flushSchedulerQueue() {
function callUpdatedHooks (line 133) | function callUpdatedHooks(queue: Watcher[]) {
function queueActivatedComponent (line 148) | function queueActivatedComponent(vm: Component) {
function callActivatedHooks (line 155) | function callActivatedHooks(queue) {
function queueWatcher (line 167) | function queueWatcher(watcher: Watcher) {
FILE: src/core/observer/traverse.ts
function traverse (line 13) | function traverse(val: any) {
function _traverse (line 19) | function _traverse(val: any, seen: SimpleSet) {
FILE: src/core/observer/watcher.ts
type WatcherOptions (line 27) | interface WatcherOptions extends DebuggerOptions {
class Watcher (line 41) | class Watcher implements DepTarget {
method constructor (line 67) | constructor(
method get (line 133) | get() {
method addDep (line 160) | addDep(dep: Dep) {
method cleanupDeps (line 174) | cleanupDeps() {
method update (line 196) | update() {
method run (line 211) | run() {
method evaluate (line 245) | evaluate() {
method depend (line 253) | depend() {
method teardown (line 263) | teardown() {
FILE: src/core/util/env.ts
method get (line 25) | get() {
function isNative (line 56) | function isNative(Ctor: any): boolean {
method has (line 75) | has(key: string | number) {
method add (line 78) | add(key: string | number) {
method clear (line 81) | clear() {
type SimpleSet (line 87) | interface SimpleSet {
FILE: src/core/util/error.ts
function handleError (line 7) | function handleError(err: Error, vm: any, info: string) {
function invokeWithErrorHandling (line 34) | function invokeWithErrorHandling(
function globalHandleError (line 56) | function globalHandleError(err, vm, info) {
function logError (line 71) | function logError(err, vm, info) {
FILE: src/core/util/lang.ts
function isReserved (line 12) | function isReserved(str: string): boolean {
function def (line 20) | function def(obj: Object, key: string, val: any, enumerable?: boolean) {
function parsePath (line 33) | function parsePath(path: string): any {
FILE: src/core/util/next-tick.ts
function flushCallbacks (line 12) | function flushCallbacks() {
function nextTick (line 94) | function nextTick(cb?: (...args: any[]) => any, ctx?: object) {
FILE: src/core/util/options.ts
function mergeData (line 52) | function mergeData(
function mergeDataOrFn (line 86) | function mergeDataOrFn(
function mergeLifecycleHook (line 154) | function mergeLifecycleHook(
function dedupeHooks (line 168) | function dedupeHooks(hooks: any) {
function mergeAssets (line 189) | function mergeAssets(
function checkComponents (line 293) | function checkComponents(options: Record<string, any>) {
function validateComponentName (line 299) | function validateComponentName(name: string) {
function normalizeProps (line 323) | function normalizeProps(options: Record<string, any>, vm?: Component | n...
function normalizeInject (line 358) | function normalizeInject(options: Record<string, any>, vm?: Component | ...
function normalizeDirectives (line 385) | function normalizeDirectives(options: Record<string, any>) {
function assertObjectType (line 397) | function assertObjectType(name: string, value: any, vm: Component | null) {
function mergeOptions (line 411) | function mergeOptions(
function resolveAsset (line 466) | function resolveAsset(
FILE: src/core/util/props.ts
type PropOptions (line 15) | type PropOptions = {
function validateProp (line 22) | function validateProp(
function getPropDefaultValue (line 64) | function getPropDefaultValue(
function assertProp (line 105) | function assertProp(
function assertType (line 151) | function assertType(
function getType (line 193) | function getType(fn) {
function isSameType (line 198) | function isSameType(a, b) {
function getTypeIndex (line 202) | function getTypeIndex(type, expectedTypes): number {
function getInvalidTypeMessage (line 214) | function getInvalidTypeMessage(name, value, expectedTypes) {
function styleValue (line 237) | function styleValue(value, type) {
constant EXPLICABLE_TYPES (line 247) | const EXPLICABLE_TYPES = ['string', 'number', 'boolean']
function isExplicable (line 248) | function isExplicable(value) {
function isBoolean (line 252) | function isBoolean(...args) {
FILE: src/core/vdom/create-component.ts
function getComponentName (line 31) | function getComponentName(options: ComponentOptions) {
method init (line 37) | init(vnode: VNodeWithData, hydrating: boolean): boolean | void {
method prepatch (line 55) | prepatch(oldVnode: MountedComponentVNode, vnode: MountedComponentVNode) {
method insert (line 67) | insert(vnode: MountedComponentVNode) {
method destroy (line 87) | destroy(vnode: MountedComponentVNode) {
function createComponent (line 101) | function createComponent(
function createComponentInstanceForVnode (line 212) | function createComponentInstanceForVnode(
function installComponentHooks (line 232) | function installComponentHooks(data: VNodeData) {
function mergeHook (line 245) | function mergeHook(f1: any, f2: any): Function {
function transformModel (line 257) | function transformModel(options, data: any) {
FILE: src/core/vdom/create-element.ts
constant SIMPLE_NORMALIZE (line 22) | const SIMPLE_NORMALIZE = 1
constant ALWAYS_NORMALIZE (line 23) | const ALWAYS_NORMALIZE = 2
function createElement (line 27) | function createElement(
function _createElement (line 46) | function _createElement(
function applyNS (line 142) | function applyNS(vnode, ns, force?: boolean) {
function registerDeepBindings (line 165) | function registerDeepBindings(data) {
FILE: src/core/vdom/create-functional-component.ts
function FunctionalRenderContext (line 21) | function FunctionalRenderContext(
function createFunctionalComponent (line 100) | function createFunctionalComponent(
function cloneAndMarkFunctionalResult (line 153) | function cloneAndMarkFunctionalResult(
function mergeProps (line 176) | function mergeProps(to, from) {
FILE: src/core/vdom/helpers/extract-props.ts
function extractPropsFromVNodeData (line 12) | function extractPropsFromVNodeData(
function checkProp (line 52) | function checkProp(
FILE: src/core/vdom/helpers/get-first-component-child.ts
function getFirstComponentChild (line 5) | function getFirstComponentChild(
FILE: src/core/vdom/helpers/is-async-placeholder.ts
function isAsyncPlaceholder (line 3) | function isAsyncPlaceholder(node: VNode): boolean {
FILE: src/core/vdom/helpers/merge-hook.ts
function mergeVNodeHook (line 5) | function mergeVNodeHook(
FILE: src/core/vdom/helpers/normalize-children.ts
function simpleNormalizeChildren (line 23) | function simpleNormalizeChildren(children: any) {
function normalizeChildren (line 36) | function normalizeChildren(children: any): Array<VNode> | undefined {
function isTextNode (line 44) | function isTextNode(node): boolean {
function normalizeArrayChildren (line 48) | function normalizeArrayChildren(
FILE: src/core/vdom/helpers/normalize-scoped-slots.ts
function normalizeScopedSlots (line 9) | function normalizeScopedSlots(
function normalizeScopedSlot (line 65) | function normalizeScopedSlot(vm, normalSlots, key, fn) {
function proxyNormalSlot (line 95) | function proxyNormalSlot(slots, key) {
FILE: src/core/vdom/helpers/resolve-async-component.ts
function ensureCtor (line 18) | function ensureCtor(comp: any, base) {
function createAsyncPlaceholder (line 25) | function createAsyncPlaceholder(
function resolveAsyncComponent (line 38) | function resolveAsyncComponent(
FILE: src/core/vdom/helpers/update-listeners.ts
function createFnInvoker (line 31) | function createFnInvoker(
function updateListeners (line 63) | function updateListeners(
FILE: src/core/vdom/modules/directives.ts
function updateDirectives (line 16) | function updateDirectives(oldVnode: VNodeWithData, vnode: VNodeWithData) {
function _update (line 22) | function _update(oldVnode, vnode) {
function normalizeDirectives (line 88) | function normalizeDirectives(
function getRawDirName (line 122) | function getRawDirName(dir: VNodeDirective): string {
function callHook (line 128) | function callHook(dir, hook, vnode, oldVnode, isDestroy?: any) {
FILE: src/core/vdom/modules/template-ref.ts
method create (line 15) | create(_: any, vnode: VNodeWithData) {
method update (line 18) | update(oldVnode: VNodeWithData, vnode: VNodeWithData) {
method destroy (line 24) | destroy(vnode: VNodeWithData) {
function registerRef (line 29) | function registerRef(vnode: VNodeWithData, isRemoval?: boolean) {
function setSetupRef (line 82) | function setSetupRef(
FILE: src/core/vdom/patch.ts
function sameVnode (line 36) | function sameVnode(a, b) {
function sameInputType (line 48) | function sameInputType(a, b) {
function createKeyToOldIdx (line 56) | function createKeyToOldIdx(children, beginIdx, endIdx) {
function createPatchFunction (line 66) | function createPatchFunction(backend) {
FILE: src/core/vdom/vnode.ts
class VNode (line 8) | class VNode {
method constructor (line 38) | constructor(
method child (line 75) | get child(): Component | void {
function createTextVNode (line 87) | function createTextVNode(val: string | number) {
function cloneVNode (line 95) | function cloneVNode(vnode: VNode): VNode {
FILE: src/global.d.ts
type Window (line 5) | interface Window {
type DevtoolsHook (line 10) | interface DevtoolsHook {
FILE: src/platforms/web/compiler/directives/html.ts
function html (line 4) | function html(el: ASTElement, dir: ASTDirective) {
FILE: src/platforms/web/compiler/directives/model.ts
constant RANGE_TOKEN (line 10) | const RANGE_TOKEN = '__r'
constant CHECKBOX_RADIO_TOKEN (line 11) | const CHECKBOX_RADIO_TOKEN = '__c'
function model (line 13) | function model(
function genCheckboxModel (line 66) | function genCheckboxModel(
function genRadioModel (line 107) | function genRadioModel(
function genSelect (line 119) | function genSelect(
function genDefaultModel (line 137) | function genDefaultModel(
FILE: src/platforms/web/compiler/directives/text.ts
function text (line 4) | function text(el: ASTElement, dir: ASTDirective) {
FILE: src/platforms/web/compiler/modules/class.ts
function transformNode (line 5) | function transformNode(el: ASTElement, options: CompilerOptions) {
function genData (line 29) | function genData(el: ASTElement): string {
FILE: src/platforms/web/compiler/modules/model.ts
function preTransformNode (line 21) | function preTransformNode(el: ASTElement, options: CompilerOptions) {
function cloneASTElement (line 83) | function cloneASTElement(el) {
FILE: src/platforms/web/compiler/modules/style.ts
function transformNode (line 6) | function transformNode(el: ASTElement, options: CompilerOptions) {
function genData (line 32) | function genData(el: ASTElement): string {
FILE: src/platforms/web/runtime-with-compiler.ts
function getOuterHTML (line 98) | function getOuterHTML(el: Element): string {
FILE: src/platforms/web/runtime/class-util.ts
function addClass (line 7) | function addClass(el: HTMLElement, cls?: string) {
function removeClass (line 32) | function removeClass(el: HTMLElement, cls?: string) {
FILE: src/platforms/web/runtime/components/transition-group.ts
method beforeMount (line 41) | beforeMount() {
method render (line 58) | render(h: Function) {
method updated (line 104) | updated() {
method hasMove (line 146) | hasMove(el: any, moveClass: string): boolean {
function callPendingCbs (line 176) | function callPendingCbs(
function recordPosition (line 189) | function recordPosition(c: VNodeWithData) {
function applyTranslation (line 193) | function applyTranslation(c: VNodeWithData) {
FILE: src/platforms/web/runtime/components/transition.ts
function getRealChild (line 34) | function getRealChild(vnode?: VNode): VNode | undefined {
function extractTransitionData (line 43) | function extractTransitionData(comp: Component): Record<string, any> {
function placeholder (line 59) | function placeholder(h: Function, rawChild: VNode): VNode | undefined {
function hasParentTransition (line 68) | function hasParentTransition(vnode: VNode): boolean | undefined {
function isSameChild (line 76) | function isSameChild(child: VNode, oldChild: VNode): boolean {
method render (line 89) | render(h: Function) {
FILE: src/platforms/web/runtime/directives/model.ts
method inserted (line 24) | inserted(el, binding, vnode, oldVnode) {
method componentUpdated (line 53) | componentUpdated(el, binding, vnode) {
function setSelected (line 77) | function setSelected(el, binding, vm) {
function actuallySetSelected (line 87) | function actuallySetSelected(el, binding, vm) {
function hasNoMatchingOption (line 123) | function hasNoMatchingOption(value, options) {
function getValue (line 127) | function getValue(option) {
function onCompositionStart (line 131) | function onCompositionStart(e) {
function onCompositionEnd (line 135) | function onCompositionEnd(e) {
function trigger (line 142) | function trigger(el, type) {
FILE: src/platforms/web/runtime/directives/show.ts
function locateNode (line 6) | function locateNode(vnode: VNode | VNodeWithData): VNodeWithData {
method bind (line 14) | bind(el: any, { value }: VNodeDirective, vnode: VNodeWithData) {
method update (line 29) | update(el: any, { value, oldValue }: VNodeDirective, vnode: VNodeWithDat...
method unbind (line 50) | unbind(
FILE: src/platforms/web/runtime/modules/attrs.ts
function updateAttrs (line 16) | function updateAttrs(oldVnode: VNodeWithData, vnode: VNodeWithData) {
function setAttr (line 57) | function setAttr(el: Element, key: string, value: any, isInPre?: any) {
function baseSetAttr (line 84) | function baseSetAttr(el, key, value) {
FILE: src/platforms/web/runtime/modules/class.ts
function updateClass (line 6) | function updateClass(oldVnode: any, vnode: any) {
FILE: src/platforms/web/runtime/modules/dom-props.ts
function updateDOMProps (line 7) | function updateDOMProps(oldVnode: VNodeWithData, vnode: VNodeWithData) {
type acceptValueElm (line 82) | type acceptValueElm = HTMLInputElement | HTMLSelectElement | HTMLOptionE...
function shouldUpdateValue (line 84) | function shouldUpdateValue(elm: acceptValueElm, checkVal: string): boole...
function isNotInFocusAndDirty (line 94) | function isNotInFocusAndDirty(elm: acceptValueElm, checkVal: string): bo...
function isDirtyWithModifiers (line 106) | function isDirtyWithModifiers(elm: any, newVal: string): boolean {
FILE: src/platforms/web/runtime/modules/events.ts
function normalizeEvents (line 16) | function normalizeEvents(on) {
function createOnceHandler (line 35) | function createOnceHandler(event, handler, capture) {
function add (line 50) | function add(
function remove (line 94) | function remove(
function updateDOMListeners (line 108) | function updateDOMListeners(oldVnode: VNodeWithData, vnode: VNodeWithDat...
FILE: src/platforms/web/runtime/modules/style.ts
function updateStyle (line 57) | function updateStyle(oldVnode: VNodeWithData, vnode: VNodeWithData) {
FILE: src/platforms/web/runtime/modules/transition.ts
function enter (line 25) | function enter(vnode: VNodeWithData, toggleDisplay?: () => void) {
function leave (line 169) | function leave(vnode: VNodeWithData, rm: Function) {
function checkDuration (line 278) | function checkDuration(val, name, vnode) {
function isValidDuration (line 294) | function isValidDuration(val) {
function getHookArgumentsLength (line 304) | function getHookArgumentsLength(fn: Function): boolean {
function _enter (line 321) | function _enter(_: any, vnode: VNodeWithData) {
method remove (line 331) | remove(vnode: VNode, rm: Function) {
FILE: src/platforms/web/runtime/node-ops.ts
function createElement (line 4) | function createElement(tagName: string, vnode: VNode): Element {
function createElementNS (line 20) | function createElementNS(namespace: string, tagName: string): Element {
function createTextNode (line 24) | function createTextNode(text: string): Text {
function createComment (line 28) | function createComment(text: string): Comment {
function insertBefore (line 32) | function insertBefore(
function removeChild (line 40) | function removeChild(node: Node, child: Node) {
function appendChild (line 44) | function appendChild(node: Node, child: Node) {
function parentNode (line 48) | function parentNode(node: Node) {
function nextSibling (line 52) | function nextSibling(node: Node) {
function tagName (line 56) | function tagName(node: Element): string {
function setTextContent (line 60) | function setTextContent(node: Node, text: string) {
function setStyleScope (line 64) | function setStyleScope(node: Element, scopeId: string) {
FILE: src/platforms/web/runtime/transition-util.ts
function resolveTransition (line 5) | function resolveTransition(
constant TRANSITION (line 36) | const TRANSITION = 'transition'
constant ANIMATION (line 37) | const ANIMATION = 'animation'
function nextFrame (line 69) | function nextFrame(fn: Function) {
function addTransitionClass (line 76) | function addTransitionClass(el: any, cls: string) {
function removeTransitionClass (line 85) | function removeTransitionClass(el: any, cls: string) {
function whenTransitionEnds (line 92) | function whenTransitionEnds(
function getTransitionInfo (line 123) | function getTransitionInfo(
function getTimeout (line 195) | function getTimeout(delays: Array<string>, durations: Array<string>): nu...
function toMs (line 213) | function toMs(s: string): number {
FILE: src/platforms/web/util/class.ts
function genClassForVnode (line 5) | function genClassForVnode(vnode: VNodeWithData): string {
function mergeClassData (line 24) | function mergeClassData(
function renderClass (line 37) | function renderClass(
function concat (line 48) | function concat(a?: string | null, b?: string | null): string {
function stringifyClass (line 52) | function stringifyClass(value: any): string {
function stringifyArray (line 66) | function stringifyArray(value: Array<any>): string {
function stringifyObject (line 78) | function stringifyObject(value: Object): string {
FILE: src/platforms/web/util/compat.ts
function getShouldDecode (line 5) | function getShouldDecode(href: boolean): boolean {
FILE: src/platforms/web/util/element.ts
function getTagNamespace (line 38) | function getTagNamespace(tag: string): string | undefined {
function isUnknownElement (line 50) | function isUnknownElement(tag: string): boolean {
FILE: src/platforms/web/util/index.ts
function query (line 10) | function query(el: string | Element): Element {
FILE: src/platforms/web/util/style.ts
function normalizeStyleData (line 19) | function normalizeStyleData(data: VNodeData): Record<string, any> {
function normalizeStyleBinding (line 27) | function normalizeStyleBinding(bindingStyle: any): Record<string, any> {
function getStyle (line 41) | function getStyle(vnode: VNodeWithData, checkChild: boolean): Object {
FILE: src/shared/constants.ts
constant SSR_ATTR (line 1) | const SSR_ATTR = 'data-server-rendered'
constant ASSET_TYPES (line 3) | const ASSET_TYPES = ['component', 'directive', 'filter'] as const
constant LIFECYCLE_HOOKS (line 5) | const LIFECYCLE_HOOKS = [
FILE: src/shared/util.ts
function isUndef (line 7) | function isUndef(v: any): v is undefined | null {
function isDef (line 11) | function isDef<T>(v: T): v is NonNullable<T> {
function isTrue (line 15) | function isTrue(v: any): boolean {
function isFalse (line 19) | function isFalse(v: any): boolean {
function isPrimitive (line 26) | function isPrimitive(value: any): boolean {
function isFunction (line 36) | function isFunction(value: any): value is (...args: any[]) => any {
function isObject (line 45) | function isObject(obj: any): boolean {
function toRawType (line 54) | function toRawType(value: any): string {
function isPlainObject (line 62) | function isPlainObject(obj: any): boolean {
function isRegExp (line 66) | function isRegExp(v: any): v is RegExp {
function isValidArrayIndex (line 73) | function isValidArrayIndex(val: any): boolean {
function isPromise (line 78) | function isPromise(val: any): val is Promise<any> {
function toString (line 89) | function toString(val: any): string {
function replacer (line 97) | function replacer(_key: string, val: any): any {
function toNumber (line 109) | function toNumber(val: string): number | string {
function makeMap (line 118) | function makeMap(
function remove (line 143) | function remove(arr: Array<any>, item: any): Array<any> | void {
function hasOwn (line 162) | function hasOwn(obj: Object | Array<any>, key: string): boolean {
function cached (line 169) | function cached<R>(fn: (str: string) => R): (sr: string) => R {
function polyfillBind (line 209) | function polyfillBind(fn: Function, ctx: Object): Function {
function nativeBind (line 223) | function nativeBind(fn: Function, ctx: Object): Function {
function toArray (line 233) | function toArray(list: any, start?: number): Array<any> {
function extend (line 246) | function extend(
function toObject (line 259) | function toObject(arr: Array<any>): object {
function noop (line 276) | function noop(a?: any, b?: any, c?: any) {}
function genStaticKeys (line 293) | function genStaticKeys(
function looseEqual (line 305) | function looseEqual(a: any, b: any): boolean {
function looseIndexOf (line 351) | function looseIndexOf(arr: Array<unknown>, val: unknown): number {
function once (line 361) | function once<T extends (...args: any[]) => any>(fn: T): T {
function hasChanged (line 372) | function hasChanged(x: unknown, y: unknown): boolean {
FILE: src/types/compiler.ts
type CompilerOptions (line 3) | type CompilerOptions = {
type WarningMessage (line 38) | type WarningMessage = {
type CompiledResult (line 44) | type CompiledResult = {
type ModuleOptions (line 53) | type ModuleOptions = {
type ASTModifiers (line 67) | type ASTModifiers = { [key: string]: boolean }
type ASTIfCondition (line 68) | type ASTIfCondition = { exp: string | null; block: ASTElement }
type ASTIfConditions (line 69) | type ASTIfConditions = Array<ASTIfCondition>
type ASTAttr (line 71) | type ASTAttr = {
type ASTElementHandler (line 79) | type ASTElementHandler = {
type ASTElementHandlers (line 88) | type ASTElementHandlers = {
type ASTDirective (line 92) | type ASTDirective = {
type ASTNode (line 103) | type ASTNode = ASTElement | ASTText | ASTExpression
type ASTElement (line 105) | type ASTElement = {
type ASTExpression (line 186) | type ASTExpression = {
type ASTText (line 198) | type ASTText = {
FILE: src/types/component.ts
class Component (line 14) | class Component {
FILE: src/types/global-api.ts
type GlobalAPI (line 7) | interface GlobalAPI {
FILE: src/types/modules.d.ts
type Matchers (line 6) | interface Matchers<T> {
type ArrayLikeMatchers (line 11) | interface ArrayLikeMatchers<T> {
FILE: src/types/options.ts
type InternalComponentOptions (line 6) | type InternalComponentOptions = {
type InjectKey (line 14) | type InjectKey = string | Symbol
type ComponentOptions (line 19) | type ComponentOptions = {
type PropOptions (line 109) | type PropOptions = {
FILE: src/types/ssr.ts
type ComponentWithCacheContext (line 4) | type ComponentWithCacheContext = {
type ElementContext (line 11) | type ElementContext = {
type ComponentContext (line 19) | type ComponentContext = {
type RenderState (line 24) | type RenderState =
FILE: src/types/utils.ts
type IfAny (line 3) | type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N
FILE: src/types/vnode.ts
type VNodeChildren (line 9) | type VNodeChildren =
type VNodeComponentOptions (line 16) | type VNodeComponentOptions = {
type MountedComponentVNode (line 27) | type MountedComponentVNode = VNode & {
type VNodeWithData (line 39) | type VNodeWithData = VNode & {
type VNodeData (line 73) | interface VNodeData {
type VNodeDirective (line 111) | type VNodeDirective = {
type ScopedSlotsData (line 125) | type ScopedSlotsData = Array<
FILE: src/v3/apiAsyncComponent.ts
type AsyncComponentOptions (line 3) | interface AsyncComponentOptions {
type AsyncComponentFactory (line 18) | type AsyncComponentFactory = () => {
function defineAsyncComponent (line 31) | function defineAsyncComponent(
FILE: src/v3/apiInject.ts
type InjectionKey (line 5) | interface InjectionKey<T> extends Symbol {}
function provide (line 7) | function provide<T>(key: InjectionKey<T> | string | number, value: T) {
function resolveProvided (line 18) | function resolveProvided(vm: Component): Record<string, any> {
function inject (line 44) | function inject(
FILE: src/v3/apiLifecycle.ts
function createLifeCycle (line 6) | function createLifeCycle<T extends (...args: any[]) => any = () => void>(
function formatName (line 25) | function formatName(name: string) {
function injectHook (line 34) | function injectHook(instance: Component, hookName: string, fn: () => voi...
type ErrorCapturedHook (line 54) | type ErrorCapturedHook<TError = unknown> = (
function onErrorCaptured (line 63) | function onErrorCaptured<TError = Error>(
FILE: src/v3/apiSetup.ts
type SetupContext (line 20) | interface SetupContext {
function initSetup (line 28) | function initSetup(vm: Component) {
function createSetupContext (line 87) | function createSetupContext(vm: Component): SetupContext {
function syncSetupProxy (line 125) | function syncSetupProxy(
function defineProxyAttr (line 150) | function defineProxyAttr(
function initSlotsProxy (line 165) | function initSlotsProxy(vm: Component) {
function syncSetupSlots (line 172) | function syncSetupSlots(to: any, from: any) {
function useSlots (line 187) | function useSlots(): SetupContext['slots'] {
function useAttrs (line 195) | function useAttrs(): SetupContext['attrs'] {
function useListeners (line 204) | function useListeners(): SetupContext['listeners'] {
function getContext (line 208) | function getContext(): SetupContext {
function mergeDefaults (line 221) | function mergeDefaults(
FILE: src/v3/apiWatch.ts
constant WATCHER (line 20) | const WATCHER = `watcher`
constant WATCHER_CB (line 21) | const WATCHER_CB = `${WATCHER} callback`
constant WATCHER_GETTER (line 22) | const WATCHER_GETTER = `${WATCHER} getter`
constant WATCHER_CLEANUP (line 23) | const WATCHER_CLEANUP = `${WATCHER} cleanup`
type WatchEffect (line 25) | type WatchEffect = (onCleanup: OnCleanup) => void
type WatchSource (line 27) | type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)
type WatchCallback (line 29) | type WatchCallback<V = any, OV = any> = (
type MapSources (line 35) | type MapSources<T, Immediate> = {
type OnCleanup (line 47) | type OnCleanup = (cleanupFn: () => void) => void
type WatchOptionsBase (line 49) | interface WatchOptionsBase extends DebuggerOptions {
type WatchOptions (line 53) | interface WatchOptions<Immediate = boolean> extends WatchOptionsBase {
type WatchStopHandle (line 58) | type WatchStopHandle = () => void
function watchEffect (line 61) | function watchEffect(
function watchPostEffect (line 68) | function watchPostEffect(
function watchSyncEffect (line 81) | function watchSyncEffect(
constant INITIAL_WATCHER_VALUE (line 95) | const INITIAL_WATCHER_VALUE = {}
type MultiWatchSources (line 97) | type MultiWatchSources = (WatchSource<unknown> | object)[]
function watch (line 139) | function watch<T = any, Immediate extends Readonly<boolean> = false>(
function doWatch (line 154) | function doWatch(
FILE: src/v3/currentInstance.ts
function getCurrentInstance (line 12) | function getCurrentInstance(): { proxy: Component } | null {
function setCurrentInstance (line 19) | function setCurrentInstance(vm: Component | null = null) {
FILE: src/v3/debug.ts
type DebuggerOptions (line 3) | interface DebuggerOptions {
type DebuggerEvent (line 8) | type DebuggerEvent = {
type DebuggerEventExtraInfo (line 15) | type DebuggerEventExtraInfo = {
FILE: src/v3/h.ts
function h (line 9) | function h(type: any, props?: any, children?: any) {
FILE: src/v3/index.ts
function defineComponent (line 90) | function defineComponent(options: any) {
FILE: src/v3/reactivity/computed.ts
type ComputedRef (line 12) | interface ComputedRef<T = any> extends WritableComputedRef<T> {
type WritableComputedRef (line 17) | interface WritableComputedRef<T> extends Ref<T> {
type ComputedGetter (line 21) | type ComputedGetter<T> = (...args: any[]) => T
type ComputedSetter (line 22) | type ComputedSetter<T> = (v: T) => void
type WritableComputedOptions (line 24) | interface WritableComputedOptions<T> {
function computed (line 37) | function computed<T>(
FILE: src/v3/reactivity/effect.ts
function effect (line 11) | function effect(fn: () => any, scheduler?: (cb: any) => void) {
FILE: src/v3/reactivity/effectScope.ts
class EffectScope (line 6) | class EffectScope {
method constructor (line 39) | constructor(public detached = false) {
method run (line 49) | run<T>(fn: () => T): T | undefined {
method on (line 67) | on() {
method off (line 75) | off() {
method stop (line 79) | stop(fromParent?: boolean) {
function effectScope (line 108) | function effectScope(detached?: boolean) {
function recordEffectScope (line 115) | function recordEffectScope(
function getCurrentScope (line 124) | function getCurrentScope() {
function onScopeDispose (line 128) | function onScopeDispose(fn: () => void) {
FILE: src/v3/reactivity/operations.ts
type TrackOpTypes (line 4) | const enum TrackOpTypes {
type TriggerOpTypes (line 9) | const enum TriggerOpTypes {
FILE: src/v3/reactivity/reactive.ts
type ReactiveFlags (line 12) | const enum ReactiveFlags {
type Target (line 19) | interface Target {
type UnwrapNestedRefs (line 28) | type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRefSimple<T>
function reactive (line 31) | function reactive(target: object) {
type ShallowReactive (line 38) | type ShallowReactive<T> = T & { [ShallowReactiveMarker]?: true }
function shallowReactive (line 45) | function shallowReactive<T extends object>(
function makeReactive (line 53) | function makeReactive(target: any, shallow: boolean) {
function isReactive (line 95) | function isReactive(value: unknown): boolean {
function isShallow (line 102) | function isShallow(value: unknown): boolean {
function isReadonly (line 106) | function isReadonly(value: unknown): boolean {
function isProxy (line 110) | function isProxy(value: unknown): boolean {
function toRaw (line 114) | function toRaw<T>(observed: T): T {
function markRaw (line 119) | function markRaw<T extends object>(
function isCollectionType (line 132) | function isCollectionType(value: unknown): boolean {
FILE: src/v3/reactivity/readonly.ts
type Primitive (line 11) | type Primitive = string | number | boolean | bigint | symbol | undefined...
type Builtin (line 12) | type Builtin = Primitive | Function | Date | Error | RegExp
type DeepReadonly (line 13) | type DeepReadonly<T> = T extends Builtin
function readonly (line 38) | function readonly<T extends object>(
function createReadonly (line 44) | function createReadonly(target: any, shallow: boolean) {
function defineReadonlyProperty (line 99) | function defineReadonlyProperty(
function shallowReadonly (line 125) | function shallowReadonly<T extends object>(target: T): Readonly<T> {
FILE: src/v3/reactivity/ref.ts
type Ref (line 20) | interface Ref<T = any> {
function isRef (line 39) | function isRef(r: any): r is Ref {
function ref (line 46) | function ref(value?: unknown) {
type ShallowRef (line 52) | type ShallowRef<T = any> = Ref<T> & { [ShallowRefMarker]?: true }
function shallowRef (line 58) | function shallowRef(value?: unknown) {
function createRef (line 62) | function createRef(rawValue: unknown, shallow: boolean) {
function triggerRef (line 77) | function triggerRef(ref: Ref) {
function unref (line 93) | function unref<T>(ref: T | Ref<T>): T {
function proxyRefs (line 97) | function proxyRefs<T extends object>(
function proxyWithRefUnwrap (line 111) | function proxyWithRefUnwrap(
type CustomRefFactory (line 140) | type CustomRefFactory<T> = (
function customRef (line 148) | function customRef<T>(factory: CustomRefFactory<T>): Ref<T> {
type ToRefs (line 186) | type ToRefs<T = any> = {
function toRefs (line 190) | function toRefs<T extends object>(object: T): ToRefs<T> {
type ToRef (line 201) | type ToRef<T> = IfAny<T, Ref<T>, [T] extends [Ref] ? T : Ref<T>>
function toRef (line 214) | function toRef<T extends object, K extends keyof T>(
type RefUnwrapBailTypes (line 253) | interface RefUnwrapBailTypes {
type ShallowUnwrapRef (line 257) | type ShallowUnwrapRef<T> = {
type UnwrapRef (line 268) | type UnwrapRef<T> = T extends ShallowRef<infer V>
type BaseTypes (line 274) | type BaseTypes = string | number | boolean
type CollectionTypes (line 275) | type CollectionTypes = IterableCollections | WeakCollections
type IterableCollections (line 276) | type IterableCollections = Map<any, any> | Set<any>
type WeakCollections (line 277) | type WeakCollections = WeakMap<any, any> | WeakSet<any>
type UnwrapRefSimple (line 279) | type UnwrapRefSimple<T> = T extends
FILE: src/v3/sfc-helpers/useCssModule.ts
function useCssModule (line 4) | function useCssModule(name = '$style'): Record<string, string> {
FILE: src/v3/sfc-helpers/useCssVars.ts
function useCssVars (line 9) | function useCssVars(
FILE: test/e2e/commits.spec.ts
function testCommits (line 8) | async function testCommits(apiType: 'classic' | 'composition') {
FILE: test/e2e/e2eUtils.ts
function getExampleUrl (line 4) | function getExampleUrl(
constant E2E_TIMEOUT (line 15) | const E2E_TIMEOUT = 30 * 1000
function expectByPolling (line 24) | async function expectByPolling(
function setupPuppeteer (line 39) | function setupPuppeteer() {
FILE: test/e2e/grid.spec.ts
type TableData (line 3) | interface TableData {
function assertTable (line 12) | async function assertTable(data: TableData[]) {
function testGrid (line 23) | async function testGrid(apiType: 'classic' | 'composition') {
FILE: test/e2e/markdown.spec.ts
function testMarkdown (line 11) | async function testMarkdown(apiType: 'classic' | 'composition') {
FILE: test/e2e/svg.spec.ts
function assertPolygon (line 21) | async function assertPolygon(total: number) {
function assertLabels (line 41) | async function assertLabels(total: number) {
function assertStats (line 61) | async function assertStats(expected: number[]) {
function nthRange (line 68) | function nthRange(n: number) {
function testSvg (line 72) | async function testSvg(apiType: 'classic' | 'composition') {
FILE: test/e2e/todomvc.spec.ts
function removeItemAt (line 18) | async function removeItemAt(n: number) {
function testTodomvc (line 25) | async function testTodomvc(apiType: 'classic' | 'composition') {
FILE: test/e2e/tree.spec.ts
function testTree (line 7) | async function testTree(apiType: 'classic' | 'composition') {
FILE: test/helpers/classlist.ts
method toHaveClass (line 2) | toHaveClass(el: Element, cls: string) {
FILE: test/helpers/test-object-option.ts
function testObjectOption (line 3) | function testObjectOption(name) {
FILE: test/helpers/to-have-warned.ts
method toHaveBeenWarned (line 4) | toHaveBeenWarned(received: string) {
method toHaveBeenWarnedLast (line 27) | toHaveBeenWarnedLast(received: string) {
method toHaveBeenWarnedTimes (line 46) | toHaveBeenWarnedTimes(received: string, n: number) {
method toHaveBeenTipped (line 69) | toHaveBeenTipped(received: string) {
FILE: test/helpers/trigger-event.ts
function triggerEvent (line 1) | function triggerEvent(target, event, process) {
FILE: test/helpers/vdom.ts
function createTextVNode (line 3) | function createTextVNode(text) {
FILE: test/helpers/wait-for-update.ts
type Job (line 16) | interface Job extends Function {
function shift (line 25) | function shift() {
function timeout (line 77) | function timeout(n) {
FILE: test/test-env.d.ts
type Chainer (line 1) | interface Chainer {
type Matchers (line 19) | interface Matchers<R, T> {
FILE: test/transition/helpers.ts
function noop (line 5) | function noop() {}
function createCompareFn (line 20) | function createCompareFn(spy) {
function insertCSS (line 82) | function insertCSS(text) {
function injectStyles (line 92) | function injectStyles() {
FILE: test/transition/transition-group.spec.ts
function createBasicVM (line 13) | function createBasicVM(useIs?, appear = false) {
method beforeEnter (line 227) | beforeEnter(el) {
method afterEnter (line 231) | afterEnter(el) {
method afterLeave (line 236) | afterLeave(el) {
FILE: test/transition/transition-mode.spec.ts
method afterLeave (line 62) | afterLeave() {
method afterLeave (line 118) | afterLeave() {
method afterEnter (line 176) | afterEnter() {
method afterEnter (line 235) | afterEnter() {
method afterLeave (line 345) | afterLeave() {
method afterEnter (line 399) | afterEnter() {
function next1 (line 477) | function next1() {
function next2 (line 497) | function next2() {
function next1 (line 628) | function next1() {
function next2 (line 647) | function next2() {
FILE: test/transition/transition-with-keep-alive.spec.ts
function assertHookCalls (line 33) | function assertHookCalls(component, callCounts) {
method afterLeave (line 58) | afterLeave() {
method afterLeave (line 166) | afterLeave() {
method afterEnter (line 274) | afterEnter() {
method afterEnter (line 386) | afterEnter() {
method afterEnter (line 548) | afterEnter() {
method afterLeave (line 551) | afterLeave() {
method add (line 631) | add() {
FILE: test/transition/transition.spec.ts
method render (line 207) | render(h) {
method render (line 1395) | render(h, { data, children }) {
FILE: test/unit/features/component/component-async.spec.ts
function next (line 67) | function next() {
function next (line 95) | function next() {
function next (line 120) | function next() {
function step1 (line 154) | function step1() {
function step2 (line 163) | function step2() {
function next (line 206) | function next() {
function next (line 234) | function next() {
function next (line 272) | function next() {
function next (line 301) | function next() {
function next (line 330) | function next() {
function next (line 368) | function next() {
function next (line 418) | function next() {
method mounted (line 434) | mounted() {
FILE: test/unit/features/component/component-keep-alive.spec.ts
function assertHookCalls (line 30) | function assertHookCalls(component, callCounts) {
function sharedAssertions (line 234) | function sharedAssertions(vm, done) {
function assertCount (line 552) | function assertCount(calls) {
function assertCount (line 622) | function assertCount(calls) {
method render (line 707) | render(h, ctx) {
function assert (line 724) | function assert(foo, bar) {
method render (line 762) | render(h, ctx) {
function assert (line 779) | function assert(foo, bar) {
FILE: test/unit/features/component/component-scoped-slot.spec.ts
method data (line 15) | data() {
method data (line 43) | data() {
method data (line 73) | data() {
method data (line 106) | data() {
method data (line 132) | data() {
method data (line 163) | data() {
method data (line 191) | data() {
method data (line 215) | data() {
method data (line 242) | data() {
function assertOutput (line 256) | function assertOutput() {
method data (line 287) | data() {
function assertOutput (line 303) | function assertOutput() {
method data (line 332) | data() {
method data (line 357) | data() {
method data (line 382) | data() {
method render (line 400) | render(h) {
method data (line 410) | data() {
method render (line 413) | render(h) {
method render (line 434) | render(h) {
method data (line 439) | data() {
method render (line 442) | render(h) {
method render (line 453) | render(h) {
method data (line 458) | data() {
method render (line 461) | render(h) {
method render (line 479) | render(h) {
method data (line 637) | data() {
method render (line 680) | render(h) {
method render (line 691) | render(h) {
method render (line 699) | render(h) {
function runSuite (line 711) | function runSuite(syntax) {
function next (line 1015) | function next() {
method data (line 1082) | data() {
method render (line 1137) | render(h) {
method render (line 1151) | render(h) {
method render (line 1167) | render(h, ctx) {
method render (line 1204) | render() {
method data (line 1228) | data() {
method render (line 1362) | render(h) {
method render (line 1371) | render(h) {
FILE: test/unit/features/component/component-slot.spec.ts
function mount (line 5) | function mount(options) {
method render (line 114) | render() {
method test (line 145) | test() {
method render (line 353) | render() {
method render (line 383) | render() {
method render (line 459) | render(h, ctx) {
method data (line 480) | data() {
method data (line 507) | data() {
method created (line 514) | created() {
method destroyed (line 517) | destroyed() {
method data (line 552) | data() {
method render (line 658) | render(h, { slots }) {
method render (line 693) | render(h) {
method render (line 700) | render(h) {
method render (line 707) | render(h) {
method data (line 777) | data() {
method render (line 877) | render(h) {
method render (line 884) | render(h) {
method render (line 919) | render(h, { slots }) {
method render (line 926) | render(h, { children }) {
method data (line 955) | data() {
method render (line 958) | render(h) {
method data (line 994) | data() {
method mounted (line 999) | mounted() {
method data (line 1015) | data() {
FILE: test/unit/features/component/component.spec.ts
method data (line 9) | data() {
method data (line 25) | data() {
method data (line 42) | data() {
method data (line 62) | data() {
method data (line 76) | data() {
method data (line 97) | data() {
method data (line 103) | data() {
method data (line 227) | data() {
method data (line 255) | data() {
method created (line 313) | created() {
method data (line 340) | data() {
method render (line 343) | render(h) {
method render (line 384) | render(h) {
method render (line 410) | render(h) {
method mounted (line 413) | mounted() {
method beforeDestroy (line 416) | beforeDestroy() {
method data (line 424) | data() {
FILE: test/unit/features/directives/bind.spec.ts
method update (line 216) | update() {
method handleUpdate (line 286) | handleUpdate() {
function makeInstance (line 446) | function makeInstance(options) {
FILE: test/unit/features/directives/class.spec.ts
function assertClass (line 4) | function assertClass(assertions, done) {
method render (line 135) | render() {
method render (line 140) | render() {
FILE: test/unit/features/directives/for.spec.ts
method [Symbol.iterator] (line 191) | [Symbol.iterator]() {
method [Symbol.iterator] (line 246) | [Symbol.iterator]() {
method [Symbol.iterator] (line 302) | [Symbol.iterator]() {
method [Symbol.iterator] (line 364) | [Symbol.iterator]() {
function assertMarkup (line 665) | function assertMarkup() {
function assertMarkup (line 705) | function assertMarkup() {
method render (line 745) | render() {}
FILE: test/unit/features/directives/html.spec.ts
method toString (line 50) | toString() {
method toJSON (line 58) | toJSON() {
FILE: test/unit/features/directives/if.spec.ts
method data (line 260) | data() {
FILE: test/unit/features/directives/model-component.spec.ts
method render (line 168) | render(h) {
method render (line 182) | render(h, ctx) {
method get (line 203) | get() {
method set (line 206) | set(val) {
method render (line 224) | render(h) {
FILE: test/unit/features/directives/model-dynamic.spec.ts
function assertInputWorks (line 191) | function assertInputWorks(vm, type, chain) {
FILE: test/unit/features/directives/model-select.spec.ts
function hasMultiSelectBug (line 6) | function hasMultiSelectBug() {
function updateSelect (line 20) | function updateSelect(el, value) {
function getValue (line 31) | function getValue(option) {
method get (line 535) | get() {
method set (line 538) | set() {
function makeInstance (line 557) | function makeInstance(foo) {
FILE: test/unit/features/directives/model-text.spec.ts
method onInput (line 252) | onInput(e) {
method onInput (line 341) | onInput(e) {
method onInput (line 362) | onInput(e) {
method onInput (line 412) | onInput(e) {
FILE: test/unit/features/directives/on.spec.ts
method foo (line 96) | foo($event) {
method foo (line 116) | foo() {
method bar (line 119) | bar() {
method foo (line 176) | foo() {
method bar (line 179) | bar() {
method render (line 567) | render(h) {
method stopped (line 592) | stopped(ev) {
method render (line 599) | render(h) {
method render (line 627) | render(h) {
method stopped (line 654) | stopped(ev) {
method render (line 661) | render(h) {
method render (line 696) | render(h) {
method foo (line 796) | foo(e) {
method foo (line 826) | foo($event) {
method created (line 876) | created() {
method created (line 900) | created() {
method get (line 975) | get() {
method set (line 978) | set(val) {
method change (line 997) | change() {
method bar (line 1056) | bar() {
method created (line 1062) | created() {
method render (line 1065) | render(h) {
method foo (line 1187) | foo() {
method bar (line 1190) | bar() {
FILE: test/unit/features/directives/once.spec.ts
function expectTextContent (line 384) | function expectTextContent(vm, text) {
FILE: test/unit/features/directives/style.spec.ts
function checkPrefixedProp (line 3) | function checkPrefixedProp(prop) {
method data (line 24) | data() {
FILE: test/unit/features/directives/text.spec.ts
method toString (line 36) | toString() {
method toJSON (line 44) | toJSON() {
FILE: test/unit/features/error-handling.spec.ts
function getErrorMsg (line 120) | function getErrorMsg() {
method render (line 206) | render(h) {
method renderError (line 209) | renderError(h, err) {
method bork (line 231) | bork() {
method bork (line 247) | bork() {
function createErrorTestComponents (line 265) | function createErrorTestComponents() {
function createTestInstance (line 453) | function createTestInstance(Comp) {
function assertRootInstanceActive (line 468) | function assertRootInstanceActive(vm) {
function assertBothInstancesActive (line 476) | function assertBothInstancesActive(vm) {
FILE: test/unit/features/global-api/config.spec.ts
method computed (line 99) | computed() {
method execute (line 107) | execute() {
FILE: test/unit/features/global-api/extend.spec.ts
method created (line 57) | created() {
method created (line 62) | created() {
method created (line 67) | created() {
method a (line 96) | a() {
method b (line 103) | b() {
method c (line 111) | c() {
FILE: test/unit/features/global-api/mixin.spec.ts
method created (line 15) | created() {
method beforeCreate (line 29) | beforeCreate() {
method beforeCreate (line 34) | beforeCreate() {
method created (line 136) | created() {
method a (line 184) | a() {}
FILE: test/unit/features/global-api/observable.spec.ts
method render (line 10) | render(h) {
FILE: test/unit/features/global-api/set-delete.spec.ts
class Model (line 98) | class Model {
method constructor (line 100) | constructor() {
method bar (line 103) | get bar() {
method bar (line 106) | set bar(newvalue) {
FILE: test/unit/features/instance/methods-lifecycle.spec.ts
method mounted (line 43) | mounted() {
method msg (line 48) | msg() {
method data (line 67) | data() {
method handler (line 72) | handler() {
FILE: test/unit/features/instance/properties.spec.ts
method a (line 22) | a() {}
method b (line 27) | b() {}
method created (line 64) | created() {
method render (line 126) | render() {}
method mounted (line 127) | mounted() {
FILE: test/unit/features/instance/render-proxy.spec.ts
method render (line 25) | render(h) {
method created (line 36) | created() {
method render (line 39) | render(h) {
FILE: test/unit/features/options/_scopeId.spec.ts
method render (line 78) | render(h) {
FILE: test/unit/features/options/comments.spec.ts
method data (line 7) | data() {
FILE: test/unit/features/options/computed.spec.ts
method b (line 14) | b() {
method get (line 36) | get() {
method set (line 39) | set(v) {
method data (line 69) | data() {
method set (line 76) | set(v) {
method b (line 92) | b() {
method b (line 110) | b() {
method b (line 129) | b() {
method get (line 151) | get() {
method data (line 168) | data() {
method b (line 173) | b() {
method c (line 182) | c() {
FILE: test/unit/features/options/data.spec.ts
method data (line 20) | data() {
method data (line 38) | data() {
method data (line 66) | data() {}
method render (line 82) | render() {}
method data (line 83) | data() {
method beforeUpdate (line 103) | beforeUpdate() {
method data (line 110) | data() {
method computedMsg (line 114) | computedMsg() {
method get (line 133) | get() {
method data (line 137) | data() {
method data (line 152) | data({ foo }) {
FILE: test/unit/features/options/directives.spec.ts
method bind (line 28) | bind(el, binding, vnode) {
method inserted (line 36) | inserted(el, binding, vnode) {
method update (line 44) | update(el, binding, vnode, oldVnode) {
method componentUpdated (line 55) | componentUpdated(el, binding, vnode) {
method unbind (line 59) | unbind(el, binding, vnode) {
method test (line 96) | test(el, binding, vnode) {
method bind (line 289) | bind(el, binding) {
method update (line 292) | update(el, binding) {
method bind (line 313) | bind(el, binding) {
method update (line 316) | update(el, binding) {
method bind (line 339) | bind(el, binding) {
method update (line 342) | update(el, binding) {
method bind (line 365) | bind(el, binding) {
method update (line 370) | update(el, binding) {
FILE: test/unit/features/options/el.spec.ts
method render (line 32) | render(h) {
FILE: test/unit/features/options/errorCaptured.spec.ts
method created (line 20) | created() {
method render (line 25) | render() {}
method created (line 41) | created() {
method render (line 45) | render() {}
method errorCaptured (line 52) | errorCaptured(e, vm, info) {
method render (line 56) | render(h) {
method created (line 76) | created() {
method render (line 81) | render() {}
method errorCaptured (line 85) | errorCaptured(err, vm, info) {
method created (line 101) | created() {
method render (line 106) | render() {}
method errorCaptured (line 111) | errorCaptured() {
method created (line 126) | created() {
method render (line 129) | render() {}
method errorCaptured (line 133) | errorCaptured() {
method errorCaptured (line 139) | errorCaptured() {
method errorCaptured (line 147) | errorCaptured() {
method errorCaptured (line 158) | errorCaptured() {
method created (line 171) | created() {
method render (line 174) | render() {}
method errorCaptured (line 178) | errorCaptured() {
method errorCaptured (line 184) | errorCaptured() {
method errorCaptured (line 192) | errorCaptured() {
method errorCaptured (line 204) | errorCaptured() {
method test (line 223) | test() {
method render (line 228) | render(h) {
method errorCaptured (line 238) | errorCaptured(error) {
method data (line 257) | data() {
method foo (line 263) | foo() {
method created (line 268) | created() {
method render (line 271) | render() {}
method data (line 297) | data() {
method foo (line 303) | foo() {
method created (line 308) | created() {
method render (line 311) | render() {}
method data (line 343) | data() {
method handler (line 351) | handler() {
method created (line 357) | created() {
method render (line 360) | render() {}
method data (line 388) | data() {
method handler (line 396) | handler() {
method created (line 402) | created() {
method render (line 405) | render() {}
FILE: test/unit/features/options/extends.spec.ts
method data (line 7) | data() {
method data (line 13) | data() {
method data (line 30) | data() {
method data (line 36) | data() {
FILE: test/unit/features/options/functional.spec.ts
method render (line 13) | render(h, { props, children }) {
method render (line 29) | render(h, { props }) {
method render (line 36) | render(h) {
method render (line 62) | render(h, { listeners }) {
method render (line 89) | render(h, { scopedSlots }) {
method render (line 110) | render(h) {
method render (line 128) | render(h, { slots }) {
method render (line 151) | render(h, { props, children, data: { on } }) {
method render (line 158) | render() {
method mounted (line 161) | mounted() {
method destroyed (line 164) | destroyed() {
method onInput (line 168) | onInput(e) {
method validate (line 175) | validate(val) {
method render (line 203) | render() {
method render (line 221) | render(h) {
method fn (line 322) | fn() {
function assertMarkup (line 328) | function assertMarkup() {
method render (line 354) | render(h, context) {
FILE: test/unit/features/options/inject.spec.ts
method render (line 12) | render() {}
method created (line 13) | created() {
method provide (line 72) | provide() {
method render (line 97) | render() {}
method created (line 98) | created() {
method data (line 132) | data() {
method default (line 139) | default() {
method render (line 163) | render(h, context) {
method created (line 204) | created() {
method render (line 210) | render(h) {
method data (line 223) | data() {
method provide (line 228) | provide() {
method created (line 262) | created() {
method created (line 288) | created() {
method render (line 294) | render(h) {
method created (line 309) | created() {
method render (line 315) | render(h) {
method created (line 330) | created() {
method render (line 336) | render(h) {
method created (line 371) | created() {}
method created (line 388) | created() {}
method created (line 416) | created() {
method created (line 436) | created() {
method created (line 458) | created() {
method created (line 472) | created() {
method render (line 478) | render(h) {
method created (line 492) | created() {
method render (line 498) | render(h) {
method created (line 514) | created() {
method render (line 520) | render(h) {
method created (line 534) | created() {
method render (line 540) | render(h) {
method created (line 553) | created() {
method render (line 560) | render(h) {
function isObserver (line 572) | function isObserver(obj) {
method data (line 581) | data() {
method provide (line 588) | provide() {
method render (line 628) | render(h) {
method render (line 635) | render(h) {
method render (line 641) | render(h) {
method created (line 653) | created() {
method render (line 659) | render(h) {
method render (line 685) | render() {}
method mounted (line 687) | mounted() {
method data (line 696) | data() {
method provide (line 701) | provide() {
method render (line 720) | render() {}
FILE: test/unit/features/options/lifecycle.spec.ts
method beforeCreate (line 15) | beforeCreate() {
method created (line 36) | created() {
method render (line 48) | render() {}
method beforeMount (line 49) | beforeMount() {
method mounted (line 67) | mounted() {
method mounted (line 86) | mounted() {
method mounted (line 97) | mounted() {
method mounted (line 103) | mounted() {
method mounted (line 110) | mounted() {
method beforeUpdate (line 128) | beforeUpdate() {
method beforeUpdate (line 145) | beforeUpdate() {
method data (line 174) | data() {
method pendingTodos (line 180) | pendingTodos() {
method updated (line 199) | updated() {
method updated (line 220) | updated() {
method updated (line 226) | updated() {
method data (line 258) | data() {
method pendingTodos (line 264) | pendingTodos() {
method render (line 281) | render() {}
method beforeDestroy (line 282) | beforeDestroy() {
method render (line 299) | render() {}
method destroyed (line 300) | destroyed() {
method render (line 319) | render() {}
method beforeCreate (line 320) | beforeCreate() {
FILE: test/unit/features/options/methods.spec.ts
method plus (line 13) | plus() {
method foo (line 39) | foo() {}
method _update (line 50) | _update() {}
FILE: test/unit/features/options/parent.spec.ts
method render (line 6) | render() {}
method render (line 11) | render() {}
FILE: test/unit/features/options/props.spec.ts
function makeInstance (line 156) | function makeInstance(value, type, validator?, required?) {
function Class (line 278) | function Class() {}
method a (line 390) | a() {}
method created (line 603) | created() {
method render (line 606) | render() {}
FILE: test/unit/features/options/render.spec.ts
method render (line 6) | render(h) {
method render (line 30) | render(h) {
FILE: test/unit/features/options/renderError.spec.ts
method render (line 10) | render(h) {
method renderError (line 17) | renderError(h, err) {
method render (line 33) | render() {
method renderError (line 36) | renderError() {
FILE: test/unit/features/options/watch.spec.ts
method prop1 (line 174) | prop1() {}
FILE: test/unit/features/template-ref.spec.ts
type TestShape (line 4) | type TestShape = {
type ComponentShape (line 10) | type ComponentShape = {
method render (line 69) | render(h) {
function assertRefs (line 130) | function assertRefs() {
function assertRefs (line 166) | function assertRefs() {
method data (line 179) | data() {
function assertRefs (line 216) | function assertRefs() {
method data (line 235) | data() {
FILE: test/unit/features/v3/apiAsyncComponent.spec.ts
method onError (line 136) | onError(error, retry, fail) {
method onError (line 175) | onError(error, retry, fail) {
method onError (line 211) | onError(error, retry, fail, attempts) {
FILE: test/unit/features/v3/apiInject.spec.ts
method setup (line 18) | setup() {
method setup (line 29) | setup() {
method setup (line 44) | setup() {
method setup (line 55) | setup() {
method setup (line 67) | setup() {
method setup (line 78) | setup() {
method setup (line 93) | setup() {
method default (line 103) | default() {
method render (line 108) | render() {
method setup (line 120) | setup() {
method setup (line 128) | setup() {
method setup (line 137) | setup() {
method setup (line 153) | setup() {
method setup (line 164) | setup() {
method setup (line 182) | setup() {
method setup (line 193) | setup() {
method setup (line 218) | setup() {
method setup (line 229) | setup() {
method setup (line 247) | setup() {
method setup (line 258) | setup() {
method setup (line 280) | setup() {
method setup (line 290) | setup() {
method setup (line 304) | setup() {
method setup (line 314) | setup() {
method setup (line 327) | setup() {
FILE: test/unit/features/v3/apiLifecycle.spec.ts
method setup (line 28) | setup() {
method setup (line 46) | setup() {
method setup (line 64) | setup() {
method setup (line 87) | setup() {
method setup (line 113) | setup() {
method setup (line 134) | setup() {
method setup (line 140) | setup() {
method setup (line 161) | setup() {
method setup (line 167) | setup() {
method setup (line 188) | setup() {
method setup (line 194) | setup() {
method setup (line 214) | setup() {
method setup (line 227) | setup(props: any) {
method setup (line 240) | setup(props: any) {
method setup (line 299) | setup() {
method setup (line 332) | setup() {
FILE: test/unit/features/v3/apiSetup.spec.ts
function renderToString (line 6) | function renderToString(comp: any) {
method setup (line 14) | setup() {
method render (line 24) | render() {
method setup (line 33) | setup() {
method setup (line 52) | setup(props) {
method setup (line 84) | setup(_props: any, { attrs }: any) {
method setup (line 108) | setup(_: any, { attrs }: any) {
method setup (line 138) | setup(_: any, { attrs }: any) {
method setup (line 167) | setup(_props: any, { slots }: any) {
method setup (line 177) | setup() {
method setup (line 206) | setup(props, { emit }) {
method onInc (line 222) | onInc(newVal: number) {
method setup (line 281) | setup() {
method setup (line 299) | setup() {
method setup (line 317) | setup(_, { listeners }) {
FILE: test/unit/features/v3/apiWatch.spec.ts
method setup (line 329) | setup() {
method setup (line 358) | setup() {
method setup (line 378) | setup() {
method setup (line 409) | setup() {
method setup (line 451) | setup() {
method setup (line 501) | setup() {
method setup (line 528) | setup() {
method render (line 531) | render() {}
method render (line 534) | render() {
method setup (line 549) | setup() {
method render (line 552) | render() {}
method render (line 555) | render() {
method setup (line 575) | setup(props: any) {
method render (line 601) | render() {
method render (line 623) | render() {}
method setup (line 624) | setup() {
method setup (line 651) | setup() {
method render (line 992) | render() {}
method created (line 993) | created(this: any) {
method render (line 1010) | render() {}
method setup (line 1011) | setup() {
method a (line 1033) | a() {
method render (line 1038) | render() {
method render (line 1044) | render() {
method setup (line 1092) | setup() {
method setup (line 1115) | setup() {
method setup (line 1138) | setup() {
method setup (line 1177) | setup() {
method setup (line 1186) | setup() {
FILE: test/unit/features/v3/reactivity/computed.spec.ts
method get (line 212) | get() {
method set (line 215) | set(v) {
FILE: test/unit/features/v3/reactivity/effectScope.spec.ts
method data (line 303) | data() {
FILE: test/unit/features/v3/reactivity/readonly.spec.ts
type Writable (line 17) | type Writable<T> = { -readonly [P in keyof T]: T[P] }
class Foo (line 510) | class Foo {
method log (line 512) | log() {
method change (line 515) | change() {
FILE: test/unit/features/v3/reactivity/ref.spec.ts
method get (line 363) | get() {
method set (line 367) | set(newValue: number) {
FILE: test/unit/features/v3/setupTemplateRef.spec.ts
method setup (line 11) | setup() {
method render (line 16) | render() {
method setup (line 30) | setup() {
method render (line 36) | render() {
method setup (line 54) | setup() {
method render (line 59) | render() {
method setup (line 120) | setup() {
method setup (line 136) | setup() {
method setup (line 155) | setup() {
method render (line 170) | render(this: any) {
method render (line 176) | render() {
method mounted (line 179) | mounted(this: any) {
method render (line 190) | render(this: any) {
method render (line 196) | render() {
method mounted (line 203) | mounted(this: any) {
method setup (line 217) | setup() {
method render (line 220) | render() {
method setup (line 234) | setup() {
method render (line 241) | render() {
method setup (line 258) | setup() {
method render (line 262) | render(this: any) {
method render (line 285) | render(this: any) {
method mounted (line 291) | mounted(this: any) {
method updated (line 294) | updated(this: any) {
method render (line 315) | render(this: any) {
method mounted (line 318) | mounted(this: any) {
method updated (line 321) | updated(this: any) {
method render (line 410) | render() {
method setup (line 458) | setup() {
method render (line 461) | render() {
FILE: test/unit/features/v3/useCssVars.spec.ts
function assertCssVars (line 5) | async function assertCssVars(getApp: (state: any) => any) {
method setup (line 23) | setup() {
method render (line 30) | render() {
method setup (line 42) | setup() {
FILE: test/unit/modules/compiler/codegen.spec.ts
function assertCodegen (line 9) | function assertCodegen(template, generatedCode, ...args) {
FILE: test/unit/modules/compiler/compiler-options.spec.ts
method validate (line 15) | validate(el, dir) {
method transformNode (line 26) | transformNode(el) {
method genData (line 43) | genData(el) {
method transformCode (line 53) | transformCode(el, code) {
method render (line 88) | render(h) {
method valid (line 92) | valid() {
method mounted (line 104) | mounted() {
method required (line 114) | required(val) {
method max (line 117) | max(val, rule) {
FILE: test/unit/modules/compiler/parser.spec.ts
method preTransformNode (line 854) | preTransformNode(el) {
method postTransformNode (line 857) | postTransformNode(el) {
FILE: test/unit/modules/observer/observer.spec.ts
method get (line 67) | get() {
method set (line 71) | set(v) {
method get (line 103) | get() {
method set (line 137) | set(v) {
method addDep (line 192) | addDep(dep) {
method get (line 228) | get() {
method set (line 231) | set(v) {
FILE: test/unit/modules/observer/scheduler.spec.ts
function queueWatcher (line 7) | function queueWatcher(watcher) {
method run (line 49) | run() {
method a (line 66) | a() {
method beforeUpdate (line 70) | beforeUpdate() {
method a (line 88) | a() {
method beforeUpdate (line 92) | beforeUpdate() {
method a (line 101) | a() {
method beforeUpdate (line 105) | beforeUpdate() {
method run (line 121) | run() {
method run (line 138) | run() {
method updated (line 169) | updated() {
FILE: test/unit/modules/vdom/create-component.spec.ts
method data (line 10) | data() {
method render (line 21) | render() {}
function async (line 49) | function async(resolve, reject) {
function go (line 58) | function go() {
function loaded (line 66) | function loaded() {
function async (line 90) | function async(resolve, reject) {
function async (line 119) | function async(resolve, reject) {
function go (line 125) | function go() {
function failed (line 131) | function failed() {
FILE: test/unit/modules/vdom/create-element.spec.ts
method render (line 199) | render(h) {
method render (line 208) | render(h) {
method render (line 217) | render(h) {
method render (line 226) | render(h) {
method render (line 236) | render(h) {
method render (line 266) | render(h) {
FILE: test/unit/modules/vdom/modules/attrs.spec.ts
method render (line 86) | render(h) {
FILE: test/unit/modules/vdom/modules/dom-props.spec.ts
method render (line 76) | render(h) {
FILE: test/unit/modules/vdom/patch/children.spec.ts
function prop (line 4) | function prop(name) {
function map (line 10) | function map(fn, list) {
function spanNum (line 18) | function spanNum(n) {
function shuffle (line 26) | function shuffle(array) {
function spanNumWithOpacity (line 255) | function spanNumWithOpacity(n, o) {
function makeNode (line 477) | function makeNode(text) {
function makeNode (line 498) | function makeNode(text) {
function makeNode (line 540) | function makeNode(key) {
function makeNode (line 550) | function makeNode(key) {
function makeNode (line 563) | function makeNode(key) {
FILE: test/unit/modules/vdom/patch/edge-cases.spec.ts
method addFive (line 44) | addFive($event, toAdd = 0) {
method bind (line 50) | bind(el, binding, vnode) {
method data (line 106) | data() {
method render (line 109) | render(h) {
method render (line 140) | render(h) {
method render (line 151) | render(h) {
method data (line 249) | data() {
method get (line 291) | get() {
method render (line 297) | render(h) {
method render (line 366) | render() {}
method render (line 394) | render(h) {
method render (line 414) | render(h) {
method inserted (line 489) | inserted() {
FILE: test/unit/modules/vdom/patch/hooks.spec.ts
function insert (line 21) | function insert(vnode) {
function prepatch (line 40) | function prepatch(oldVnode, newVnode) {
function prepatch (line 67) | function prepatch(oldVnode, newVnode) {
function postpatch (line 70) | function postpatch(oldVnode, newVnode) {
function cb (line 97) | function cb(result, oldVnode, newVnode) {
function remove (line 135) | function remove(vnode, rm) {
function init (line 160) | function init(vnode) {
function prepatch (line 163) | function prepatch(oldVnode, newVnode) {
method remove (line 181) | remove(_, rm) {
method remove (line 186) | remove(_, rm) {
method remove (line 195) | remove(_, rm) {
function remove (line 219) | function remove(vnode, rm) {
function destroy (line 238) | function destroy(vnode) {
method create (line 268) | create() {
method destroy (line 273) | destroy() {
method create (line 301) | create() {
method remove (line 306) | remove() {
method create (line 331) | create() {
method destroy (line 336) | destroy() {
function create (line 362) | function create(empty, vnode) {
FILE: test/unit/modules/vdom/patch/hydration.spec.ts
function createMockSSRDOM (line 6) | function createMockSSRDOM(innerHTML) {
function init (line 24) | function init(vnode) {
function createServerRenderedDOM (line 27) | function createServerRenderedDOM() {
function traverseAndAssert (line 57) | function traverseAndAssert(vnode, element) {
function createServerRenderedDOM (line 82) | function createServerRenderedDOM() {
method data (line 122) | data() {
method data (line 192) | data() {
method data (line 212) | data() {
FILE: types/built-in-components.d.ts
type Hook (line 3) | type Hook<T = () => void> = T | T[]
type TransitionProps (line 5) | interface TransitionProps {
type TransitionGroupProps (line 48) | type TransitionGroupProps = Omit<TransitionProps, 'mode'> & {
type MatchPattern (line 55) | type MatchPattern = string | RegExp | (string | RegExp)[]
type KeepAliveProps (line 57) | interface KeepAliveProps {
FILE: types/common.d.ts
type Data (line 1) | type Data = { [key: string]: unknown }
type UnionToIntersection (line 3) | type UnionToIntersection<U> = (
type Equal (line 12) | type Equal<Left, Right> =
type HasDefined (line 15) | type HasDefined<T> = Equal<T, unknown> extends true ? false : true
type IfAny (line 19) | type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N
type LooseRequired (line 21) | type LooseRequired<T> = { [P in string & keyof T]: T[P] }
FILE: types/jsx.d.ts
type CSSProperties (line 28) | interface CSSProperties
type Booleanish (line 42) | type Booleanish = boolean | 'true' | 'false'
type Numberish (line 43) | type Numberish = number | string
type AriaAttributes (line 46) | interface AriaAttributes {
type StyleValue (line 234) | type StyleValue = string | CSSProperties | Array<StyleValue>
type HTMLAttributes (line 236) | interface HTMLAttributes extends AriaAttributes, EventHandlers<Events> {
type AnchorHTMLAttributes (line 308) | interface AnchorHTMLAttributes extends HTMLAttributes {
type AreaHTMLAttributes (line 320) | interface AreaHTMLAttributes extends HTMLAttributes {
type AudioHTMLAttributes (line 332) | interface AudioHTMLAttributes extends MediaHTMLAttributes {}
type BaseHTMLAttributes (line 334) | interface BaseHTMLAttributes extends HTMLAttributes {
type BlockquoteHTMLAttributes (line 339) | interface BlockquoteHTMLAttributes extends HTMLAttributes {
type ButtonHTMLAttributes (line 343) | interface ButtonHTMLAttributes extends HTMLAttributes {
type CanvasHTMLAttributes (line 357) | interface CanvasHTMLAttributes extends HTMLAttributes {
type ColHTMLAttributes (line 362) | interface ColHTMLAttributes extends HTMLAttributes {
type ColgroupHTMLAttributes (line 367) | interface ColgroupHTMLAttributes extends HTMLAttributes {
type DataHTMLAttributes (line 371) | interface DataHTMLAttributes extends HTMLAttributes {
type DetailsHTMLAttributes (line 375) | interface DetailsHTMLAttributes extends HTMLAttributes {
type DelHTMLAttributes (line 379) | interface DelHTMLAttributes extends HTMLAttributes {
type DialogHTMLAttributes (line 384) | interface DialogHTMLAttributes extends HTMLAttributes {
type EmbedHTMLAttributes (line 388) | interface EmbedHTMLAttributes extends HTMLAttributes {
type FieldsetHTMLAttributes (line 395) | interface FieldsetHTMLAttributes extends HTMLAttributes {
type FormHTMLAttributes (line 401) | interface FormHTMLAttributes extends HTMLAttributes {
type HtmlHTMLAttributes (line 412) | interface HtmlHTMLAttributes extends HTMLAttributes {
type IframeHTMLAttributes (line 416) | interface IframeHTMLAttributes extends HTMLAttributes {
type ImgHTMLAttributes (line 434) | interface ImgHTMLAttributes extends HTMLAttributes {
type InsHTMLAttributes (line 446) | interface InsHTMLAttributes extends HTMLAttributes {
type InputHTMLAttributes (line 451) | interface InputHTMLAttributes extends HTMLAttributes {
type KeygenHTMLAttributes (line 487) | interface KeygenHTMLAttributes extends HTMLAttributes {
type LabelHTMLAttributes (line 497) | interface LabelHTMLAttributes extends HTMLAttributes {
type LiHTMLAttributes (line 502) | interface LiHTMLAttributes extends HTMLAttributes {
type LinkHTMLAttributes (line 506) | interface LinkHTMLAttributes extends HTMLAttributes {
type MapHTMLAttributes (line 518) | interface MapHTMLAttributes extends HTMLAttributes {
type MenuHTMLAttributes (line 522) | interface MenuHTMLAttributes extends HTMLAttributes {
type MediaHTMLAttributes (line 526) | interface MediaHTMLAttributes extends HTMLAttributes {
type MetaHTMLAttributes (line 539) | interface MetaHTMLAttributes extends HTMLAttributes {
type MeterHTMLAttributes (line 546) | interface MeterHTMLAttributes extends HTMLAttributes {
type QuoteHTMLAttributes (line 556) | interface QuoteHTMLAttributes extends HTMLAttributes {
type ObjectHTMLAttributes (line 560) | interface ObjectHTMLAttributes extends HTMLAttributes {
type OlHTMLAttributes (line 572) | interface OlHTMLAttributes extends HTMLAttributes {
type OptgroupHTMLAttributes (line 578) | interface OptgroupHTMLAttributes extends HTMLAttributes {
type OptionHTMLAttributes (line 583) | interface OptionHTMLAttributes extends HTMLAttributes {
type OutputHTMLAttributes (line 590) | interface OutputHTMLAttributes extends HTMLAttributes {
type ParamHTMLAttributes (line 596) | interface ParamHTMLAttributes extends HTMLAttributes {
type ProgressHTMLAttributes (line 601) | interface ProgressHTMLAttributes extends HTMLAttributes {
type ScriptHTMLAttributes (line 606) | interface ScriptHTMLAttributes extends HTMLAttributes {
type SelectHTMLAttributes (line 618) | interface SelectHTMLAttributes extends HTMLAttributes {
type SourceHTMLAttributes (line 630) | interface SourceHTMLAttributes extends HTMLAttributes {
type StyleHTMLAttributes (line 638) | interface StyleHTMLAttributes extends HTMLAttributes {
type TableHTMLAttributes (line 645) | interface TableHTMLAttributes extends HTMLAttributes {
type TextareaHTMLAttributes (line 651) | interface TextareaHTMLAttributes extends HTMLAttributes {
type TdHTMLAttributes (line 669) | interface TdHTMLAttributes extends HTMLAttributes {
type ThHTMLAttributes (line 678) | interface ThHTMLAttributes extends HTMLAttributes {
type TimeHTMLAttributes (line 686) | interface TimeHTMLAttributes extends HTMLAttributes {
type TrackHTMLAttributes (line 690) | interface TrackHTMLAttributes extends HTMLAttributes {
type VideoHTMLAttributes (line 698) | interface VideoHTMLAttributes extends MediaHTMLAttributes {
type WebViewHTMLAttributes (line 706) | interface WebViewHTMLAttributes extends HTMLAttributes {
type SVGAttributes (line 726) | interface SVGAttributes extends AriaAttributes, EventHandlers<Events> {
type IntrinsicElementAttributes (line 1005) | interface IntrinsicElementAttributes {
type Events (line 1183) | interface Events {
type EventHandlers (line 1299) | type EventHandlers<E> = {
type ReservedProps (line 1305) | type ReservedProps = {
type ElementAttrs (line 1316) | type ElementAttrs<T> = T & ReservedProps
type NativeElements (line 1318) | type NativeElements = {
type Element (line 1333) | interface Element extends VNode {}
type ElementClass (line 1334) | interface ElementClass {
type ElementAttributesProperty (line 1337) | interface ElementAttributesProperty {
type IntrinsicElements (line 1340) | interface IntrinsicElements extends NativeElements {
type IntrinsicAttributes (line 1345) | interface IntrinsicAttributes
FILE: types/options.d.ts
type Constructor (line 9) | type Constructor = {
type Component (line 15) | type Component<
type EsModule (line 27) | type EsModule<T> = T | { default: T }
type ImportedComponent (line 29) | type ImportedComponent<
type AsyncComponent (line 37) | type AsyncComponent<
type AsyncComponentPromise (line 47) | type AsyncComponentPromise<
type AsyncComponentFactory (line 62) | type AsyncComponentFactory<
type Accessors (line 84) | type Accessors<T> = {
type DataDef (line 88) | type DataDef<Data, Props, V> = Data | ((this: Readonly<Props> & V) => Data)
type ThisTypedComponentOptionsWithArrayProps (line 92) | type ThisTypedComponentOptionsWithArrayProps<
type ThisTypedComponentOptionsWithRecordProps (line 129) | type ThisTypedComponentOptionsWithRecordProps<
type DefaultData (line 163) | type DefaultData<V> = object | ((this: V) => object)
type DefaultProps (line 164) | type DefaultProps = Record<string, any>
type DefaultMethods (line 165) | type DefaultMethods<V> = { [key: string]: (this: V, ...args: any[]) => a...
type DefaultComputed (line 166) | type DefaultComputed = { [key: string]: any }
type ComponentOptions (line 168) | interface ComponentOptions<
type FunctionalComponentOptions (line 247) | interface FunctionalComponentOptions<
type RenderContext (line 266) | interface RenderContext<Props = DefaultProps> {
type Prop (line 277) | type Prop<T> =
type PropType (line 282) | type PropType<T> = Prop<T> | Prop<T>[]
type PropValidator (line 284) | type PropValidator<T> = PropOptions<T> | PropType<T>
type PropOptions (line 286) | interface PropOptions<T = any> {
type RecordPropsDefinition (line 293) | type RecordPropsDefinition<T> = {
type ArrayPropsDefinition (line 296) | type ArrayPropsDefinition<T> = (keyof T)[]
type PropsDefinition (line 297) | type PropsDefinition<T> =
type ComputedOptions (line 301) | interface ComputedOptions<T> {
type WatchHandler (line 307) | type WatchHandler<T> = string | ((val: T, oldVal: T) => void)
type WatchOptions (line 309) | interface WatchOptions {
type WatchOptionsWithHandler (line 314) | interface WatchOptionsWithHandler<T> extends WatchOptions {
type DirectiveBinding (line 318) | interface DirectiveBinding extends Readonly<VNodeDirective> {
type DirectiveFunction (line 325) | type DirectiveFunction = (
type DirectiveOptions (line 335) | interface DirectiveOptions {
type InjectKey (line 343) | type InjectKey = string | symbol
type InjectOptions (line 345) | type InjectOptions =
FILE: types/plugin.d.ts
type PluginFunction (line 3) | type PluginFunction<T> = (Vue: typeof _Vue, options?: T) => void
type PluginObject (line 5) | interface PluginObject<T> {
FILE: types/test/augmentation-test.ts
type Vue (line 5) | interface Vue {
type VueConstructor (line 11) | interface VueConstructor {
type ComponentOptions (line 19) | interface ComponentOptions<V extends Vue> {
method foo (line 31) | foo() {
method BAR (line 36) | BAR(): string {
method mounted (line 49) | mounted() {
FILE: types/test/es-module.ts
method data (line 2) | data() {
FILE: types/test/options-test.ts
type MyComponent (line 5) | interface MyComponent extends Vue {
method data (line 10) | data() {
method data (line 37) | data() {
method data (line 47) | data() {
class User (line 55) | class User {
class Cat (line 58) | class Cat {
type IUser (line 62) | interface IUser {
type ICat (line 67) | interface ICat {
type ConfirmCallback (line 71) | type ConfirmCallback = (confirm: boolean) => void
method data (line 81) | data() {
method data (line 100) | data() {
method created (line 115) | created(): void {
method data (line 121) | data() {
method aDouble (line 140) | aDouble(): number {
method get (line 144) | get(): number {
method set (line 147) | set(v: number) {
method plus (line 154) | plus(): void {
method handler (line 167) | handler(val, oldVal) {
method render (line 186) | render(createElement) {
method renderError (line 248) | renderError(createElement, err) {
method beforeCreate (line 253) | beforeCreate() {
method created (line 256) | created() {}
method beforeDestroy (line 257) | beforeDestroy() {}
method destroyed (line 258) | destroyed() {}
method beforeMount (line 259) | beforeMount() {}
method mounted (line 260) | mounted() {}
method beforeUpdate (line 261) | beforeUpdate() {}
method updated (line 262) | updated() {}
method activated (line 263) | activated() {}
method deactivated (line 264) | deactivated() {}
method errorCaptured (line 265) | errorCaptured(err, vm, info) {
method serverPrefetch (line 271) | serverPrefetch() {
method bind (line 277) | bind() {}
method inserted (line 278) | inserted() {}
method update (line 279) | update() {}
method componentUpdated (line 280) | componentUpdated() {}
method unbind (line 281) | unbind() {}
method b (line 283) | b(el, binding, vnode, oldVnode) {
method double (line 300) | double(value: number) {
method confirm (line 316) | confirm() {
method render (line 342) | render(h): VNode {
method render (line 348) | render(h) {
method render (line 382) | render(this: Vue, h: CreateElement) {
method render (line 398) | render(h): VNode {
method render (line 425) | render(createElement, context) {
method render (line 446) | render(h) {
method render (line 457) | render(h) {
method render (line 472) | render(h: CreateElement) {
method render (line 486) | render(createElement, context) {
method render (line 501) | render(createElement) {
FILE: types/test/plugin-test.ts
class Option (line 4) | class Option {
method install (line 10) | install(Vue, option) {
FILE: types/test/setup-helpers-test.ts
type Emits (line 109) | type Emits = { (e: 'foo' | 'bar'): void; (e: 'baz', id: number): void }
FILE: types/test/utils.ts
type IsUnion (line 8) | type IsUnion<T, U extends T = T> = (
type IsAny (line 14) | type IsAny<T> = 0 extends 1 & T ? true : false
FILE: types/test/v3/define-async-component-test.tsx
method onError (line 15) | onError(err, retry, fail, attempts) {
FILE: types/test/v3/define-component-test.tsx
function install (line 16) | function install(app: VueConstructor) {
type ExpectedProps (line 22) | interface ExpectedProps {
type GT (line 53) | type GT = string & { __brand: unknown }
method setup (line 147) | setup(props) {
method provide (line 196) | provide() {
method render (line 199) | render() {
method setup (line 337) | setup(props) {
method render (line 346) | render() {
method setup (line 364) | setup() {
method data (line 369) | data() {
method d (line 379) | d() {
method get (line 384) | get() {
method set (line 390) | set(v: number) {
method a (line 398) | a() {
method created (line 403) | created() {
method doSomething (line 417) | doSomething() {
method returnSomething (line 429) | returnSomething() {
method render (line 433) | render() {
method data (line 460) | data() {
method data (line 468) | data() {
method data (line 475) | data() {
method data (line 483) | data() {
method setup (line 493) | setup(props) {
method dC1 (line 497) | dC1() {
method dC2 (line 500) | dC2() {
method data (line 516) | data(vm) {
method setup (line 534) | setup(props) {
method render (line 546) | render() {
method data (line 621) | data() {
method c (line 627) | c(): number {
method render (line 641) | render() {
method data (line 691) | data() {
method data (line 710) | data() {
method c (line 716) | c(): number {
method render (line 732) | render() {
method data (line 789) | data() {
method foo (line 795) | foo() {
method foo (line 800) | foo() {}
method mounted (line 805) | mounted() {
method mounted (line 811) | mounted() {
method mounted (line 817) | mounted() {
method setup (line 848) | setup(props, { emit }) {
method created (line 864) | created() {
method mounted (line 878) | mounted() {
method setup (line 901) | setup(props, { emit }) {
method created (line 910) | created() {
method setup (line 924) | setup(props, { emit }) {
method setup (line 948) | setup(props, { emit }) {
method foo (line 963) | foo(): boolean {
method setup (line 1036) | setup(_, { attrs, slots }) {
method data (line 1069) | data() {
method render (line 1087) | render(h, ctx) {
method render (line 1105) | render(h, ctx) {
method data (line 1124) | data() {
method provide (line 1127) | provide(): any {
method created (line 1132) | created() {
method fetchData (line 1136) | fetchData() {
method foo (line 1144) | foo() {
method render (line 1153) | render(h) {
method data (line 1177) | data() {
method ac (line 1184) | ac() {
method callA (line 1190) | callA(b: number) {
method setup (line 1195) | setup() {
method data (line 1217) | data() {
method example (line 1221) | example() {}
FILE: types/test/v3/reactivity-test.ts
function plainType (line 20) | function plainType(arg: number | Ref<number>) {
function bailType (line 81) | function bailType(arg: HTMLElement | Ref<HTMLElement>) {
function withSymbol (line 105) | function withSymbol() {
type Status (line 158) | type Status = 'initial' | 'ready' | 'invalidating'
type AppData (line 247) | interface AppData {
function testUnrefGenerics (line 270) | function testUnrefGenerics<T>(p: T | Ref<T>) {
class Test (line 341) | class Test<T> {
type Steps (line 392) | type Steps = { step: '1' } | { step: '2' }
FILE: types/test/v3/setup-test.ts
method setup (line 9) | setup(props) {
method setup (line 18) | setup(props) {
method setup (line 26) | setup(_props, ctx) {
method setup (line 43) | setup(props) {
method setup (line 59) | setup(props) {
method setup (line 68) | setup(_props, ctx) {
method foo (line 77) | foo() {
method data (line 89) | data() {
method setup (line 92) | setup(props) {
method setup (line 102) | setup() {}
FILE: types/test/v3/watch-test.ts
type Steps (line 82) | type Steps = { step: '1' } | { step: '2' }
FILE: types/test/vue-test.ts
class Test (line 4) | class Test extends Vue {
method testProperties (line 7) | testProperties() {
method testReification (line 30) | testReification() {
method testMethods (line 37) | testMethods() {
method testConfig (line 62) | static testConfig() {
method testMethods (line 84) | static testMethods() {
method data (line 127) | data() {
method shouted (line 133) | shouted(): string {
method getMoreExcited (line 138) | getMoreExcited() {
method message (line 143) | message(a: string) {
method render (line 152) | render(createElement, ctxt) {
method render (line 159) | render(h, ctx) {
method data (line 168) | data() {
method foo (line 175) | foo() {
method lower (line 183) | lower(): string {
method foo (line 205) | foo() {}
method mounted (line 207) | mounted() {
method render (line 211) | render(h): VNode {
class Decorated (line 219) | @decorate
method render (line 229) | render(h) {
method data (line 261) | data() {
method bar (line 267) | bar() {
method hello (line 274) | hello(n: number) {}
method created (line 278) | created() {
FILE: types/umd.d.ts
type CreateElement (line 13) | type CreateElement = V.CreateElement
type VueConstructor (line 14) | type VueConstructor<V extends Vue = Vue> = V.VueConstructor<V>
type Component (line 17) | type Component<
type AsyncComponent (line 23) | type AsyncComponent<
type ComponentOptions (line 29) | type ComponentOptions<
type FunctionalComponentOptions (line 37) | type FunctionalComponentOptions<
type RenderContext (line 41) | type RenderContext<Props = DefaultProps> = V.RenderContext<Props>
type PropType (line 42) | type PropType<T> = V.PropType<T>
type PropOptions (line 43) | type PropOptions<T = any> = V.PropOptions<T>
type ComputedOptions (line 44) | type ComputedOptions<T> = V.ComputedOptions<T>
type WatchHandler (line 45) | type WatchHandler<T> = V.WatchHandler<T>
type WatchOptions (line 46) | type WatchOptions = V.WatchOptions
type WatchOptionsWithHandler (line 47) | type WatchOptionsWithHandler<T> = V.WatchOptionsWithHandler<T>
type DirectiveFunction (line 48) | type DirectiveFunction = V.DirectiveFunction
type DirectiveOptions (line 49) | type DirectiveOptions = V.DirectiveOptions
type PluginFunction (line 52) | type PluginFunction<T> = V.PluginFunction<T>
type PluginObject (line 53) | type PluginObject<T> = V.PluginObject<T>
type VNodeChildren (line 56) | type VNodeChildren = V.VNodeChildren
type VNodeChildrenArrayContents (line 57) | type VNodeChildrenArrayContents = V.VNodeChildrenArrayContents
type VNode (line 58) | type VNode = V.VNode
type VNodeComponentOptions (line 59) | type VNodeComponentOptions = V.VNodeComponentOptions
type VNodeData (line 60) | type VNodeData = V.VNodeData
type VNodeDirective (line 61) | type VNodeDirective = V.VNodeDirective
class Vue (line 64) | class Vue extends V.default {}
FILE: types/v3-component-options.d.ts
type ComponentCustomOptions (line 30) | interface ComponentCustomOptions {}
type ComputedGetter (line 32) | type ComputedGetter<T> = (ctx?: any) => T
type ComputedSetter (line 33) | type ComputedSetter<T> = (v: T) => void
type WritableComputedOptions (line 35) | interface WritableComputedOptions<T> {
type ComputedOptions (line 40) | type ComputedOptions = Record<
type MethodOptions (line 45) | interface MethodOptions {
type SetupFunction (line 49) | type SetupFunction<
type ExtractOptionProp (line 59) | type ExtractOptionProp<T> = T extends ComponentOptionsBase<
type ComponentOptionsBase (line 75) | interface ComponentOptionsBase<
type ComponentOptionsMixin (line 119) | type ComponentOptionsMixin = ComponentOptionsBase<
type ExtractComputedReturns (line 132) | type ExtractComputedReturns<T extends any> = {
type ComponentOptionsWithProps (line 140) | type ComponentOptionsWithProps<
type ComponentOptionsWithArrayProps (line 178) | type ComponentOptionsWithArrayProps<
type ComponentOptionsWithoutProps (line 215) | type ComponentOptionsWithoutProps<
type WithLegacyAPI (line 251) | type WithLegacyAPI<T, D, C, M, Props> = T &
FILE: types/v3-component-props.d.ts
type ComponentPropsOptions (line 3) | type ComponentPropsOptions<P = Data> =
type ComponentObjectPropsOptions (line 7) | type ComponentObjectPropsOptions<P = Data> = {
type Prop (line 11) | type Prop<T, D = T> = PropOptions<T, D> | PropType<T>
type DefaultFactory (line 13) | type DefaultFactory<T> = () => T | null | undefined
type PropOptions (line 15) | interface PropOptions<T = any, D = T> {
type PropType (line 22) | type PropType<T> = PropConstructor<T> | PropConstructor<T>[]
type PropConstructor (line 24) | type PropConstructor<T> =
type RequiredKeys (line 29) | type RequiredKeys<T> = {
type OptionalKeys (line 39) | type OptionalKeys<T> = Exclude<keyof T, RequiredKeys<T>>
type ExtractFunctionPropType (line 41) | type ExtractFunctionPropType<
type ExtractCorrectPropType (line 47) | type ExtractCorrectPropType<T> = T extends Function
type InferPropType (line 51) | type InferPropType<T> = [T] extends [null]
type ExtractPropTypes (line 71) | type ExtractPropTypes<O> = {
type DefaultKeys (line 79) | type DefaultKeys<T> = {
type ExtractDefaultPropTypes (line 96) | type ExtractDefaultPropTypes<O> = O extends object
FILE: types/v3-component-public-instance.d.ts
type ComponentCustomProperties (line 32) | interface ComponentCustomProperties {}
type ComponentInstance (line 34) | type ComponentInstance = InstanceType<VueConstructor>
type OptionTypesKeys (line 36) | type OptionTypesKeys = 'P' | 'B' | 'D' | 'C' | 'M' | 'Defaults'
type OptionTypesType (line 38) | type OptionTypesType<
type IsDefaultMixinComponent (line 54) | type IsDefaultMixinComponent<T> = T extends ComponentOptionsMixin
type MixinToOptionTypes (line 60) | type MixinToOptionTypes<T> = T extends ComponentOptionsBase<
type ExtractMixin (line 78) | type ExtractMixin<T> = {
type IntersectionMixin (line 82) | type IntersectionMixin<T> = IsDefaultMixinComponent<T> extends true
type UnwrapMixinsType (line 86) | type UnwrapMixinsType<
type EnsureNonVoid (line 91) | type EnsureNonVoid<T> = T extends void ? {} : T
type CreateComponentPublicInstance (line 93) | type CreateComponentPublicInstance<
type ComponentPublicInstance (line 129) | type ComponentPublicInstance<
type Vue3Instance (line 167) | interface Vue3Instance<
type MergedHook (line 187) | type MergedHook<T = () => void> = T | T[]
type MergedComponentOptionsOverride (line 189) | type MergedComponentOptionsOverride = {
type DebuggerHook (line 209) | type DebuggerHook = (e: DebuggerEvent) => void
type ErrorCapturedHook (line 211) | type ErrorCapturedHook<TError = unknown> = (
type ComponentPublicInstanceConstructor (line 217) | type ComponentPublicInstanceConstructor<
FILE: types/v3-define-async-component.d.ts
type AsyncComponentResolveResult (line 3) | type AsyncComponentResolveResult<T = Component> = T | { default: T } // ...
type AsyncComponentLoader (line 5) | type AsyncComponentLoader<T = any> = () => Promise<
type AsyncComponentOptions (line 9) | interface AsyncComponentOptions {
FILE: types/v3-define-component.d.ts
type DefineComponent (line 23) | type DefineComponent<
FILE: types/v3-directive.d.ts
type DirectiveModifiers (line 3) | type DirectiveModifiers = Record<string, boolean>
type DirectiveBinding (line 5) | interface DirectiveBinding<V> extends Readonly<VNodeDirective> {
type DirectiveHook (line 11) | type DirectiveHook<T = any, Prev = VNode | null, V = any> = (
type ObjectDirective (line 18) | interface ObjectDirective<T = any, V = any> {
type FunctionDirective (line 25) | type FunctionDirective<T = any, V = any> = DirectiveHook<T, any, V>
type Directive (line 27) | type Directive<T = any, V = any> =
FILE: types/v3-setup-context.d.ts
type Slot (line 5) | type Slot = (...args: any[]) => VNode[]
type Slots (line 7) | type Slots = Record<string, Slot | undefined>
type ObjectEmitsOptions (line 9) | type ObjectEmitsOptions = Record<
type EmitsOptions (line 14) | type EmitsOptions = ObjectEmitsOptions | string[]
type EmitFn (line 16) | type EmitFn<
type SetupContext (line 32) | interface SetupContext<E extends EmitsOptions = {}> {
FILE: types/v3-setup-helpers.d.ts
type NotUndefined (line 96) | type NotUndefined<T> = T extends undefined ? never : T
type InferDefaults (line 98) | type InferDefaults<T> = {
type InferDefault (line 102) | type InferDefault<P, T> = T extends
type PropsWithDefaults (line 112) | type PropsWithDefaults<Base, Defaults> = Base & {
type _defineProps (line 144) | type _defineProps = typeof defineProps
type _defineEmits (line 145) | type _defineEmits = typeof defineEmits
type _defineExpose (line 146) | type _defineExpose = typeof defineExpose
type _withDefaults (line 147) | type _withDefaults = typeof withDefaults
FILE: types/vnode.d.ts
type ComponentCustomProps (line 10) | interface ComponentCustomProps {}
type AllowedComponentProps (line 15) | interface AllowedComponentProps {
type ScopedSlot (line 20) | type ScopedSlot = (props: any) => ScopedSlotReturnValue
type ScopedSlotReturnValue (line 21) | type ScopedSlotReturnValue =
type ScopedSlotReturnArray (line 29) | interface ScopedSlotReturnArray extends Array<ScopedSlotReturnValue> {}
type NormalizedScopedSlot (line 32) | type NormalizedScopedSlot = (props: any) => ScopedSlotChildren
type ScopedSlotChildren (line 33) | type ScopedSlotChildren = VNode[] | undefined
type VNodeChildren (line 36) | type VNodeChildren =
type VNodeChildrenArrayContents (line 44) | interface VNodeChildrenArrayContents
type VNode (line 47) | interface VNode {
type VNodeComponentOptions (line 65) | interface VNodeComponentOptions {
type VNodeRef (line 73) | type VNodeRef =
type VNodeData (line 81) | interface VNodeData {
type VNodeDirective (line 108) | interface VNodeDirective {
FILE: types/vue.d.ts
type CreateElement (line 27) | interface CreateElement {
type NeverFallback (line 47) | type NeverFallback<T, D> = [T] extends [never] ? D : T
type Vue (line 49) | interface Vue<
type CombinedVueInstance (line 106) | type CombinedVueInstance<
type ExtendedVue (line 128) | type ExtendedVue<
type VueConfiguration (line 151) | interface VueConfiguration {
type VueConstructor (line 164) | interface VueConstructor<V extends Vue = Vue> {
Condensed preview — 502 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,433K chars).
[
{
"path": ".editorconfig",
"chars": 245,
"preview": "# https://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninser"
},
{
"path": ".git-blame-ignore-revs",
"chars": 152,
"preview": "# chore: move to typescript\naf9fc2bcff31d5baa413039818a9b3e011deccaf\n# workflow: remove eslint, apply prettier\n72aed6a14"
},
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 1428,
"preview": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, we pledge to respect all people who cont"
},
{
"path": ".github/COMMIT_CONVENTION.md",
"chars": 2934,
"preview": "## Git Commit Message Convention\n\n> This is adapted from [Angular's commit convention](https://github.com/conventional-c"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 7924,
"preview": "# Vue.js Contributing Guide\n\nHi! I'm really excited that you are interested in contributing to Vue.js. Before submitting"
},
{
"path": ".github/FUNDING.yml",
"chars": 233,
"preview": "# These are supported funding model platforms\n\ngithub: [yyx990803, posva]\npatreon: evanyou\nopen_collective: vuejs\nko_fi:"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 469,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Vue 2 has reached EOL!\n url: https://v2.vuejs.org/eol/\n about"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1240,
"preview": "<!--\nPlease make sure to read the Pull Request Guidelines:\nhttps://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md"
},
{
"path": ".github/workflows/ci.yml",
"chars": 1828,
"preview": "name: 'ci'\non:\n push:\n branches:\n - main\n pull_request:\n branches:\n - main\njobs:\n unit-test:\n runs"
},
{
"path": ".github/workflows/release-tag.yml",
"chars": 601,
"preview": "on:\n push:\n tags:\n - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10\n\nname: Create Release\n\njobs:\n bui"
},
{
"path": ".gitignore",
"chars": 379,
"preview": ".DS_Store\nnode_modules\n*.log\nexplorations\nTODOs.md\nRELEASE_NOTE*.md\npackages/server-renderer/basic.js\npackages/server-re"
},
{
"path": ".prettierrc",
"chars": 88,
"preview": "semi: false\nsingleQuote: true\nprintWidth: 80\ntrailingComma: 'none'\narrowParens: 'avoid'\n"
},
{
"path": "BACKERS.md",
"chars": 490,
"preview": "<h1 align=\"center\">Sponsors & Backers</h1>\n\nVue.js is an MIT-licensed open source project with its ongoing developme"
},
{
"path": "CHANGELOG.md",
"chars": 159127,
"preview": "## [2.7.16 Swan Song](https://github.com/vuejs/vue/compare/v2.7.16-beta.2...v2.7.16) (2023-12-24)\n\n\n### Bug Fixes\n\n* **l"
},
{
"path": "LICENSE",
"chars": 1091,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2013-present, Yuxi (Evan) You\n\nPermission is hereby granted, free of charge, to any"
},
{
"path": "README.md",
"chars": 7873,
"preview": "## Vue 2 has reached End of Life\n\n**You are looking at the now inactive repository for Vue 2. The actively maintained re"
},
{
"path": "api-extractor.json",
"chars": 1165,
"preview": "{\n \"$schema\": \"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json\",\n\n \"projectFol"
},
{
"path": "api-extractor.tsconfig.json",
"chars": 104,
"preview": "{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"baseUrl\": \"./temp\",\n \"types\": []\n }\n}\n"
},
{
"path": "benchmarks/big-table/demo.css",
"chars": 187,
"preview": "form {\n margin-bottom: 15px;\n}\n\ntd.hidden {\n color: #ccc;\n}\n\ntable.filtered td.item {\n background-color: #FFFFBF;\n}\n\n"
},
{
"path": "benchmarks/big-table/index.html",
"chars": 4818,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title></title>\n <script src=\"../../dist/vue"
},
{
"path": "benchmarks/big-table/style.css",
"chars": 9233,
"preview": "@font-face {\n font-family: octicons-anchor;\n src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQA"
},
{
"path": "benchmarks/dbmon/ENV.js",
"chars": 5807,
"preview": "var ENV = ENV || (function() {\n\n var first = true;\n var counter = 0;\n var data;\n var _base;\n (_base = String.protot"
},
{
"path": "benchmarks/dbmon/app.js",
"chars": 247,
"preview": "var app = new Vue({\n el: '#app',\n data: {\n databases: []\n }\n})\n\nfunction loadSamples() {\n app.databases = Object."
},
{
"path": "benchmarks/dbmon/index.html",
"chars": 1188,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n<meta name=\"description\" content=\"dbmon vue\" />\n<link href=\"./lib/styles.css\" rel=\"stylesh"
},
{
"path": "benchmarks/dbmon/lib/memory-stats.js",
"chars": 2989,
"preview": "/**\n * @author mrdoob / http://mrdoob.com/\n * @author jetienne / http://jetienne.com/\n * @author paulirish / http://paul"
},
{
"path": "benchmarks/dbmon/lib/monitor.js",
"chars": 1856,
"preview": "var Monitoring = Monitoring || (function() {\n\n var stats = new MemoryStats();\n stats.domElement.style.position = 'fixe"
},
{
"path": "benchmarks/dbmon/lib/styles.css",
"chars": 1881,
"preview": "body {color:#333;font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;margin:0;"
},
{
"path": "benchmarks/reorder-list/index.html",
"chars": 2779,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue benchmark</title>\n </head>\n <body>"
},
{
"path": "benchmarks/ssr/README.md",
"chars": 871,
"preview": "# Vue.js SSR benchmark\n\nThis benchmark renders a table of 1000 rows with 10 columns (10k components), with around 30k no"
},
{
"path": "benchmarks/ssr/common.js",
"chars": 1620,
"preview": "'use strict'\n\nconst self = (global || root) // eslint-disable-line\n\nself.performance = {\n now: function () {\n var hr"
},
{
"path": "benchmarks/ssr/renderToStream.js",
"chars": 821,
"preview": "/* eslint-disable no-unused-vars */\n\n'use strict'\n\nprocess.env.NODE_ENV = 'production'\n\nconst Vue = require('../../dist/"
},
{
"path": "benchmarks/ssr/renderToString.js",
"chars": 594,
"preview": "'use strict'\n\nprocess.env.NODE_ENV = 'production'\n\nconst Vue = require('../../dist/vue.runtime.common.js')\nconst createR"
},
{
"path": "benchmarks/svg/index.html",
"chars": 2107,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>vue.js version</title>\n <script src=\"https://cdn.jsdelivr.net/stats.js"
},
{
"path": "benchmarks/uptime/index.html",
"chars": 5240,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue benchmark</title>\n <style type=\"t"
},
{
"path": "compiler-sfc/index.d.ts",
"chars": 34,
"preview": "export * from '@vue/compiler-sfc'\n"
},
{
"path": "compiler-sfc/index.js",
"chars": 46,
"preview": "module.exports = require('@vue/compiler-sfc')\n"
},
{
"path": "compiler-sfc/index.mjs",
"chars": 34,
"preview": "export * from '@vue/compiler-sfc'\n"
},
{
"path": "compiler-sfc/package.json",
"chars": 75,
"preview": "{\n \"main\": \"index.js\",\n \"module\": \"index.mjs\",\n \"types\": \"index.d.ts\"\n}\n"
},
{
"path": "examples/classic/commits/app.js",
"chars": 857,
"preview": "var apiURL = 'https://api.github.com/repos/vuejs/vue/commits?per_page=3&sha='\n\n/**\n * Actual demo\n */\n\nnew Vue({\n el: '"
},
{
"path": "examples/classic/commits/index.html",
"chars": 1404,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <title>Vue.js github commits example</title>\n <style>\n #demo {\n font-"
},
{
"path": "examples/classic/elastic-header/index.html",
"chars": 3604,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"initial-scale=1,"
},
{
"path": "examples/classic/elastic-header/style.css",
"chars": 846,
"preview": "h1 {\n font-weight: 300;\n font-size: 1.8em;\n margin-top: 0;\n}\na {\n color: #fff;\n}\n.draggable-header-view {\n backgrou"
},
{
"path": "examples/classic/firebase/app.js",
"chars": 1379,
"preview": "var emailRE = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.["
},
{
"path": "examples/classic/firebase/index.html",
"chars": 1270,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Vue.js firebase + validation example</title>\n <meta charset=\"utf"
},
{
"path": "examples/classic/firebase/style.css",
"chars": 431,
"preview": "body {\n font-family: Helvetica, Arial, sans-serif;\n}\n\nul {\n padding: 0;\n}\n\n.user {\n height: 30px;\n line-height: 30px"
},
{
"path": "examples/classic/grid/grid.js",
"chars": 1629,
"preview": "// register the grid component\nVue.component('demo-grid', {\n template: '#grid-template',\n replace: true,\n props: {\n "
},
{
"path": "examples/classic/grid/index.html",
"chars": 1366,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js grid component example</title>\n "
},
{
"path": "examples/classic/grid/style.css",
"chars": 902,
"preview": "body {\n font-family: Helvetica Neue, Arial, sans-serif;\n font-size: 14px;\n color: #444;\n}\n\ntable {\n border: 2px soli"
},
{
"path": "examples/classic/markdown/index.html",
"chars": 988,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js markdown editor example</title>\n "
},
{
"path": "examples/classic/markdown/style.css",
"chars": 564,
"preview": "html, body, #editor {\n margin: 0;\n height: 100%;\n font-family: 'Helvetica Neue', Arial, sans-serif;\n color: #333;\n}\n"
},
{
"path": "examples/classic/modal/index.html",
"chars": 1913,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js modal component example</title>\n "
},
{
"path": "examples/classic/modal/style.css",
"chars": 1051,
"preview": ".modal-mask {\n position: fixed;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color"
},
{
"path": "examples/classic/move-animations/index.html",
"chars": 2439,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Move Animations</title>\n <style>\n "
},
{
"path": "examples/classic/select2/index.html",
"chars": 2174,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js wrapper component example (jquery"
},
{
"path": "examples/classic/svg/index.html",
"chars": 1668,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js SVG graph example</title>\n <li"
},
{
"path": "examples/classic/svg/style.css",
"chars": 403,
"preview": "body {\n font-family: Helvetica Neue, Arial, sans-serif;\n}\n\npolygon {\n fill: #42b983;\n opacity: .75;\n}\n\ncircle {"
},
{
"path": "examples/classic/svg/svg.js",
"chars": 1850,
"preview": "// The raw data to observe\nvar globalStats = [\n { label: 'A', value: 100 },\n { label: 'B', value: 100 },\n { label: 'C"
},
{
"path": "examples/classic/todomvc/app.js",
"chars": 3376,
"preview": "// Full spec-compliant TodoMVC with localStorage persistence\n// and hash-based routing in ~150 lines.\n\n// localStorage p"
},
{
"path": "examples/classic/todomvc/index.html",
"chars": 2724,
"preview": "<!doctype html>\n<html data-framework=\"vue\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js • TodoMVC</title>\n "
},
{
"path": "examples/classic/todomvc/readme.md",
"chars": 932,
"preview": "# Vue.js TodoMVC Example\n\n> Vue.js is a library for building interactive web interfaces. \nIt provides data-driven, nesta"
},
{
"path": "examples/classic/tree/index.html",
"chars": 1423,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Vue.js tree view example</title>\n <st"
},
{
"path": "examples/classic/tree/tree.js",
"chars": 1304,
"preview": "// demo data\nvar data = {\n name: 'My Tree',\n children: [\n { name: 'hello' },\n { name: 'wat' },\n {\n name:"
},
{
"path": "examples/composition/commits.html",
"chars": 1755,
"preview": "<script src=\"../../dist/vue.min.js\"></script>\n\n<div id=\"demo\">\n <h1>Latest Vue.js Commits</h1>\n <template v-for=\"branc"
},
{
"path": "examples/composition/grid.html",
"chars": 3482,
"preview": "<script src=\"../../dist/vue.min.js\"></script>\n\n<!-- DemoGrid component template -->\n<script type=\"text/x-template\" id=\"g"
},
{
"path": "examples/composition/markdown.html",
"chars": 1299,
"preview": "<script src=\"../../node_modules/marked/marked.min.js\"></script>\n<script src=\"../../node_modules/lodash/lodash.min.js\"></"
},
{
"path": "examples/composition/svg.html",
"chars": 3561,
"preview": "<script src=\"../../dist/vue.min.js\"></script>\n<script>\n const { ref, computed, createApp } = Vue\n\n // math helper...\n "
},
{
"path": "examples/composition/todomvc.html",
"chars": 5893,
"preview": "<script src=\"../../dist/vue.min.js\"></script>\n<link\n rel=\"stylesheet\"\n href=\"../../node_modules/todomvc-app-css/index."
},
{
"path": "examples/composition/tree.html",
"chars": 2469,
"preview": "<script src=\"../../dist/vue.min.js\"></script>\n\n<!-- item template -->\n<script type=\"text/x-template\" id=\"item-template\">"
},
{
"path": "package.json",
"chars": 4542,
"preview": "{\n \"name\": \"vue\",\n \"version\": \"2.7.16\",\n \"packageManager\": \"pnpm@8.9.2\",\n \"description\": \"Reactive, component-orient"
},
{
"path": "packages/compiler-sfc/api-extractor.json",
"chars": 1193,
"preview": "{\n \"$schema\": \"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json\",\n\n \"projectFol"
},
{
"path": "packages/compiler-sfc/package.json",
"chars": 913,
"preview": "{\n \"name\": \"@vue/compiler-sfc\",\n \"version\": \"2.7.16\",\n \"description\": \"compiler-sfc for Vue 2\",\n \"main\": \"dist/compi"
},
{
"path": "packages/compiler-sfc/src/babelUtils.ts",
"chars": 10739,
"preview": "// https://github.com/vuejs/core/blob/main/packages/compiler-core/src/babelUtils.ts\n\n// should only use types from @babe"
},
{
"path": "packages/compiler-sfc/src/compileScript.ts",
"chars": 57612,
"preview": "import MagicString from 'magic-string'\nimport LRU from 'lru-cache'\nimport { walkIdentifiers, isFunctionType } from './ba"
},
{
"path": "packages/compiler-sfc/src/compileStyle.ts",
"chars": 3515,
"preview": "const postcss = require('postcss')\nimport { ProcessOptions, LazyResult } from 'postcss'\nimport trimPlugin from './styleP"
},
{
"path": "packages/compiler-sfc/src/compileTemplate.ts",
"chars": 5762,
"preview": "import { BindingMetadata, TemplateCompiler } from './types'\nimport assetUrlsModule, {\n AssetURLOptions,\n TransformAsse"
},
{
"path": "packages/compiler-sfc/src/cssVars.ts",
"chars": 4621,
"preview": "import { BindingMetadata } from './types'\nimport { SFCDescriptor } from './parseComponent'\nimport { PluginCreator } from"
},
{
"path": "packages/compiler-sfc/src/index.ts",
"chars": 1103,
"preview": "// API\nexport { parse } from './parse'\nexport { compileTemplate } from './compileTemplate'\nexport { compileStyle, compil"
},
{
"path": "packages/compiler-sfc/src/parse.ts",
"chars": 3013,
"preview": "import { SourceMapGenerator } from 'source-map'\nimport { RawSourceMap, TemplateCompiler } from './types'\nimport {\n pars"
},
{
"path": "packages/compiler-sfc/src/parseComponent.ts",
"chars": 5729,
"preview": "import deindent from 'de-indent'\nimport { parseHTML } from 'compiler/parser/html-parser'\nimport { makeMap } from 'shared"
},
{
"path": "packages/compiler-sfc/src/prefixIdentifiers.ts",
"chars": 2265,
"preview": "import MagicString from 'magic-string'\nimport { parseExpression, ParserOptions, ParserPlugin } from '@babel/parser'\nimpo"
},
{
"path": "packages/compiler-sfc/src/rewriteDefault.ts",
"chars": 3930,
"preview": "import { parse, ParserPlugin } from '@babel/parser'\nimport MagicString from 'magic-string'\n\nconst defaultExportRE = /((?"
},
{
"path": "packages/compiler-sfc/src/stylePlugins/scoped.ts",
"chars": 6228,
"preview": "import { PluginCreator, Rule, AtRule } from 'postcss'\nimport selectorParser from 'postcss-selector-parser'\n\nconst animat"
},
{
"path": "packages/compiler-sfc/src/stylePlugins/trim.ts",
"chars": 433,
"preview": "import { PluginCreator } from 'postcss'\n\nconst trimPlugin: PluginCreator<{}> = () => {\n return {\n postcssPlugin: 'vu"
},
{
"path": "packages/compiler-sfc/src/stylePreprocessors.ts",
"chars": 3251,
"preview": "import merge from 'merge-source-map'\nimport { RawSourceMap } from 'source-map'\nimport { isFunction } from 'shared/util'\n"
},
{
"path": "packages/compiler-sfc/src/templateCompilerModules/assetUrl.ts",
"chars": 2110,
"preview": "// vue compiler module for transforming `<tag>:<attribute>` to `require`\n\nimport { urlToRequire } from './utils'\nimport "
},
{
"path": "packages/compiler-sfc/src/templateCompilerModules/srcset.ts",
"chars": 2234,
"preview": "// vue compiler module for transforming `img:srcset` to a number of `require`s\n\nimport { urlToRequire } from './utils'\ni"
},
{
"path": "packages/compiler-sfc/src/templateCompilerModules/utils.ts",
"chars": 2803,
"preview": "import { TransformAssetUrlsOptions } from './assetUrl'\nimport { UrlWithStringQuery, parse as uriParse } from 'url'\nimpor"
},
{
"path": "packages/compiler-sfc/src/types.ts",
"chars": 1708,
"preview": "import { CompilerOptions, CompiledResult } from 'types/compiler'\nimport { SFCDescriptor } from './parseComponent'\n\nexpor"
},
{
"path": "packages/compiler-sfc/src/warn.ts",
"chars": 401,
"preview": "const hasWarned: Record<string, boolean> = {}\n\nexport function warnOnce(msg: string) {\n const isNodeProd =\n typeof p"
},
{
"path": "packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap",
"chars": 20398,
"preview": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`SFC analyze <script> bindings > auto name infere"
},
{
"path": "packages/compiler-sfc/test/__snapshots__/cssVars.spec.ts.snap",
"chars": 4467,
"preview": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`CSS vars injection > codegen > <script> w/ defau"
},
{
"path": "packages/compiler-sfc/test/compileScript.spec.ts",
"chars": 46894,
"preview": "import { BindingTypes } from '../src/types'\nimport { compile, assertCode } from './util'\n\ndescribe('SFC compile <script "
},
{
"path": "packages/compiler-sfc/test/compileStyle.spec.ts",
"chars": 4628,
"preview": "import { parse } from '../src/parse'\nimport { compileStyle, compileStyleAsync } from '../src/compileStyle'\n\ntest('prepro"
},
{
"path": "packages/compiler-sfc/test/compileTemplate.spec.ts",
"chars": 7079,
"preview": "import { parse } from '../src/parse'\nimport { SFCBlock } from '../src/parseComponent'\nimport { compileTemplate } from '."
},
{
"path": "packages/compiler-sfc/test/cssVars.spec.ts",
"chars": 6646,
"preview": "import { compileStyle, parse } from '../src'\nimport { mockId, compile, assertCode } from './util'\n\ndescribe('CSS vars in"
},
{
"path": "packages/compiler-sfc/test/parseComponent.spec.ts",
"chars": 7586,
"preview": "import { WarningMessage } from 'types/compiler'\nimport { parseComponent } from '../src/parseComponent'\n\ndescribe('Single"
},
{
"path": "packages/compiler-sfc/test/prefixIdentifiers.spec.ts",
"chars": 2412,
"preview": "import { prefixIdentifiers } from '../src/prefixIdentifiers'\nimport { compile } from 'web/entry-compiler'\nimport { forma"
},
{
"path": "packages/compiler-sfc/test/rewriteDefault.spec.ts",
"chars": 7992,
"preview": "import { rewriteDefault } from '../src'\n\ndescribe('compiler sfc: rewriteDefault', () => {\n test('without export default"
},
{
"path": "packages/compiler-sfc/test/stylePluginScoped.spec.ts",
"chars": 3350,
"preview": "import { compileStyle } from '../src/compileStyle'\n\n// vue-loader/#1370\ntest('spaces after selector', () => {\n const { "
},
{
"path": "packages/compiler-sfc/test/tsconfig.json",
"chars": 140,
"preview": "{\n \"extends\": \"../../../tsconfig.json\",\n \"compilerOptions\": {\n \"types\": [\"node\", \"vitest/globals\"]\n },\n \"include\""
},
{
"path": "packages/compiler-sfc/test/util.ts",
"chars": 734,
"preview": "import {\n parse,\n compileScript,\n type SFCParseOptions,\n type SFCScriptCompileOptions\n} from '../src'\nimport { parse"
},
{
"path": "packages/server-renderer/README.md",
"chars": 394,
"preview": "# vue-server-renderer\n\n> This package is auto-generated. For pull requests please see [src/platforms/web/entry-server-re"
},
{
"path": "packages/server-renderer/client-plugin.d.ts",
"chars": 99,
"preview": "import { WebpackPlugin } from './types/plugin'\ndeclare const Plugin: WebpackPlugin\nexport = Plugin\n"
},
{
"path": "packages/server-renderer/index.js",
"chars": 668,
"preview": "try {\n var vueVersion = require('vue').version\n} catch (e) {}\n\nvar packageName = require('./package.json').name\nvar pac"
},
{
"path": "packages/server-renderer/package.json",
"chars": 986,
"preview": "{\n \"name\": \"vue-server-renderer\",\n \"version\": \"2.7.16\",\n \"description\": \"server renderer for Vue 2.0\",\n \"main\": \"ind"
},
{
"path": "packages/server-renderer/server-plugin.d.ts",
"chars": 99,
"preview": "import { WebpackPlugin } from './types/plugin'\ndeclare const Plugin: WebpackPlugin\nexport = Plugin\n"
},
{
"path": "packages/server-renderer/src/bundle-renderer/create-bundle-renderer.ts",
"chars": 4398,
"preview": "import { createPromiseCallback } from '../util'\nimport { createBundleRunner } from './create-bundle-runner'\nimport type "
},
{
"path": "packages/server-renderer/src/bundle-renderer/create-bundle-runner.ts",
"chars": 4999,
"preview": "import { isPlainObject } from 'shared/util'\n\nconst vm = require('vm')\nconst path = require('path')\nconst resolve = requi"
},
{
"path": "packages/server-renderer/src/bundle-renderer/source-map-support.ts",
"chars": 1305,
"preview": "const SourceMapConsumer = require('source-map').SourceMapConsumer\n\nconst filenameRE = /\\(([^)]+\\.js):(\\d+):(\\d+)\\)$/\n\nex"
},
{
"path": "packages/server-renderer/src/compiler.ts",
"chars": 265,
"preview": "import { baseOptions } from 'web/compiler/options'\nimport { createCompiler } from 'server/optimizing-compiler/index'\n\nco"
},
{
"path": "packages/server-renderer/src/create-basic-renderer.ts",
"chars": 894,
"preview": "import { createWriteFunction } from './write'\nimport { createRenderFunction } from './render'\nimport type { RenderOption"
},
{
"path": "packages/server-renderer/src/create-renderer.ts",
"chars": 4386,
"preview": "import RenderStream from './render-stream'\nimport { createWriteFunction } from './write'\nimport { createRenderFunction }"
},
{
"path": "packages/server-renderer/src/directives/index.ts",
"chars": 90,
"preview": "import show from './show'\nimport model from './model'\n\nexport default {\n show,\n model\n}\n"
},
{
"path": "packages/server-renderer/src/directives/model.ts",
"chars": 1301,
"preview": "import { looseEqual, looseIndexOf } from 'shared/util'\nimport type { VNodeDirective, VNodeWithData } from 'types/vnode'\n"
},
{
"path": "packages/server-renderer/src/directives/show.ts",
"chars": 348,
"preview": "import type { VNodeDirective, VNodeWithData } from 'types/vnode'\n\nexport default function show(node: VNodeWithData, dir:"
},
{
"path": "packages/server-renderer/src/index-basic.ts",
"chars": 335,
"preview": "import modules from './modules/index'\nimport directives from './directives/index'\nimport { isUnaryTag, canBeLeftOpenTag "
},
{
"path": "packages/server-renderer/src/index.ts",
"chars": 893,
"preview": "process.env.VUE_ENV = 'server'\n\nimport { extend } from 'shared/util'\nimport modules from './modules/index'\nimport baseDi"
},
{
"path": "packages/server-renderer/src/modules/attrs.ts",
"chars": 1637,
"preview": "import { escape } from '../util'\n\nimport { isDef, isUndef, extend } from 'shared/util'\n\nimport {\n isBooleanAttr,\n isEn"
},
{
"path": "packages/server-renderer/src/modules/class.ts",
"chars": 330,
"preview": "import { escape } from '../util'\nimport { genClassForVnode } from 'web/util/index'\nimport type { VNodeWithData } from 't"
},
{
"path": "packages/server-renderer/src/modules/dom-props.ts",
"chars": 1419,
"preview": "import VNode from 'core/vdom/vnode'\nimport { renderAttr } from './attrs'\nimport { isDef, isUndef, extend, toString } fro"
},
{
"path": "packages/server-renderer/src/modules/index.ts",
"chars": 167,
"preview": "import attrs from './attrs'\nimport domProps from './dom-props'\nimport klass from './class'\nimport style from './style'\n\n"
},
{
"path": "packages/server-renderer/src/modules/style.ts",
"chars": 1114,
"preview": "import { escape, noUnitNumericStyleProps } from '../util'\nimport { hyphenate } from 'shared/util'\nimport { getStyle } fr"
},
{
"path": "packages/server-renderer/src/optimizing-compiler/codegen.ts",
"chars": 7290,
"preview": "// The SSR codegen is essentially extending the default codegen to handle\n// SSR-optimizable nodes and turn them into st"
},
{
"path": "packages/server-renderer/src/optimizing-compiler/index.ts",
"chars": 597,
"preview": "import { parse } from 'compiler/parser/index'\nimport { generate } from './codegen'\nimport { optimize } from './optimizer"
},
{
"path": "packages/server-renderer/src/optimizing-compiler/modules.ts",
"chars": 3286,
"preview": "import {\n RAW,\n // INTERPOLATION,\n EXPRESSION\n} from './codegen'\n\nimport { propsToAttrMap, isRenderableAttr } from '."
},
{
"path": "packages/server-renderer/src/optimizing-compiler/optimizer.ts",
"chars": 4297,
"preview": "/**\n * In SSR, the vdom tree is generated only once and never patched, so\n * we can optimize most element / trees into p"
},
{
"path": "packages/server-renderer/src/optimizing-compiler/runtime-helpers.ts",
"chars": 3500,
"preview": "import {\n escape,\n isSSRUnsafeAttr,\n propsToAttrMap,\n isRenderableAttr\n} from '../util'\nimport { isObject, extend } "
},
{
"path": "packages/server-renderer/src/render-context.ts",
"chars": 3848,
"preview": "import VNode from 'core/vdom/vnode'\nimport { isUndef } from 'shared/util'\nimport { Component } from 'types/component'\n\nt"
},
{
"path": "packages/server-renderer/src/render-stream.ts",
"chars": 2271,
"preview": "/**\n * Original RenderStream implementation by Sasha Aickin (@aickin)\n * Licensed under the Apache License, Version 2.0\n"
},
{
"path": "packages/server-renderer/src/render.ts",
"chars": 12386,
"preview": "import { escape } from './util'\nimport { SSR_ATTR } from 'shared/constants'\nimport { RenderContext } from './render-cont"
},
{
"path": "packages/server-renderer/src/template-renderer/create-async-file-mapper.ts",
"chars": 1522,
"preview": "/**\n * Creates a mapper that maps components used during a server-side render\n * to async chunk files in the client-side"
},
{
"path": "packages/server-renderer/src/template-renderer/index.ts",
"chars": 9291,
"preview": "const path = require('path')\nconst serialize = require('serialize-javascript')\n\nimport { isJS, isCSS } from '../util'\nim"
},
{
"path": "packages/server-renderer/src/template-renderer/parse-template.ts",
"chars": 932,
"preview": "const compile = require('lodash.template')\nconst compileOptions = {\n escape: /{{([^{][\\s\\S]+?[^}])}}/g,\n interpolate: "
},
{
"path": "packages/server-renderer/src/template-renderer/template-stream.ts",
"chars": 1972,
"preview": "// const Transform = require(\"stream\").Transform;\nimport type TemplateRenderer from './index'\nimport type { ParsedTempla"
},
{
"path": "packages/server-renderer/src/util.ts",
"chars": 3279,
"preview": "import { makeMap } from 'shared/util'\n\nconst isAttr = makeMap(\n 'accept,accept-charset,accesskey,action,align,alt,async"
},
{
"path": "packages/server-renderer/src/webpack-plugin/client.ts",
"chars": 2403,
"preview": "const hash = require('hash-sum')\nconst uniq = require('lodash.uniq')\nimport { isJS, isCSS, getAssetName, onEmit, stripMo"
},
{
"path": "packages/server-renderer/src/webpack-plugin/server.ts",
"chars": 1956,
"preview": "import { validate, isJS, getAssetName, onEmit } from './util'\n\nexport default class VueSSRServerPlugin {\n constructor(o"
},
{
"path": "packages/server-renderer/src/webpack-plugin/util.ts",
"chars": 2093,
"preview": "const { red, yellow } = require('chalk')\nconst webpack = require('webpack')\n\nconst prefix = `[vue-server-renderer-webpac"
},
{
"path": "packages/server-renderer/src/write.ts",
"chars": 1288,
"preview": "const MAX_STACK_DEPTH = 800\nconst noop = _ => _\n\nconst defer =\n typeof process !== 'undefined' && process.nextTick\n "
},
{
"path": "packages/server-renderer/test/async-loader.js",
"chars": 191,
"preview": "const hash = require('hash-sum')\n\nmodule.exports = function (code) {\n const id = hash(this.request) // simulating vue-l"
},
{
"path": "packages/server-renderer/test/compile-with-webpack.ts",
"chars": 1890,
"preview": "import path from 'path'\nimport webpack from 'webpack'\nimport MemoryFS from 'memory-fs'\nimport { RenderOptions } from 'se"
},
{
"path": "packages/server-renderer/test/fixtures/app.js",
"chars": 266,
"preview": "import Vue from '../../../../dist/vue.runtime.common.js'\n\nexport default context => {\n return new Promise(resolve => {\n"
},
{
"path": "packages/server-renderer/test/fixtures/async-bar.js",
"chars": 166,
"preview": "module.exports = {\n beforeCreate() {\n this.$vnode.ssrContext._registeredComponents.add('__MODULE_ID__')\n },\n rende"
},
{
"path": "packages/server-renderer/test/fixtures/async-foo.js",
"chars": 286,
"preview": "// import image and font\nimport './test.css'\nimport font from './test.woff2'\nimport image from './test.png'\n\nexport defa"
},
{
"path": "packages/server-renderer/test/fixtures/cache-opt-out.js",
"chars": 342,
"preview": "import Vue from '../../../../dist/vue.runtime.common.js'\n\nconst app = {\n name: 'app',\n props: ['id'],\n serverCacheKey"
},
{
"path": "packages/server-renderer/test/fixtures/cache.js",
"chars": 315,
"preview": "import Vue from '../../../../dist/vue.runtime.common.js'\n\nconst app = {\n name: 'app',\n props: ['id'],\n serverCacheKey"
},
{
"path": "packages/server-renderer/test/fixtures/error.js",
"chars": 23,
"preview": "throw new Error('foo')\n"
},
{
"path": "packages/server-renderer/test/fixtures/nested-cache.js",
"chars": 976,
"preview": "import Vue from '../../../../dist/vue.runtime.common.js'\n\nfunction createRegisterFn(id) {\n return function (context) {\n"
},
{
"path": "packages/server-renderer/test/fixtures/promise-rejection.js",
"chars": 67,
"preview": "export default () => {\n return Promise.reject(new Error('foo'))\n}\n"
},
{
"path": "packages/server-renderer/test/fixtures/split.js",
"chars": 555,
"preview": "import Vue from '../../../../dist/vue.runtime.common.js'\n\n// async component!\nconst Foo = () => import('./async-foo')\nco"
},
{
"path": "packages/server-renderer/test/fixtures/test.css",
"chars": 0,
"preview": ""
},
{
"path": "packages/server-renderer/test/ssr-basic-renderer.spec.ts",
"chars": 2049,
"preview": "// @vitest-environment node\n\nimport Vue from 'vue'\nimport renderToString from 'server/index-basic'\nimport { _it } from '"
},
{
"path": "packages/server-renderer/test/ssr-bundle-render.spec.ts",
"chars": 9441,
"preview": "// @vitest-environment node\n\nimport { createWebpackBundleRenderer } from './compile-with-webpack'\n\ndescribe('SSR: bundle"
},
{
"path": "packages/server-renderer/test/ssr-reactivity.spec.ts",
"chars": 4571,
"preview": "// @vitest-environment node\n\nimport Vue from 'vue'\nimport {\n reactive,\n ref,\n isReactive,\n shallowRef,\n isRef,\n se"
},
{
"path": "packages/server-renderer/test/ssr-stream.spec.ts",
"chars": 3517,
"preview": "// @vitest-environment node\n\nimport Vue from 'vue'\nimport { createRenderer } from 'server/index'\nimport { _it } from './"
},
{
"path": "packages/server-renderer/test/ssr-string.spec.ts",
"chars": 50049,
"preview": "// @vitest-environment node\n\nimport Vue from 'vue'\nimport VM from 'vm'\nimport { createRenderer } from 'server/index'\nimp"
},
{
"path": "packages/server-renderer/test/ssr-template.spec.ts",
"chars": 18086,
"preview": "// @vitest-environment node\n\nimport Vue from 'vue'\nimport {\n compileWithWebpack,\n createWebpackBundleRenderer\n} from '"
},
{
"path": "packages/server-renderer/test/tsconfig.json",
"chars": 161,
"preview": "{\n \"extends\": \"../../../tsconfig.json\",\n \"compilerOptions\": {\n \"types\": [\"node\", \"vitest/globals\"]\n },\n \"include\""
},
{
"path": "packages/server-renderer/test/utils.ts",
"chars": 490,
"preview": "/**\n * Async callback style it for compatibility with old tests.\n */\nexport function _it(\n desc: string,\n runner: (don"
},
{
"path": "packages/server-renderer/types/index.d.ts",
"chars": 1625,
"preview": "import Vue, { VNode, VNodeDirective } from 'vue'\nimport { Readable } from 'stream'\n\nexport declare function createRender"
},
{
"path": "packages/server-renderer/types/plugin.d.ts",
"chars": 242,
"preview": "import { DefinePlugin } from 'webpack'\n\ninterface WebpackPluginOptions {\n filename?: string\n}\n\nexport interface Webpack"
},
{
"path": "packages/server-renderer/types/test.ts",
"chars": 2764,
"preview": "import Vue, { VNode, VNodeDirective } from '../../../types/index'\nimport VueSSRClientPlugin from '../client-plugin'\nimpo"
},
{
"path": "packages/server-renderer/types/tsconfig.json",
"chars": 301,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"node\",\n \"strict\": t"
},
{
"path": "packages/template-compiler/README.md",
"chars": 6521,
"preview": "# vue-template-compiler\n\n> This package is auto-generated. For pull requests please see [src/platforms/web/entry-compile"
},
{
"path": "packages/template-compiler/index.js",
"chars": 947,
"preview": "try {\n var vueVersion = require('vue').version\n} catch (e) {}\n\nvar packageName = require('./package.json').name\nvar pac"
},
{
"path": "packages/template-compiler/package.json",
"chars": 758,
"preview": "{\n \"name\": \"vue-template-compiler\",\n \"version\": \"2.7.16\",\n \"description\": \"template compiler for Vue 2.0\",\n \"main\": "
},
{
"path": "packages/template-compiler/types/index.d.ts",
"chars": 5183,
"preview": "import { VNode } from 'vue'\n\n/*\n * Template compilation options / results\n */\ninterface CompilerOptions {\n modules?: Mo"
},
{
"path": "packages/template-compiler/types/test.ts",
"chars": 2029,
"preview": "import Vue, { VNode } from 'vue'\nimport {\n compile,\n compileToFunctions,\n ssrCompile,\n ssrCompileToFunctions,\n pars"
},
{
"path": "packages/template-compiler/types/tsconfig.json",
"chars": 259,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"node\",\n \"strict\": t"
},
{
"path": "pnpm-workspace.yaml",
"chars": 27,
"preview": "packages:\n - 'packages/*'\n"
},
{
"path": "scripts/alias.js",
"chars": 403,
"preview": "const path = require('path')\n\nconst resolve = p => path.resolve(__dirname, '../', p)\n\nmodule.exports = {\n vue: resolve("
},
{
"path": "scripts/build.js",
"chars": 2279,
"preview": "const fs = require('fs')\nconst path = require('path')\nconst zlib = require('zlib')\nconst rollup = require('rollup')\ncons"
},
{
"path": "scripts/config.js",
"chars": 8822,
"preview": "const path = require('path')\nconst alias = require('@rollup/plugin-alias')\nconst cjs = require('@rollup/plugin-commonjs'"
},
{
"path": "scripts/feature-flags.js",
"chars": 76,
"preview": "module.exports = {\n NEW_SLOT_SYNTAX: true,\n VBIND_PROP_SHORTHAND: false\n}\n"
},
{
"path": "scripts/gen-release-note.js",
"chars": 434,
"preview": "const version = process.argv[2] || process.env.VERSION\nconst cc = require('conventional-changelog')\nconst file = `./RELE"
},
{
"path": "scripts/git-hooks/commit-msg",
"chars": 483,
"preview": "#!/usr/bin/env bash\n\n# Validate commit log\ncommit_regex='^Merge.+|(feat|fix|docs|style|refactor|perf|test|build|ci|chore"
},
{
"path": "scripts/git-hooks/pre-commit",
"chars": 190,
"preview": "#!/usr/bin/env bash\n\nfiles_to_lint=$(git diff --cached --name-only --diff-filter=ACM | grep '\\.js$')\n\nif [ -n \"$files_to"
},
{
"path": "scripts/release.js",
"chars": 5367,
"preview": "const args = require('minimist')(process.argv.slice(2))\nconst fs = require('fs')\nconst path = require('path')\nconst chal"
},
{
"path": "scripts/verify-commit-msg.js",
"chars": 842,
"preview": "const chalk = require('chalk')\nconst msgPath = process.env.GIT_PARAMS\nconst msg = require('fs').readFileSync(msgPath, 'u"
},
{
"path": "src/compiler/codeframe.ts",
"chars": 1401,
"preview": "const range = 2\n\nexport function generateCodeFrame(\n source: string,\n start: number = 0,\n end: number = source.length"
},
{
"path": "src/compiler/codegen/events.ts",
"chars": 5154,
"preview": "import { ASTElementHandler, ASTElementHandlers } from 'types/compiler'\n\nconst fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^fun"
},
{
"path": "src/compiler/codegen/index.ts",
"chars": 18634,
"preview": "import { genHandlers } from './events'\nimport baseDirectives from '../directives/index'\nimport { camelize, no, extend, c"
},
{
"path": "src/compiler/create-compiler.ts",
"chars": 2520,
"preview": "import { extend } from 'shared/util'\nimport { CompilerOptions, CompiledResult, WarningMessage } from 'types/compiler'\nim"
},
{
"path": "src/compiler/directives/bind.ts",
"chars": 340,
"preview": "import { ASTDirective, ASTElement } from 'types/compiler'\n\nexport default function bind(el: ASTElement, dir: ASTDirectiv"
},
{
"path": "src/compiler/directives/index.ts",
"chars": 131,
"preview": "import on from './on'\nimport bind from './bind'\nimport { noop } from 'shared/util'\n\nexport default {\n on,\n bind,\n clo"
},
{
"path": "src/compiler/directives/model.ts",
"chars": 3136,
"preview": "import { ASTElement, ASTModifiers } from 'types/compiler'\n\n/**\n * Cross-platform code generation for component v-model\n "
},
{
"path": "src/compiler/directives/on.ts",
"chars": 330,
"preview": "import { warn } from 'core/util/index'\nimport { ASTDirective, ASTElement } from 'types/compiler'\n\nexport default functio"
},
{
"path": "src/compiler/error-detector.ts",
"chars": 4293,
"preview": "import { ASTElement, ASTNode } from 'types/compiler'\nimport { dirRE, onRE } from './parser/index'\n\ntype Range = { start?"
},
{
"path": "src/compiler/helpers.ts",
"chars": 5901,
"preview": "import { emptyObject } from 'shared/util'\nimport { ASTElement, ASTModifiers } from 'types/compiler'\nimport { parseFilter"
},
{
"path": "src/compiler/index.ts",
"chars": 834,
"preview": "import { parse } from './parser/index'\nimport { optimize } from './optimizer'\nimport { generate } from './codegen/index'"
},
{
"path": "src/compiler/optimizer.ts",
"chars": 3750,
"preview": "import { makeMap, isBuiltInTag, cached, no } from 'shared/util'\nimport { ASTElement, CompilerOptions, ASTNode } from 'ty"
},
{
"path": "src/compiler/parser/entity-decoder.ts",
"chars": 184,
"preview": "let decoder\n\nexport default {\n decode(html: string): string {\n decoder = decoder || document.createElement('div')\n "
},
{
"path": "src/compiler/parser/filter-parser.ts",
"chars": 2767,
"preview": "const validDivisionCharRE = /[\\w).+\\-_$\\]]/\n\nexport function parseFilters(exp: string): string {\n let inSingle = false\n"
},
{
"path": "src/compiler/parser/html-parser.ts",
"chars": 9785,
"preview": "/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n *"
},
{
"path": "src/compiler/parser/index.ts",
"chars": 27891,
"preview": "import he from 'he'\nimport { parseHTML } from './html-parser'\nimport { parseText } from './text-parser'\nimport { parseFi"
},
{
"path": "src/compiler/parser/text-parser.ts",
"chars": 1488,
"preview": "import { cached } from 'shared/util'\nimport { parseFilters } from './filter-parser'\n\nconst defaultTagRE = /\\{\\{((?:.|\\r?"
},
{
"path": "src/compiler/to-function.ts",
"chars": 3422,
"preview": "import { noop, extend } from 'shared/util'\nimport { warn as baseWarn, tip } from 'core/util/debug'\nimport { generateCode"
},
{
"path": "src/core/components/index.ts",
"chars": 69,
"preview": "import KeepAlive from './keep-alive'\n\nexport default {\n KeepAlive\n}\n"
},
{
"path": "src/core/components/keep-alive.ts",
"chars": 4358,
"preview": "import { isRegExp, isArray, remove } from 'shared/util'\nimport { getFirstComponentChild } from 'core/vdom/helpers/index'"
},
{
"path": "src/core/config.ts",
"chars": 2793,
"preview": "import { no, noop, identity } from 'shared/util'\n\nimport { LIFECYCLE_HOOKS } from 'shared/constants'\nimport type { Compo"
}
]
// ... and 302 more files (download for full content)
About this extraction
This page contains the full source code of the vuejs/vue GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 502 files (2.2 MB), approximately 602.1k tokens, and a symbol index with 2081 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.