Commit Graph

1435 Commits

Author SHA1 Message Date
Evan You 439752822c fix(portal): fix portal placeholder text 2020-02-26 16:07:00 -05:00
Evan You d52ffaa202 refactor(compiler-ssr): extract portal processing + emit errors 2020-02-26 15:05:11 -05:00
Dmitry Sharshakov d8ed0e7fbf
feat(compiler-ssr): compile portal (#775) 2020-02-26 14:59:53 -05:00
Evan You 312513d255 release: v3.0.0-alpha.7 2020-02-26 14:36:38 -05:00
Evan You e42d6b0712 refactor: use consistent name for watch invalidation register function 2020-02-26 10:20:30 -05:00
djy0 04f83fa681
fix(runtime-core): set appContext.provides to Object.create(null) (#781) 2020-02-26 10:20:10 -05:00
djy0 59393dd757
fix(template-explorer): rename watch -> watchEffect (#780) 2020-02-26 10:13:07 -05:00
Evan You 3206e5dfe5 fix(types): shallowRef should not unwrap value type 2020-02-25 20:43:01 -05:00
Evan You d4c6957e2d fix(types): ref value type unwrapping should happen at creation time 2020-02-25 19:44:06 -05:00
Evan You 711d16cc65 refactor: remove old watch signature support 2020-02-25 19:39:49 -05:00
Evan You 52cc7e8231 refactor(directives): remove binding.instance
BREAKING CHANGE: custom directive bindings no longer expose instance

    This is a rarely used property that creates extra complexity in
    ensuring it points to the correct instance. From a design
    perspective, a custom directive should be scoped to the element and
    data it is bound to and should not have access to the entire
    instance in the first place.
2020-02-25 19:35:48 -05:00
Evan You 3eab143843 fix(template-ref): fix string template refs inside slots 2020-02-25 18:29:51 -05:00
ysj16 8cb0b83088
fix(renderSlot): set slot render as a STABLE_FRAGMENT (#776)
fix #766
2020-02-25 16:41:44 +01:00
Evan You 4a5b91bd1f fix(runtime-core): fix slot fallback + slots typing
fix #773
2020-02-25 09:41:07 -05:00
djy0 19a799c28b
fix(runtime-core): make watchEffect ignore deep option (#765) 2020-02-24 18:03:02 +01:00
djy0 c11905fe36
chore: fix typo (#764) [ci skip] 2020-02-24 18:01:26 +01:00
Xin Du (Clark) 047844cfb8
refactor(ssr): extract buffer resolving and resolvePortals (#771) 2020-02-24 17:23:35 +01:00
Evan You 9ab22c7ae6 release: v3.0.0-alpha.6 2020-02-22 08:25:32 +01:00
Evan You 99a2e18c97 feat(runtime-core): add watchEffect API
BREAKING CHANGE: replae `watch(fn, options?)` with `watchEffect`

    The `watch(fn, options?)` signature has been replaced by the new
    `watchEffect` API, which has the same usage and behavior. `watch`
    now only supports the `watch(source, cb, options?)` signautre.
2020-02-22 08:19:10 +01:00
Evan You b36a76fe23 chore: remove debugger [ci skip] 2020-02-22 05:19:22 +01:00
guaijie 76c7f54269
perf(effect): optimize effect trigger for array length mutation (#761) 2020-02-22 05:17:30 +01:00
Evan You e9024bf1b7 feat(reactivity): expose unref and shallowRef 2020-02-22 04:39:32 +01:00
Evan You 0c67201942 chore: fix test type 2020-02-22 03:54:20 +01:00
Evan You 775a7c2b41 refactor: preserve refs in reactive arrays
BREAKING CHANGE: reactive arrays no longer unwraps contained refs

    When reactive arrays contain refs, especially a mix of refs and
    plain values, Array prototype methods will fail to function
    properly - e.g. sort() or reverse() will overwrite the ref's value
    instead of moving it (see #737).

    Ensuring correct behavior for all possible Array methods while
    retaining the ref unwrapping behavior is exceedinly complicated; In
    addition, even if Vue handles the built-in methods internally, it
    would still break when the user attempts to use a 3rd party utility
    functioon (e.g. lodash) on a reactive array containing refs.

    After this commit, similar to other collection types like Map and
    Set, Arrays will no longer automatically unwrap contained refs.

    The usage of mixed refs and plain values in Arrays should be rare in
    practice. In cases where this is necessary, the user can create a
    computed property that performs the unwrapping.
2020-02-21 17:48:39 +01:00
Evan You 627b9df4a2 fix(types): improve ref typing, close #759 2020-02-21 17:45:42 +01:00
Evan You 33622d6360 perf(reactivity): only trigger all effects on Array length mutation if new length is shorter than old length 2020-02-21 15:05:16 +01:00
hareku 014acc13e9
test(reactivity): test for ref without init value (#746) 2020-02-21 14:44:41 +01:00
hareku 9547c2b93d
fix(sfc): inherit parent scopeId on child rooot (#756) 2020-02-21 14:44:13 +01:00
Evan You 1b9b235663 fix(compiler-dom): properly stringify class/style bindings when hoisting static strings 2020-02-21 13:10:13 +01:00
Evan You 189a0a3b19 chore: use undefined for TS 3.8 compat 2020-02-21 11:38:41 +01:00
guaijie 5fac65589b
fix(reactivity): should trigger all effects when array length is mutated (#754) 2020-02-21 11:38:07 +01:00
Luxiaosong c54aa43fa7
chore: use 'const' instead of 'let' (#755) [ci skip] 2020-02-21 11:21:24 +01:00
Evan You a840e7ddf0 fix(types): update setup binding unwrap types for 6b10f0c
close #738
2020-02-19 18:29:18 +01:00
basvanmeurs 8d817bb446
build: use buildOption to determine runtime compile build (#742)
This makes it possible to create a separate package that uses runtime compilation.
2020-02-19 09:50:24 -05:00
likui 7b987d9450
fix(compiler-core): should alias name in helperString (#743)
fix #740
2020-02-19 09:49:46 -05:00
Evan You 478b4cfb2c release: v3.0.0-alpha.5 2020-02-18 15:00:55 -05:00
Evan You 8f463b3859 chore: readme 2020-02-18 14:56:53 -05:00
Evan You 8383e5450e fix(runtime-core): ensure renderCache always exists 2020-02-18 14:43:12 -05:00
Evan You 028f748c32 fix(v-on): transform click.right and click.middle modifiers
fix #735
2020-02-18 14:32:06 -05:00
Evan You 583f9468fa refactor: extract remove util 2020-02-18 13:52:59 -05:00
Evan You fd031490fb feat(ssr): useSSRContext 2020-02-18 13:26:15 -05:00
Evan You 86464e8c04 refactor: only run useCssModule code in non-global builds 2020-02-18 13:23:30 -05:00
Evan You e8e67729cb fix(reactivity): effect should handle self dependency mutations 2020-02-18 13:22:09 -05:00
Evan You e1c9153b9e fix(reactivity): trigger iteration effect on Map.set
fix #709
2020-02-18 00:09:24 -05:00
Evan You 2fb7a63943 fix(computed): support arrow function usage for computed option
fix #733
2020-02-17 23:22:25 -05:00
Evan You 9571ede84b refactor(watch): adjsut watch API behavior
BREAKING CHANGE: `watch` behavior has been adjusted.

    - When using the `watch(source, callback, options?)` signature, the
      callback now fires lazily by default (consistent with 2.x
      behavior).

      Note that the `watch(effect, options?)` signature is still eager,
      since it must invoke the `effect` immediately to collect
      dependencies.

    - The `lazy` option has been replaced by the opposite `immediate`
      option, which defaults to `false`. (It's ignored when using the
      effect signature)

    - Due to the above changes, the `watch` option in Options API now
      behaves exactly the same as 2.x.

    - When using the effect signature or `{ immediate: true }`, the
      intital execution is now performed synchronously instead of
      deferred until the component is mounted. This is necessary for
      certain use cases to work properly with `async setup()` and
      Suspense.

      The side effect of this is the immediate watcher invocation will
      no longer have access to the mounted DOM. However, the watcher can
      be initiated inside `onMounted` to retain previous behavior.
2020-02-17 23:16:58 -05:00
Evan You d9d63f21b1 fix(reactivity): avoid cross-component dependency leaks in setup() 2020-02-17 23:14:07 -05:00
Evan You 202532c301 chore: use consistent signature for shared utilities 2020-02-17 14:43:16 -05:00
Evan You 0c1fe72dcf build: make watch tree-shakable in lean build 2020-02-17 11:02:15 -05:00
Evan You 77103e1fd7 types: fix tsx dts tests 2020-02-15 21:48:45 -05:00
Evan You 57ee5df364 fix(types): app.component should accept defineComponent return type
fix #730
2020-02-15 21:04:29 -05:00
Evan You 9d2ac6675a refactor: make portal tree-shakeable 2020-02-15 17:44:37 -05:00
Dmitry Sharshakov e495fa4a18
feat(ssr): render portals (#714) 2020-02-15 17:41:20 -05:00
Evan You aa09f01a1e chore: mark main package side-effects free 2020-02-15 12:02:00 -05:00
hareku 66e7d7f28e
test(server-renderer): implement ssrRenderList tests (#726) 2020-02-15 11:42:38 -05:00
夜宴 8a4412077c
chore: remove redundant Non-Null Assertion (#728) 2020-02-15 11:33:22 -05:00
Dmitry Sharshakov 4669215ca2
fix(ssr): render components returning render function from setup (#720) 2020-02-15 11:11:55 -05:00
Evan You a0163f1aa8 chore: fix snapshots 2020-02-15 11:10:52 -05:00
Evan You 70dc3e3ae7 feat(ssr): support portal hydration 2020-02-14 21:04:08 -05:00
Evan You 688ad92391 fix(ssr): fix class/style rendering + ssrRenderComponent export name 2020-02-14 20:48:06 -05:00
Evan You 66b5f0b480 chore: fix hoistStatic exhaustive check 2020-02-14 16:41:55 -05:00
Evan You 96605b79a3 types: avoid duplicate type declarations for renderer closure functions 2020-02-14 16:25:41 -05:00
Evan You e0f3c6b352 fix(compiler-core): should apply text transform to if branches
fix #725
2020-02-14 15:57:14 -05:00
Evan You 80904e92b8 types: cleanup renderer & hydration typing 2020-02-14 12:33:32 -05:00
Evan You 629ee75588 perf: prevent renderer hot functions being inlined by minifiers
Terser will aggressively inline hot functions in renderer.ts in order
to reduce "function" declarations, but the inlining leads to performance
overhead (small, but noticeable in benchmarks).

Since we cannot control user's minifier options, we have to avoid the
deopt in the source code by using arrow functions in hot paths.
2020-02-14 03:27:27 -05:00
Evan You 6df2aca070 refactor(types): move shapeFlags to shared 2020-02-14 01:36:42 -05:00
Evan You 167f8241bd refactor(ssr): make hydration logic tree-shakeable 2020-02-14 01:30:08 -05:00
Evan You 112d8f7d86 refactor: use explicit exports for runtime-core 2020-02-14 00:13:54 -05:00
Evan You 42d80b5888 wip(ssr): component hydration 2020-02-13 23:31:03 -05:00
Evan You 32d6a46474 build: avoid runtime wildcard import in global build 2020-02-13 18:50:36 -05:00
Evan You 5455e8e69a fix(compiler-core): should not hoist element with cached + merged event handlers 2020-02-13 18:34:08 -05:00
Evan You 9aaef60ad2 wip(ssr): adjust event hydration flag 2020-02-13 18:28:40 -05:00
Evan You 6b505dcd23 wip(ssr): basic element hydration 2020-02-13 17:47:00 -05:00
Evan You 35d91f4e18 fix(runtime-core): handle component updates with only class/style bindings 2020-02-13 17:27:52 -05:00
Evan You c6a9787941 fix(types): ensure correct oldValue typing based on lazy option
close #719
2020-02-13 12:09:13 -05:00
Evan You 8e19424c04 refactor(security): mark potential unsafe code paths 2020-02-12 15:00:32 -05:00
Evan You 8b7c162125 feat(compiler-dom): handle constant expressions when stringifying static content 2020-02-12 15:00:00 -05:00
Evan You 1389d7b88c refactor(compiler-core): use more concise marker for compiled slots 2020-02-12 13:45:35 -05:00
Evan You 175f8aae8d feat(compiler): mark hoisted trees with patchFlag 2020-02-12 13:31:29 -05:00
Evan You d866d389f3 chore: fix import path + comment 2020-02-12 12:12:53 -05:00
Evan You 27913e661a feat(compiler-dom/runtime-dom): stringify eligible static trees 2020-02-12 11:56:42 -05:00
Evan You e861c6da90 test: test updates for d40c642 2020-02-11 18:40:42 -05:00
Evan You e3988b40d8 refactor(compiler-core): use dedicated node type for element codegen
Previously codegen node for elements and components used raw expressions,
which leads to multiple permutations of AST shapes based on whether the
node is a block or has directives. The complexity is spread across the
entire compiler and occurs whenever a transform needs to deal with
element codegen nodes.

This refactor centralizes the handling of all possible permutations
into the codegen phase, so that all elements/components will have a
consistent node type throughout the transform phase.

The refactor is split into two commits (with test updates in a separate
one) so changes can be easier to inspect.
2020-02-11 18:40:42 -05:00
Yang Mingshan fe9da2d0e4
fix(runtime-core/scheduler): invalidate job (#717) 2020-02-11 07:30:25 -05:00
Evan You f4c54a888b refactor(compiler-core): hoist static text calls between elements 2020-02-10 18:32:11 -05:00
Evan You 12fcf9ab95 fix(compiler): fix v-for fragment openBlock argument 2020-02-10 18:19:49 -05:00
Evan You 47e984d31f refactor(compiler): provide _ctx and _cache via arguments 2020-02-10 17:29:12 -05:00
Evan You ade07c64a1 fix(compiler-core): fix keep-alive when used in templates
fix #715
2020-02-10 16:49:37 -05:00
Dmitry Sharshakov 6d10a6c772
feat(server-renderer): support on-the-fly template compilation (#707) 2020-02-10 14:37:35 -05:00
Evan You cfadb98011 fix(runtime-core): rework vnode hooks handling
- peroperly support directive on components (e.g. <foo v-show="x">)
- consistently invoke raw vnode hooks on component vnodes (fix #684)
2020-02-10 13:15:36 -05:00
Evan You 8a87074df0 fix(runtime-core/scheduler): avoid duplicate updates of child component 2020-02-10 13:09:15 -05:00
Evan You 778f3a5e88 fix(runtime-core): should not return early on text patchFlag
fix vnode updated hook on elements with dynamic text children
2020-02-10 12:06:36 -05:00
Evan You 571ed4226b feat(compiler-core/v-on): support @vnode-xxx usage for vnode hooks 2020-02-10 11:00:37 -05:00
Jonas 5495c70c4a
fix(transition-group): handle multiple move-classes (#679)
fix #678
2020-02-10 09:36:19 -05:00
Dmitry Sharshakov 430d4e10bb
test(compiler-sfc): add real tests for source maps (#704) 2020-02-10 09:34:13 -05:00
djy0 782db6d7f5
chore(compiler-core/codegen): avoid generate indent spaces of empty lines. (#701) 2020-02-10 09:33:04 -05:00
djy0 42db2fef9d
test(compiler-ssr): fix typo (#713) 2020-02-10 09:20:07 -05:00
Evan You e308ad99e9 refactor: ensure setup context.emit always point to intenral emit 2020-02-09 21:47:16 -05:00
Evan You 4bc4cb970f fix: remove effect from public API
close #712
2020-02-09 21:43:54 -05:00
jods 21944c4a42
feat(runtime-core/reactivity): expose shallowReactive (#711) 2020-02-09 21:42:34 -05:00
Evan You 03680399f2 wip(ssr): use consistent attr key behavior in compiler 2020-02-09 15:32:33 -05:00
jods 8874b21a7e perf(reactivity): better computed tracking (#710) 2020-02-09 15:25:17 -05:00
hareku fc7bcca1b3
chore(shared): fix comment (#705) [ci skip] 2020-02-09 13:12:16 -05:00
Evan You 8b2d6a35d0 test: update tests and snapshots for helper prefixing 2020-02-07 19:04:55 -05:00
Evan You 51317af6e8 refactor(compiler): prefix all imported helpers to avoid scope collision 2020-02-07 18:53:39 -05:00
Evan You c44d9fbe3d build: drop unnecessary codegen branch for global build 2020-02-07 18:00:30 -05:00
Evan You 0f67aa7da5 fix(runtime-core): fix ShapeFlags tree shaking 2020-02-07 17:18:12 -05:00
Evan You 5b43764eac fix(runtime-core): fix keep-alive tree-shaking 2020-02-07 17:00:39 -05:00
Evan You 9e51297702 fix(compiler-dom): fix duplicated transforms 2020-02-07 14:24:56 -05:00
Evan You a51e710396 wip(ssr): proper scope analysis for ssr vnode slot fallback 2020-02-07 13:56:18 -05:00
Evan You b7a74d0439 wip(ssr): ssr slot vnode fallback 2020-02-07 01:06:51 -05:00
Evan You 31f3383a02 workflow: log compile time in template explorer 2020-02-06 21:47:07 -05:00
Evan You f1d579932e chore: comment typo 2020-02-06 18:31:55 -05:00
Evan You 4659c366e0 wip(ssr): generate correct component code 2020-02-06 18:03:14 -05:00
Evan You 7984a135ca wip(ssr): scopeId in slots 2020-02-06 17:45:46 -05:00
Evan You 797cc18967 wip(ssr): element scopeId 2020-02-06 17:45:46 -05:00
Evan You 4cc39e14a2 feat(compiler): warn invalid children for transition and keep-alive 2020-02-06 17:45:46 -05:00
Evan You 3c27bf6133 wip(compiler-ssr): built-in component fallthrough 2020-02-06 17:45:46 -05:00
Evan You ae8fc9297d test: update snapshots 2020-02-06 12:09:09 -05:00
Evan You bc8f91d181 refactor(ssr): prefix ssr helpers 2020-02-06 12:07:25 -05:00
Evan You f3e70b3733 wip(compiler-ssr): component slots 2020-02-06 12:05:53 -05:00
Evan You 39d1acf417 workflow: improve template-explorer local load speed 2020-02-06 10:22:16 -05:00
Evan You ee5ed73361 wip(ssr): basic components 2020-02-05 23:07:23 -05:00
Evan You 0b90baec28 test: increase e2e tests timeout 2020-02-05 21:10:43 -05:00
Evan You 9b3b6962df wip(srr): slot outlet 2020-02-05 21:04:40 -05:00
Evan You 7a63103a11 chore: fix snapshot 2020-02-05 17:29:41 -05:00
Evan You 201f18b58b wip(ssr): v-model w/ dynamic type & props 2020-02-05 17:01:00 -05:00
Evan You 1f2de9e232 fix(v-model): should use dynamic directive on input with dynamic v-bind 2020-02-05 15:21:47 -05:00
Evan You ae92925011 wip(ssr): should only render renderable values 2020-02-05 15:21:20 -05:00
Evan You 8f9e85afb1 test: fix tests w/ nested CompoundExpressions 2020-02-05 14:30:34 -05:00
Evan You c952321fcf wip(compiler-ssr): v-model static types + textarea 2020-02-05 14:23:03 -05:00
Evan You 8f6b6690a2 fix(compiler-ssr): import helpers from correct packages 2020-02-05 11:20:50 -05:00
Evan You c441e88469 chore: fix snapshots 2020-02-04 22:56:53 -05:00
Evan You 8da6df7235 wip(ssr): handle `<textarea>` with dynamic key v-bind 2020-02-04 22:49:47 -05:00
Evan You 1958314976 wip(compiler-ssr): v-show 2020-02-04 21:03:16 -05:00
Evan You e2c5060fb4 test(ssr): test renderAttr 2020-02-04 18:42:13 -05:00
Evan You ebf920e6af wip(compiler-ssr): dynamic v-bind + class/style merging 2020-02-04 18:37:32 -05:00
Evan You c059fc88b9 wip(compiler-ssr): v-bind with static keys 2020-02-04 16:47:12 -05:00
Evan You e71781dcab workflow: add ssr mode in template explorer 2020-02-04 15:59:41 -05:00
Evan You 98e3e03fd1 wip(ssr): fix index 2020-02-04 15:59:26 -05:00
Evan You ba263c909c wip(ssr): remove cjs codegen mode 2020-02-04 15:58:54 -05:00
Evan You 6a5ed49ea9 wip(ssr): v-bind basic usage 2020-02-04 12:21:04 -05:00
Dmitry Sharshakov 7f38c1e0ff
feat(reactivity): add shallowReactive function (#689) 2020-02-04 10:15:27 -05:00
Jason 2d56dfdc4f
fix(compiler-sfc): handle empty nodes with src attribute (#695) 2020-02-04 10:03:32 -05:00
Eduardo San Martin Morote 5742a0b826
fix(runtime-core/watch): trigger watcher with undefined as initial value (#687)
Fix #683
2020-02-04 09:59:04 -05:00
likui 3ddb441c56
wip(ssr): fix naming for runtime helpers (#694) 2020-02-04 09:24:49 -05:00
Jacek Karczmarczyk 1b2878d80f
chore: update runtime-dom/README example to latest signature (#693) [ci skip] 2020-02-04 09:24:29 -05:00
Evan You eb9e089277 chore: fix test types 2020-02-03 22:21:45 -05:00
Evan You 8cf6b5731d test(compiler-ssr): v-for tests 2020-02-03 20:47:41 -05:00
Evan You 93c37b94f2 wip(ssr): v-for 2020-02-03 18:31:11 -05:00