vue 2.6.13 → 2.7.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -295
- package/compiler-sfc/index.d.ts +1 -0
- package/compiler-sfc/index.js +1 -0
- package/compiler-sfc/index.mjs +1 -0
- package/compiler-sfc/package.json +5 -0
- package/dist/vue.common.dev.js +11481 -11946
- package/dist/vue.common.prod.js +8 -3
- package/dist/vue.esm.browser.js +11321 -12011
- package/dist/vue.esm.browser.min.js +8 -3
- package/dist/vue.esm.js +11476 -11984
- package/dist/vue.js +11484 -11949
- package/dist/vue.min.js +8 -3
- package/dist/vue.runtime.common.dev.js +8427 -8421
- package/dist/vue.runtime.common.prod.js +8 -3
- package/dist/vue.runtime.esm.js +8436 -8454
- package/dist/vue.runtime.js +8430 -8424
- package/dist/vue.runtime.min.js +8 -3
- package/package.json +88 -111
- package/packages/compiler-sfc/dist/compiler-sfc.js +7 -0
- package/packages/compiler-sfc/node_modules/.bin/parser +17 -0
- package/packages/compiler-sfc/node_modules/.bin/sass +17 -0
- package/packages/compiler-sfc/package.json +30 -0
- package/src/compiler/{codeframe.js → codeframe.ts} +9 -7
- package/src/compiler/codegen/{events.js → events.ts} +21 -41
- package/src/compiler/codegen/{index.js → index.ts} +146 -136
- package/src/compiler/{create-compiler.js → create-compiler.ts} +26 -18
- package/src/compiler/directives/bind.ts +9 -0
- package/src/compiler/directives/{index.js → index.ts} +0 -2
- package/src/compiler/directives/{model.js → model.ts} +15 -18
- package/src/compiler/directives/{on.js → on.ts} +3 -4
- package/src/compiler/{error-detector.js → error-detector.ts} +61 -31
- package/src/compiler/{helpers.js → helpers.ts} +73 -61
- package/src/compiler/{index.js → index.ts} +2 -3
- package/src/compiler/{optimizer.js → optimizer.ts} +30 -23
- package/src/compiler/parser/{entity-decoder.js → entity-decoder.ts} +1 -3
- package/src/compiler/parser/{filter-parser.js → filter-parser.ts} +43 -24
- package/src/compiler/parser/{html-parser.js → html-parser.ts} +50 -29
- package/src/compiler/parser/{index.js → index.ts} +190 -172
- package/src/compiler/parser/{text-parser.js → text-parser.ts} +8 -9
- package/src/compiler/{to-function.js → to-function.ts} +27 -22
- package/src/core/components/{index.js → index.ts} +0 -0
- package/src/core/components/{keep-alive.js → keep-alive.ts} +42 -30
- package/src/core/{config.js → config.ts} +28 -30
- package/src/core/global-api/{assets.js → assets.ts} +8 -7
- package/src/core/global-api/{extend.js → extend.ts} +10 -13
- package/src/core/global-api/{index.js → index.ts} +4 -5
- package/src/core/global-api/{mixin.js → mixin.ts} +2 -3
- package/src/core/global-api/use.ts +23 -0
- package/src/core/{index.js → index.ts} +1 -1
- package/src/core/instance/{events.js → events.ts} +41 -24
- package/src/core/instance/{index.js → index.ts} +9 -5
- package/src/core/instance/{init.js → init.ts} +26 -15
- package/src/core/instance/inject.ts +72 -0
- package/src/core/instance/{lifecycle.js → lifecycle.ts} +86 -44
- package/src/core/instance/{proxy.js → proxy.ts} +29 -24
- package/src/core/instance/render-helpers/{bind-dynamic-keys.js → bind-dynamic-keys.ts} +6 -5
- package/src/core/instance/render-helpers/{bind-object-listeners.js → bind-object-listeners.ts} +4 -8
- package/src/core/instance/render-helpers/{bind-object-props.js → bind-object-props.ts} +12 -17
- package/src/core/instance/render-helpers/{check-keycodes.js → check-keycodes.ts} +5 -7
- package/src/core/instance/render-helpers/{index.js → index.ts} +1 -3
- package/src/core/instance/render-helpers/{render-list.js → render-list.ts} +12 -13
- package/src/core/instance/render-helpers/{render-slot.js → render-slot.ts} +10 -11
- package/src/core/instance/render-helpers/{render-static.js → render-static.ts} +7 -10
- package/src/core/instance/render-helpers/{resolve-filter.js → resolve-filter.ts} +1 -3
- package/src/core/instance/render-helpers/{resolve-scoped-slots.js → resolve-scoped-slots.ts} +11 -8
- package/src/core/instance/render-helpers/{resolve-slots.js → resolve-slots.ts} +12 -11
- package/src/core/instance/{render.js → render.ts} +66 -29
- package/src/core/instance/{state.js → state.ts} +100 -83
- package/src/core/observer/{array.js → array.ts} +11 -2
- package/src/core/observer/{dep.js → dep.ts} +37 -15
- package/src/core/observer/{index.js → index.ts} +137 -71
- package/src/core/observer/{scheduler.js → scheduler.ts} +42 -43
- package/src/core/observer/{traverse.js → traverse.ts} +10 -7
- package/src/core/observer/{watcher.js → watcher.ts} +88 -60
- package/src/core/util/{debug.js → debug.ts} +38 -34
- package/src/core/util/{env.js → env.ts} +27 -30
- package/src/core/util/{error.js → error.ts} +12 -14
- package/src/core/util/{index.js → index.ts} +0 -2
- package/src/core/util/{lang.js → lang.ts} +6 -7
- package/src/core/util/{next-tick.js → next-tick.ts} +16 -10
- package/src/core/util/{options.js → options.ts} +119 -114
- package/src/core/util/{perf.js → perf.ts} +5 -1
- package/src/core/util/{props.js → props.ts} +54 -50
- package/src/core/vdom/{create-component.js → create-component.ts} +51 -50
- package/src/core/vdom/{create-element.js → create-element.ts} +49 -43
- package/src/core/vdom/{create-functional-component.js → create-functional-component.ts} +52 -27
- package/src/core/vdom/helpers/{extract-props.js → extract-props.ts} +18 -18
- package/src/core/vdom/helpers/{get-first-component-child.js → get-first-component-child.ts} +6 -5
- package/src/core/vdom/helpers/{index.js → index.ts} +0 -2
- package/src/core/vdom/helpers/is-async-placeholder.ts +6 -0
- package/src/core/vdom/helpers/{merge-hook.js → merge-hook.ts} +7 -5
- package/src/core/vdom/helpers/{normalize-children.js → normalize-children.ts} +26 -16
- package/src/core/vdom/helpers/{normalize-scoped-slots.js → normalize-scoped-slots.ts} +23 -17
- package/src/core/vdom/helpers/{resolve-async-component.js → resolve-async-component.ts} +29 -37
- package/src/core/vdom/helpers/update-listeners.ts +101 -0
- package/src/core/vdom/modules/{directives.js → directives.ts} +20 -14
- package/src/core/vdom/modules/index.ts +4 -0
- package/src/core/vdom/modules/template-ref.ts +96 -0
- package/src/core/vdom/{patch.js → patch.ts} +239 -138
- package/src/core/vdom/{vnode.js → vnode.ts} +36 -31
- package/src/global.d.ts +15 -0
- package/src/platforms/web/compiler/directives/html.ts +8 -0
- package/src/platforms/web/compiler/directives/{index.js → index.ts} +0 -0
- package/src/platforms/web/compiler/directives/{model.js → model.ts} +47 -41
- package/src/platforms/web/compiler/directives/{text.js → text.ts} +2 -3
- package/src/platforms/web/compiler/{index.js → index.ts} +0 -2
- package/src/platforms/web/compiler/modules/{class.js → class.ts} +10 -15
- package/src/platforms/web/compiler/modules/{index.js → index.ts} +1 -5
- package/src/platforms/web/compiler/modules/{model.js → model.ts} +6 -11
- package/src/platforms/web/compiler/modules/{style.js → style.ts} +9 -14
- package/src/platforms/web/compiler/{options.js → options.ts} +1 -2
- package/src/platforms/web/compiler/{util.js → util.ts} +5 -7
- package/src/platforms/web/entry-compiler-sfc.ts +1 -0
- package/src/platforms/web/{entry-compiler.js → entry-compiler.ts} +1 -3
- package/src/platforms/web/{entry-runtime.js → entry-runtime-esm.ts} +2 -2
- package/src/platforms/web/entry-runtime-with-compiler-esm.ts +5 -0
- package/src/platforms/web/entry-runtime-with-compiler.ts +10 -0
- package/src/platforms/web/entry-runtime.ts +7 -0
- package/src/platforms/web/runtime/{class-util.js → class-util.ts} +2 -4
- package/src/platforms/web/runtime/components/{index.js → index.ts} +0 -0
- package/src/platforms/web/runtime/components/{transition-group.js → transition-group.ts} +59 -46
- package/src/platforms/web/runtime/components/{transition.js → transition.ts} +43 -36
- package/src/platforms/web/runtime/directives/{index.js → index.ts} +0 -0
- package/src/platforms/web/runtime/directives/{model.js → model.ts} +22 -21
- package/src/platforms/web/runtime/directives/{show.js → show.ts} +11 -10
- package/src/platforms/web/runtime/{index.js → index.ts} +9 -10
- package/src/platforms/web/runtime/modules/{attrs.js → attrs.ts} +12 -16
- package/src/platforms/web/runtime/modules/{class.js → class.ts} +7 -18
- package/src/platforms/web/runtime/modules/{dom-props.js → dom-props.ts} +24 -17
- package/src/platforms/web/runtime/modules/{events.js → events.ts} +22 -15
- package/src/platforms/web/runtime/modules/{index.js → index.ts} +1 -8
- package/src/platforms/web/runtime/modules/{style.js → style.ts} +24 -13
- package/src/platforms/web/runtime/modules/{transition.js → transition.ts} +61 -63
- package/src/platforms/web/runtime/node-ops.ts +66 -0
- package/src/platforms/web/runtime/{patch.js → patch.ts} +0 -2
- package/src/platforms/web/runtime/{transition-util.js → transition-util.ts} +63 -38
- package/src/platforms/web/{entry-runtime-with-compiler.js → runtime-with-compiler.ts} +28 -19
- package/src/platforms/web/util/{attrs.js → attrs.ts} +18 -14
- package/src/platforms/web/util/{class.js → class.ts} +23 -21
- package/src/platforms/web/util/{compat.js → compat.ts} +4 -4
- package/src/platforms/web/util/{element.js → element.ts} +21 -22
- package/src/platforms/web/util/{index.js → index.ts} +2 -6
- package/src/platforms/web/util/{style.js → style.ts} +12 -12
- package/src/sfc/{parser.js → parser.ts} +18 -15
- package/src/shared/{constants.js → constants.ts} +2 -6
- package/src/shared/{util.js → util.ts} +78 -55
- package/src/types/compiler.ts +224 -0
- package/src/types/component.ts +209 -0
- package/src/types/global-api.ts +37 -0
- package/src/types/modules.d.ts +15 -0
- package/src/types/options.ts +120 -0
- package/src/types/ssr.ts +27 -0
- package/src/types/utils.ts +3 -0
- package/src/types/vnode.ts +127 -0
- package/src/v3/apiInject.ts +66 -0
- package/src/v3/apiLifecycle.ts +53 -0
- package/src/v3/apiSetup.ts +161 -0
- package/src/v3/apiWatch.ts +355 -0
- package/src/v3/currentInstance.ts +23 -0
- package/src/v3/debug.ts +21 -0
- package/src/v3/h.ts +18 -0
- package/src/v3/index.ts +77 -0
- package/src/v3/reactivity/computed.ts +100 -0
- package/src/v3/reactivity/effect.ts +20 -0
- package/src/v3/reactivity/effectScope.ts +134 -0
- package/src/v3/reactivity/operations.ts +14 -0
- package/src/v3/reactivity/reactive.ts +123 -0
- package/src/v3/reactivity/readonly.ts +121 -0
- package/src/v3/reactivity/ref.ts +249 -0
- package/types/index.d.ts +10 -13
- package/types/options.d.ts +265 -132
- package/types/plugin.d.ts +4 -4
- package/types/umd.d.ts +47 -27
- package/types/v3-generated.d.ts +389 -0
- package/types/v3.d.ts +16 -0
- package/types/vnode.d.ts +70 -57
- package/types/vue.d.ts +292 -88
- package/dist/README.md +0 -122
- package/src/compiler/directives/bind.js +0 -11
- package/src/core/global-api/use.js +0 -23
- package/src/core/instance/inject.js +0 -73
- package/src/core/vdom/helpers/is-async-placeholder.js +0 -5
- package/src/core/vdom/helpers/update-listeners.js +0 -95
- package/src/core/vdom/modules/index.js +0 -7
- package/src/core/vdom/modules/ref.js +0 -45
- package/src/platforms/web/compiler/directives/html.js +0 -9
- package/src/platforms/web/entry-server-basic-renderer.js +0 -13
- package/src/platforms/web/entry-server-renderer.js +0 -27
- package/src/platforms/web/runtime/node-ops.js +0 -59
- package/src/platforms/web/server/compiler.js +0 -11
- package/src/platforms/web/server/directives/index.js +0 -7
- package/src/platforms/web/server/directives/model.js +0 -44
- package/src/platforms/web/server/directives/show.js +0 -12
- package/src/platforms/web/server/modules/attrs.js +0 -67
- package/src/platforms/web/server/modules/class.js +0 -11
- package/src/platforms/web/server/modules/dom-props.js +0 -50
- package/src/platforms/web/server/modules/index.js +0 -11
- package/src/platforms/web/server/modules/style.js +0 -41
- package/src/platforms/web/server/util.js +0 -101
- package/src/platforms/weex/compiler/directives/index.js +0 -5
- package/src/platforms/weex/compiler/directives/model.js +0 -33
- package/src/platforms/weex/compiler/index.js +0 -52
- package/src/platforms/weex/compiler/modules/append.js +0 -27
- package/src/platforms/weex/compiler/modules/class.js +0 -74
- package/src/platforms/weex/compiler/modules/index.js +0 -13
- package/src/platforms/weex/compiler/modules/props.js +0 -37
- package/src/platforms/weex/compiler/modules/recycle-list/component-root.js +0 -13
- package/src/platforms/weex/compiler/modules/recycle-list/component.js +0 -16
- package/src/platforms/weex/compiler/modules/recycle-list/index.js +0 -60
- package/src/platforms/weex/compiler/modules/recycle-list/recycle-list.js +0 -50
- package/src/platforms/weex/compiler/modules/recycle-list/text.js +0 -23
- package/src/platforms/weex/compiler/modules/recycle-list/v-bind.js +0 -21
- package/src/platforms/weex/compiler/modules/recycle-list/v-for.js +0 -33
- package/src/platforms/weex/compiler/modules/recycle-list/v-if.js +0 -63
- package/src/platforms/weex/compiler/modules/recycle-list/v-on.js +0 -25
- package/src/platforms/weex/compiler/modules/recycle-list/v-once.js +0 -19
- package/src/platforms/weex/compiler/modules/style.js +0 -87
- package/src/platforms/weex/entry-compiler.js +0 -2
- package/src/platforms/weex/entry-framework.js +0 -187
- package/src/platforms/weex/entry-runtime-factory.js +0 -6
- package/src/platforms/weex/runtime/components/index.js +0 -9
- package/src/platforms/weex/runtime/components/richtext.js +0 -82
- package/src/platforms/weex/runtime/components/transition-group.js +0 -148
- package/src/platforms/weex/runtime/components/transition.js +0 -9
- package/src/platforms/weex/runtime/directives/index.js +0 -2
- package/src/platforms/weex/runtime/index.js +0 -42
- package/src/platforms/weex/runtime/modules/attrs.js +0 -44
- package/src/platforms/weex/runtime/modules/class.js +0 -76
- package/src/platforms/weex/runtime/modules/events.js +0 -54
- package/src/platforms/weex/runtime/modules/index.js +0 -13
- package/src/platforms/weex/runtime/modules/style.js +0 -84
- package/src/platforms/weex/runtime/modules/transition.js +0 -270
- package/src/platforms/weex/runtime/node-ops.js +0 -91
- package/src/platforms/weex/runtime/patch.js +0 -16
- package/src/platforms/weex/runtime/recycle-list/render-component-template.js +0 -34
- package/src/platforms/weex/runtime/recycle-list/virtual-component.js +0 -136
- package/src/platforms/weex/runtime/text-node.js +0 -9
- package/src/platforms/weex/util/element.js +0 -52
- package/src/platforms/weex/util/index.js +0 -40
- package/src/platforms/weex/util/parser.js +0 -60
- package/src/server/bundle-renderer/create-bundle-renderer.js +0 -151
- package/src/server/bundle-renderer/create-bundle-runner.js +0 -150
- package/src/server/bundle-renderer/source-map-support.js +0 -45
- package/src/server/create-basic-renderer.js +0 -37
- package/src/server/create-renderer.js +0 -152
- package/src/server/optimizing-compiler/codegen.js +0 -264
- package/src/server/optimizing-compiler/index.js +0 -20
- package/src/server/optimizing-compiler/modules.js +0 -124
- package/src/server/optimizing-compiler/optimizer.js +0 -141
- package/src/server/optimizing-compiler/runtime-helpers.js +0 -150
- package/src/server/render-context.js +0 -130
- package/src/server/render-stream.js +0 -95
- package/src/server/render.js +0 -437
- package/src/server/template-renderer/create-async-file-mapper.js +0 -57
- package/src/server/template-renderer/index.js +0 -277
- package/src/server/template-renderer/parse-template.js +0 -42
- package/src/server/template-renderer/template-stream.js +0 -82
- package/src/server/util.js +0 -18
- package/src/server/webpack-plugin/client.js +0 -65
- package/src/server/webpack-plugin/server.js +0 -66
- package/src/server/webpack-plugin/util.js +0 -34
- package/src/server/write.js +0 -50
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { defineReactive } from 'core/observer/index'
|
|
2
|
+
import {
|
|
3
|
+
isReactive,
|
|
4
|
+
ReactiveFlags,
|
|
5
|
+
type ShallowReactiveMarker
|
|
6
|
+
} from './reactive'
|
|
7
|
+
import type { IfAny } from 'types/utils'
|
|
8
|
+
import Dep from 'core/observer/dep'
|
|
9
|
+
import { warn, isArray, def } from 'core/util'
|
|
10
|
+
import { TrackOpTypes, TriggerOpTypes } from './operations'
|
|
11
|
+
|
|
12
|
+
declare const RefSymbol: unique symbol
|
|
13
|
+
export declare const RawSymbol: unique symbol
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export const RefFlag = `__v_isRef`
|
|
19
|
+
|
|
20
|
+
export interface Ref<T = any> {
|
|
21
|
+
value: T
|
|
22
|
+
/**
|
|
23
|
+
* Type differentiator only.
|
|
24
|
+
* We need this to be in public d.ts but don't want it to show up in IDE
|
|
25
|
+
* autocomplete, so we use a private Symbol instead.
|
|
26
|
+
*/
|
|
27
|
+
[RefSymbol]: true
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
dep?: Dep
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
[RefFlag]: true
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isRef<T>(r: Ref<T> | unknown): r is Ref<T>
|
|
39
|
+
export function isRef(r: any): r is Ref {
|
|
40
|
+
return !!(r && (r as Ref).__v_isRef === true)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function ref<T extends object>(
|
|
44
|
+
value: T
|
|
45
|
+
): [T] extends [Ref] ? T : Ref<UnwrapRef<T>>
|
|
46
|
+
export function ref<T>(value: T): Ref<UnwrapRef<T>>
|
|
47
|
+
export function ref<T = any>(): Ref<T | undefined>
|
|
48
|
+
export function ref(value?: unknown) {
|
|
49
|
+
return createRef(value, false)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare const ShallowRefMarker: unique symbol
|
|
53
|
+
|
|
54
|
+
export type ShallowRef<T = any> = Ref<T> & { [ShallowRefMarker]?: true }
|
|
55
|
+
|
|
56
|
+
export function shallowRef<T extends object>(
|
|
57
|
+
value: T
|
|
58
|
+
): T extends Ref ? T : ShallowRef<T>
|
|
59
|
+
export function shallowRef<T>(value: T): ShallowRef<T>
|
|
60
|
+
export function shallowRef<T = any>(): ShallowRef<T | undefined>
|
|
61
|
+
export function shallowRef(value?: unknown) {
|
|
62
|
+
return createRef(value, true)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function createRef(rawValue: unknown, shallow: boolean) {
|
|
66
|
+
if (isRef(rawValue)) {
|
|
67
|
+
return rawValue
|
|
68
|
+
}
|
|
69
|
+
const ref: any = {}
|
|
70
|
+
def(ref, RefFlag, true)
|
|
71
|
+
def(ref, ReactiveFlags.IS_SHALLOW, true)
|
|
72
|
+
ref.dep = defineReactive(ref, 'value', rawValue, null, shallow)
|
|
73
|
+
return ref
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function triggerRef(ref: Ref) {
|
|
77
|
+
if (__DEV__ && !ref.dep) {
|
|
78
|
+
warn(`received object is not a triggerable ref.`)
|
|
79
|
+
}
|
|
80
|
+
if (__DEV__) {
|
|
81
|
+
ref.dep &&
|
|
82
|
+
ref.dep.notify({
|
|
83
|
+
type: TriggerOpTypes.SET,
|
|
84
|
+
target: ref,
|
|
85
|
+
key: 'value'
|
|
86
|
+
})
|
|
87
|
+
} else {
|
|
88
|
+
ref.dep && ref.dep.notify()
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function unref<T>(ref: T | Ref<T>): T {
|
|
93
|
+
return isRef(ref) ? (ref.value as any) : ref
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type CustomRefFactory<T> = (
|
|
97
|
+
track: () => void,
|
|
98
|
+
trigger: () => void
|
|
99
|
+
) => {
|
|
100
|
+
get: () => T
|
|
101
|
+
set: (value: T) => void
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function customRef<T>(factory: CustomRefFactory<T>): Ref<T> {
|
|
105
|
+
const dep = new Dep()
|
|
106
|
+
const { get, set } = factory(
|
|
107
|
+
() => {
|
|
108
|
+
if (__DEV__) {
|
|
109
|
+
dep.depend({
|
|
110
|
+
target: ref,
|
|
111
|
+
type: TrackOpTypes.GET,
|
|
112
|
+
key: 'value'
|
|
113
|
+
})
|
|
114
|
+
} else {
|
|
115
|
+
dep.depend()
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
() => {
|
|
119
|
+
if (__DEV__) {
|
|
120
|
+
dep.notify({
|
|
121
|
+
target: ref,
|
|
122
|
+
type: TriggerOpTypes.SET,
|
|
123
|
+
key: 'value'
|
|
124
|
+
})
|
|
125
|
+
} else {
|
|
126
|
+
dep.notify()
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
const ref = {
|
|
131
|
+
get value() {
|
|
132
|
+
return get()
|
|
133
|
+
},
|
|
134
|
+
set value(newVal) {
|
|
135
|
+
set(newVal)
|
|
136
|
+
}
|
|
137
|
+
} as any
|
|
138
|
+
def(ref, RefFlag, true)
|
|
139
|
+
return ref
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export type ToRefs<T = any> = {
|
|
143
|
+
[K in keyof T]: ToRef<T[K]>
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function toRefs<T extends object>(object: T): ToRefs<T> {
|
|
147
|
+
if (__DEV__ && !isReactive(object)) {
|
|
148
|
+
warn(`toRefs() expects a reactive object but received a plain one.`)
|
|
149
|
+
}
|
|
150
|
+
const ret: any = isArray(object) ? new Array(object.length) : {}
|
|
151
|
+
for (const key in object) {
|
|
152
|
+
ret[key] = toRef(object, key)
|
|
153
|
+
}
|
|
154
|
+
return ret
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export type ToRef<T> = IfAny<T, Ref<T>, [T] extends [Ref] ? T : Ref<T>>
|
|
158
|
+
|
|
159
|
+
export function toRef<T extends object, K extends keyof T>(
|
|
160
|
+
object: T,
|
|
161
|
+
key: K
|
|
162
|
+
): ToRef<T[K]>
|
|
163
|
+
|
|
164
|
+
export function toRef<T extends object, K extends keyof T>(
|
|
165
|
+
object: T,
|
|
166
|
+
key: K,
|
|
167
|
+
defaultValue: T[K]
|
|
168
|
+
): ToRef<Exclude<T[K], undefined>>
|
|
169
|
+
|
|
170
|
+
export function toRef<T extends object, K extends keyof T>(
|
|
171
|
+
object: T,
|
|
172
|
+
key: K,
|
|
173
|
+
defaultValue?: T[K]
|
|
174
|
+
): ToRef<T[K]> {
|
|
175
|
+
const val = object[key]
|
|
176
|
+
if (isRef(val)) {
|
|
177
|
+
return val as any
|
|
178
|
+
}
|
|
179
|
+
const ref = {
|
|
180
|
+
get value() {
|
|
181
|
+
const val = object[key]
|
|
182
|
+
return val === undefined ? (defaultValue as T[K]) : val
|
|
183
|
+
},
|
|
184
|
+
set value(newVal) {
|
|
185
|
+
object[key] = newVal
|
|
186
|
+
}
|
|
187
|
+
} as any
|
|
188
|
+
def(ref, RefFlag, true)
|
|
189
|
+
return ref
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* This is a special exported interface for other packages to declare
|
|
194
|
+
* additional types that should bail out for ref unwrapping. For example
|
|
195
|
+
* \@vue/runtime-dom can declare it like so in its d.ts:
|
|
196
|
+
*
|
|
197
|
+
* ``` ts
|
|
198
|
+
* declare module 'vue' {
|
|
199
|
+
* export interface RefUnwrapBailTypes {
|
|
200
|
+
* runtimeDOMBailTypes: Node | Window
|
|
201
|
+
* }
|
|
202
|
+
* }
|
|
203
|
+
* ```
|
|
204
|
+
*
|
|
205
|
+
* Note that api-extractor somehow refuses to include `declare module`
|
|
206
|
+
* augmentations in its generated d.ts, so we have to manually append them
|
|
207
|
+
* to the final generated d.ts in our build process.
|
|
208
|
+
*/
|
|
209
|
+
export interface RefUnwrapBailTypes {
|
|
210
|
+
runtimeDOMBailTypes: Node | Window
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export type ShallowUnwrapRef<T> = {
|
|
214
|
+
[K in keyof T]: T[K] extends Ref<infer V>
|
|
215
|
+
? V
|
|
216
|
+
: // if `V` is `unknown` that means it does not extend `Ref` and is undefined
|
|
217
|
+
T[K] extends Ref<infer V> | undefined
|
|
218
|
+
? unknown extends V
|
|
219
|
+
? undefined
|
|
220
|
+
: V | undefined
|
|
221
|
+
: T[K]
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export type UnwrapRef<T> = T extends ShallowRef<infer V>
|
|
225
|
+
? V
|
|
226
|
+
: T extends Ref<infer V>
|
|
227
|
+
? UnwrapRefSimple<V>
|
|
228
|
+
: UnwrapRefSimple<T>
|
|
229
|
+
|
|
230
|
+
type BaseTypes = string | number | boolean
|
|
231
|
+
type CollectionTypes = IterableCollections | WeakCollections
|
|
232
|
+
type IterableCollections = Map<any, any> | Set<any>
|
|
233
|
+
type WeakCollections = WeakMap<any, any> | WeakSet<any>
|
|
234
|
+
|
|
235
|
+
export type UnwrapRefSimple<T> = T extends
|
|
236
|
+
| Function
|
|
237
|
+
| CollectionTypes
|
|
238
|
+
| BaseTypes
|
|
239
|
+
| Ref
|
|
240
|
+
| RefUnwrapBailTypes[keyof RefUnwrapBailTypes]
|
|
241
|
+
| { [RawSymbol]?: true }
|
|
242
|
+
? T
|
|
243
|
+
: T extends Array<any>
|
|
244
|
+
? { [K in keyof T]: UnwrapRefSimple<T[K]> }
|
|
245
|
+
: T extends object & { [ShallowReactiveMarker]?: never }
|
|
246
|
+
? {
|
|
247
|
+
[P in keyof T]: P extends symbol ? T[P] : UnwrapRef<T[P]>
|
|
248
|
+
}
|
|
249
|
+
: T
|
package/types/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { Vue } from
|
|
2
|
-
import
|
|
1
|
+
import { Vue } from './vue'
|
|
2
|
+
import './umd'
|
|
3
3
|
|
|
4
|
-
export default Vue
|
|
4
|
+
export default Vue
|
|
5
5
|
|
|
6
|
-
export {
|
|
7
|
-
CreateElement,
|
|
8
|
-
VueConstructor
|
|
9
|
-
} from "./vue";
|
|
6
|
+
export { CreateElement, VueConstructor } from './vue'
|
|
10
7
|
|
|
11
8
|
export {
|
|
12
9
|
Component,
|
|
@@ -22,12 +19,9 @@ export {
|
|
|
22
19
|
WatchOptionsWithHandler,
|
|
23
20
|
DirectiveFunction,
|
|
24
21
|
DirectiveOptions
|
|
25
|
-
} from
|
|
22
|
+
} from './options'
|
|
26
23
|
|
|
27
|
-
export {
|
|
28
|
-
PluginFunction,
|
|
29
|
-
PluginObject
|
|
30
|
-
} from "./plugin";
|
|
24
|
+
export { PluginFunction, PluginObject } from './plugin'
|
|
31
25
|
|
|
32
26
|
export {
|
|
33
27
|
VNodeChildren,
|
|
@@ -36,4 +30,7 @@ export {
|
|
|
36
30
|
VNodeComponentOptions,
|
|
37
31
|
VNodeData,
|
|
38
32
|
VNodeDirective
|
|
39
|
-
} from
|
|
33
|
+
} from './vnode'
|
|
34
|
+
|
|
35
|
+
export * from './v3'
|
|
36
|
+
export * from './v3-generated'
|