├── test ├── ssr │ ├── fixtures │ │ ├── test.css │ │ ├── test.png │ │ ├── test.woff2 │ │ ├── error.js │ │ ├── promise-rejection.js │ │ ├── async-bar.js │ │ ├── app.js │ │ ├── async-foo.js │ │ ├── cache.js │ │ ├── cache-opt-out.js │ │ ├── split.js │ │ └── nested-cache.js │ ├── .eslintrc │ ├── async-loader.js │ ├── jasmine.js │ └── compile-with-webpack.js ├── unit │ ├── modules │ │ ├── server-compiler │ │ │ ├── optimizer.spec.js │ │ │ └── compiler-options.spec.js │ │ ├── util │ │ │ ├── error.spec.js │ │ │ └── next-tick.spec.js │ │ ├── vdom │ │ │ └── modules │ │ │ │ ├── directive.spec.js │ │ │ │ └── style.spec.js │ │ └── observer │ │ │ └── dep.spec.js │ ├── .eslintrc.json │ ├── index.js │ ├── features │ │ ├── directives │ │ │ ├── cloak.spec.js │ │ │ ├── model-file.spec.js │ │ │ ├── model-parse.spec.js │ │ │ └── pre.spec.js │ │ ├── instance │ │ │ └── init.spec.js │ │ ├── global-api │ │ │ ├── compile.spec.js │ │ │ └── observable.spec.js │ │ └── options │ │ │ ├── comments.spec.js │ │ │ ├── propsData.spec.js │ │ │ ├── parent.spec.js │ │ │ ├── inheritAttrs.spec.js │ │ │ ├── renderError.spec.js │ │ │ ├── render.spec.js │ │ │ ├── methods.spec.js │ │ │ └── name.spec.js │ ├── karma.dev.config.js │ ├── karma.unit.config.js │ ├── karma.base.config.js │ └── karma.cover.config.js ├── e2e │ ├── .eslintrc.json │ ├── specs │ │ ├── basic-ssr.js │ │ ├── basic-ssr.html │ │ ├── markdown.js │ │ ├── commits.js │ │ ├── modal.js │ │ ├── async-edge-cases.js │ │ └── async-edge-cases.html │ └── runner.js ├── helpers │ ├── .eslintrc.json │ ├── vdom.js │ ├── trigger-event.js │ ├── to-equal.js │ ├── classlist.js │ └── test-object-option.js └── weex │ ├── .eslintrc │ ├── cases │ ├── event │ │ ├── click.after.vdom.js │ │ ├── click.before.vdom.js │ │ └── click.vue │ ├── render │ │ ├── sample.vdom.js │ │ ├── class.vdom.js │ │ ├── sample.vue │ │ └── class.vue │ └── recycle-list │ │ ├── v-once.vue │ │ ├── components │ │ ├── footer.vue │ │ ├── banner.vue │ │ ├── stateful-lifecycle.vue │ │ ├── stateful-v-model.vue │ │ ├── stateless.vue │ │ ├── stateful.vue │ │ ├── stateless-with-props.vue │ │ ├── stateful-lifecycle.vdom.js │ │ ├── editor.vue │ │ ├── poster.vue │ │ ├── counter.vue │ │ ├── stateless.vdom.js │ │ ├── stateless-multi-components.vue │ │ ├── stateful-v-model.vdom.js │ │ ├── stateful.vdom.js │ │ ├── stateless-with-props.vdom.js │ │ └── lifecycle.vue │ │ ├── v-once.vdom.js │ │ ├── v-if.vue │ │ ├── v-for.vue │ │ ├── v-else.vue │ │ ├── inline-style.vue │ │ ├── v-on.vdom.js │ │ ├── v-on.vue │ │ ├── v-else-if.vue │ │ ├── v-for-iterator.vue │ │ ├── text-node.vue │ │ ├── classname.vdom.js │ │ ├── v-if.vdom.js │ │ ├── inline-style.vdom.js │ │ ├── v-else.vdom.js │ │ ├── attrs.vue │ │ ├── v-for.vdom.js │ │ ├── v-on-inline.vue │ │ ├── classname.vue │ │ ├── attrs.vdom.js │ │ ├── v-else-if.vdom.js │ │ ├── v-on-inline.vdom.js │ │ ├── text-node.vdom.js │ │ └── v-for-iterator.vdom.js │ ├── jasmine.js │ └── compiler │ └── props.spec.js ├── .eslintignore ├── src ├── platforms │ ├── weex │ │ ├── runtime │ │ │ ├── directives │ │ │ │ └── index.js │ │ │ ├── text-node.js │ │ │ ├── components │ │ │ │ ├── index.js │ │ │ │ └── transition.js │ │ │ ├── modules │ │ │ │ ├── index.js │ │ │ │ ├── attrs.js │ │ │ │ └── events.js │ │ │ ├── patch.js │ │ │ ├── index.js │ │ │ └── recycle-list │ │ │ │ └── render-component-template.js │ │ ├── compiler │ │ │ ├── directives │ │ │ │ ├── index.js │ │ │ │ └── model.js │ │ │ ├── modules │ │ │ │ ├── index.js │ │ │ │ ├── recycle-list │ │ │ │ │ ├── component-root.js │ │ │ │ │ ├── v-once.js │ │ │ │ │ ├── component.js │ │ │ │ │ ├── text.js │ │ │ │ │ ├── v-bind.js │ │ │ │ │ ├── v-on.js │ │ │ │ │ ├── v-for.js │ │ │ │ │ └── recycle-list.js │ │ │ │ ├── append.js │ │ │ │ └── props.js │ │ │ └── index.js │ │ ├── entry-compiler.js │ │ ├── entry-runtime-factory.js │ │ └── util │ │ │ └── index.js │ └── web │ │ ├── entry-runtime.js │ │ ├── runtime │ │ ├── directives │ │ │ └── index.js │ │ ├── components │ │ │ └── index.js │ │ ├── modules │ │ │ ├── index.js │ │ │ └── class.js │ │ └── patch.js │ │ ├── server │ │ ├── directives │ │ │ ├── index.js │ │ │ ├── show.js │ │ │ └── model.js │ │ ├── modules │ │ │ ├── index.js │ │ │ ├── class.js │ │ │ ├── style.js │ │ │ └── dom-props.js │ │ └── compiler.js │ │ ├── compiler │ │ ├── directives │ │ │ ├── index.js │ │ │ ├── html.js │ │ │ └── text.js │ │ ├── modules │ │ │ ├── index.js │ │ │ ├── class.js │ │ │ └── style.js │ │ ├── index.js │ │ ├── options.js │ │ └── util.js │ │ ├── entry-compiler.js │ │ ├── entry-server-basic-renderer.js │ │ ├── util │ │ ├── index.js │ │ └── compat.js │ │ ├── entry-server-renderer-jit.js │ │ └── entry-server-renderer.js ├── core │ ├── components │ │ └── index.js │ ├── vdom │ │ ├── modules │ │ │ ├── index.js │ │ │ └── ref.js │ │ └── helpers │ │ │ ├── is-async-placeholder.js │ │ │ ├── index.js │ │ │ ├── get-first-component-child.js │ │ │ └── merge-hook.js │ ├── global-api │ │ ├── mixin.js │ │ ├── use.js │ │ └── assets.js │ ├── util │ │ ├── index.js │ │ ├── perf.js │ │ └── lang.js │ ├── instance │ │ ├── render-helpers │ │ │ ├── resolve-filter.js │ │ │ ├── bind-object-listeners.js │ │ │ ├── resolve-scoped-slots.js │ │ │ ├── render-slot.js │ │ │ ├── check-keycodes.js │ │ │ ├── index.js │ │ │ ├── bind-dynamic-keys.js │ │ │ └── render-list.js │ │ └── index.js │ ├── index.js │ └── observer │ │ ├── traverse.js │ │ └── array.js ├── compiler │ ├── directives │ │ ├── index.js │ │ ├── bind.js │ │ └── on.js │ ├── parser │ │ └── entity-decoder.js │ ├── index.js │ └── codeframe.js ├── shared │ └── constants.js └── server │ ├── optimizing-compiler │ └── index.js │ ├── create-basic-renderer.js │ ├── webpack-plugin │ └── util.js │ ├── template-renderer │ └── parse-template.js │ ├── bundle-renderer │ └── source-map-support.js │ └── write.js ├── types ├── typings.json ├── test │ ├── es-module.ts │ ├── umd-test.ts │ ├── tsconfig.json │ ├── plugin-test.ts │ └── augmentation-test.ts ├── tsconfig.json ├── plugin.d.ts └── index.d.ts ├── material ├── ast.png ├── after.gif ├── before.gif ├── diff.gif └── complementary-set.png ├── scripts ├── feature-flags.js ├── git-hooks │ ├── pre-commit │ └── commit-msg ├── alias.js ├── gen-release-note.js ├── get-weex-version.js ├── verify-commit-msg.js └── release-weex.sh ├── packages ├── vue-server-renderer │ ├── client-plugin.d.ts │ ├── server-plugin.d.ts │ ├── types │ │ ├── plugin.d.ts │ │ └── tsconfig.json │ ├── README.md │ ├── index.js │ └── package.json ├── vue-ssr-jit │ ├── index.js │ ├── types │ │ ├── plugin.d.ts │ │ └── tsconfig.json │ └── package.json ├── weex-vue-framework │ ├── README.md │ └── package.json ├── weex-template-compiler │ ├── README.md │ ├── package.json │ └── index.js └── vue-template-compiler │ ├── types │ └── tsconfig.json │ ├── package.json │ └── index.js ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── CODE_OF_CONDUCT.md ├── benchmarks ├── big-table │ └── demo.css ├── dbmon │ ├── app.js │ └── index.html └── ssr │ ├── renderToString.js │ ├── README.md │ └── renderToStream.js ├── .editorconfig ├── .gitignore ├── flow ├── ssr.js ├── global-api.js └── modules.js ├── examples ├── svg │ └── style.css ├── firebase │ ├── style.css │ ├── index.html │ └── app.js ├── markdown │ ├── style.css │ └── index.html ├── todomvc │ └── readme.md ├── elastic-header │ └── style.css ├── grid │ ├── style.css │ └── index.html ├── modal │ └── style.css └── commits │ └── app.js ├── .eslintrc.js ├── .babelrc.js ├── .flowconfig ├── LICENSE └── README.CN.md /test/ssr/fixtures/test.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/ssr/fixtures/test.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/ssr/fixtures/test.woff2: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | flow 2 | dist 3 | packages 4 | -------------------------------------------------------------------------------- /test/ssr/fixtures/error.js: -------------------------------------------------------------------------------- 1 | throw new Error('foo') 2 | -------------------------------------------------------------------------------- /test/unit/modules/server-compiler/optimizer.spec.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/platforms/weex/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | } 3 | -------------------------------------------------------------------------------- /types/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue", 3 | "main": "index.d.ts" 4 | } 5 | -------------------------------------------------------------------------------- /test/e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "indent": 0 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /material/ast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SmallComfort/vue-ssr-jit/HEAD/material/ast.png -------------------------------------------------------------------------------- /types/test/es-module.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | data() { 3 | return {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /material/after.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SmallComfort/vue-ssr-jit/HEAD/material/after.gif -------------------------------------------------------------------------------- /material/before.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SmallComfort/vue-ssr-jit/HEAD/material/before.gif -------------------------------------------------------------------------------- /material/diff.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SmallComfort/vue-ssr-jit/HEAD/material/diff.gif -------------------------------------------------------------------------------- /scripts/feature-flags.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NEW_SLOT_SYNTAX: true, 3 | VBIND_PROP_SHORTHAND: false 4 | } 5 | -------------------------------------------------------------------------------- /src/core/components/index.js: -------------------------------------------------------------------------------- 1 | import KeepAlive from './keep-alive' 2 | 3 | export default { 4 | KeepAlive 5 | } 6 | -------------------------------------------------------------------------------- /test/ssr/fixtures/promise-rejection.js: -------------------------------------------------------------------------------- 1 | export default () => { 2 | return Promise.reject(new Error('foo')) 3 | } 4 | -------------------------------------------------------------------------------- /material/complementary-set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SmallComfort/vue-ssr-jit/HEAD/material/complementary-set.png -------------------------------------------------------------------------------- /src/platforms/web/entry-runtime.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import Vue from './runtime/index' 4 | 5 | export default Vue 6 | -------------------------------------------------------------------------------- /src/platforms/weex/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | 3 | export default { 4 | model 5 | } 6 | -------------------------------------------------------------------------------- /src/platforms/weex/entry-compiler.js: -------------------------------------------------------------------------------- 1 | export { compile } from 'weex/compiler/index' 2 | export { generateCodeFrame } from 'compiler/codeframe' 3 | -------------------------------------------------------------------------------- /test/helpers/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jasmine": true 4 | }, 5 | "globals": { 6 | "waitForUpdate": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/vue-server-renderer/client-plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { WebpackPlugin } from './types/plugin'; 2 | declare const Plugin: WebpackPlugin; 3 | export = Plugin; 4 | -------------------------------------------------------------------------------- /packages/vue-server-renderer/server-plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { WebpackPlugin } from './types/plugin'; 2 | declare const Plugin: WebpackPlugin; 3 | export = Plugin; 4 | -------------------------------------------------------------------------------- /src/core/vdom/modules/index.js: -------------------------------------------------------------------------------- 1 | import directives from './directives' 2 | import ref from './ref' 3 | 4 | export default [ 5 | ref, 6 | directives 7 | ] 8 | -------------------------------------------------------------------------------- /src/platforms/web/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | import show from './show' 3 | 4 | export default { 5 | model, 6 | show 7 | } 8 | -------------------------------------------------------------------------------- /src/platforms/web/server/directives/index.js: -------------------------------------------------------------------------------- 1 | import show from './show' 2 | import model from './model' 3 | 4 | export default { 5 | show, 6 | model 7 | } 8 | -------------------------------------------------------------------------------- /test/helpers/vdom.js: -------------------------------------------------------------------------------- 1 | import VNode from 'core/vdom/vnode' 2 | 3 | window.createTextVNode = function (text) { 4 | return new VNode(undefined, undefined, undefined, text) 5 | } 6 | -------------------------------------------------------------------------------- /test/ssr/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jasmine": true 4 | }, 5 | "plugins": ["jasmine"], 6 | "rules": { 7 | "jasmine/no-focused-tests": 2 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/weex/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jasmine": true 4 | }, 5 | "plugins": ["jasmine"], 6 | "rules": { 7 | "jasmine/no-focused-tests": 2 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /types/test/umd-test.ts: -------------------------------------------------------------------------------- 1 | const vm = new Vue({ 2 | template: "