feat(types): adjust type exports for manual render function and tooling usage

- v-model and v-show directives are now exposed as public
- compiler-used runtime helpers are now exposed for TS tooling, but marked as @private

close #1329
This commit is contained in:
Evan You
2020-06-10 14:57:21 -04:00
parent 9b5d13e598
commit e4dc03a8b1
13 changed files with 40 additions and 45 deletions

View File

@@ -8,7 +8,7 @@ interface CompiledSlotDescriptor {
/**
* Compiler runtime helper for creating dynamic slots object
* @internal
* @private
*/
export function createSlots(
slots: Record<string, Slot>,

View File

@@ -3,7 +3,7 @@ import { isArray, isString, isObject } from '@vue/shared'
/**
* v-for string
* @internal
* @private
*/
export function renderList(
source: string,
@@ -12,7 +12,6 @@ export function renderList(
/**
* v-for number
* @internal
*/
export function renderList(
source: number,
@@ -21,7 +20,6 @@ export function renderList(
/**
* v-for array
* @internal
*/
export function renderList<T>(
source: T[],
@@ -30,7 +28,6 @@ export function renderList<T>(
/**
* v-for iterable
* @internal
*/
export function renderList<T>(
source: Iterable<T>,
@@ -39,7 +36,6 @@ export function renderList<T>(
/**
* v-for object
* @internal
*/
export function renderList<T>(
source: T,
@@ -50,7 +46,9 @@ export function renderList<T>(
) => VNodeChild
): VNodeChild[]
// actual implementation
/**
* Actual implementation
*/
export function renderList(
source: any,
renderItem: (...args: any[]) => VNodeChild

View File

@@ -12,7 +12,7 @@ import { warn } from '../warning'
/**
* Compiler runtime helper for rendering <slot/>
* @internal
* @private
*/
export function renderSlot(
slots: Slots,

View File

@@ -12,12 +12,18 @@ import { warn } from '../warning'
const COMPONENTS = 'components'
const DIRECTIVES = 'directives'
/**
* @private
*/
export function resolveComponent(name: string): Component | string | undefined {
return resolveAsset(COMPONENTS, name) || name
}
export const NULL_DYNAMIC_COMPONENT = Symbol()
/**
* @private
*/
export function resolveDynamicComponent(
component: unknown
): Component | string | typeof NULL_DYNAMIC_COMPONENT {
@@ -29,11 +35,17 @@ export function resolveDynamicComponent(
}
}
/**
* @private
*/
export function resolveDirective(name: string): Directive | undefined {
return resolveAsset(DIRECTIVES, name)
}
// overload 1: components
/**
* @private
* overload 1: components
*/
function resolveAsset(
type: typeof COMPONENTS,
name: string,
@@ -44,7 +56,7 @@ function resolveAsset(
type: typeof DIRECTIVES,
name: string
): Directive | undefined
// implementation
function resolveAsset(
type: typeof COMPONENTS | typeof DIRECTIVES,
name: string,

View File

@@ -8,14 +8,14 @@ export let currentScopeId: string | null = null
const scopeIdStack: string[] = []
/**
* @internal
* @private
*/
export function pushScopeId(id: string) {
scopeIdStack.push((currentScopeId = id))
}
/**
* @internal
* @private
*/
export function popScopeId() {
scopeIdStack.pop()
@@ -23,7 +23,7 @@ export function popScopeId() {
}
/**
* @internal
* @private
*/
export function withScopeId(id: string): <T extends Function>(fn: T) => T {
return ((fn: Function) =>

View File

@@ -3,7 +3,7 @@ import { warn } from '../warning'
/**
* For prefixing keys in v-on="obj" with "on"
* @internal
* @private
*/
export function toHandlers(obj: Record<string, any>): Record<string, any> {
const ret: Record<string, any> = {}

View File

@@ -7,7 +7,7 @@ import { ComponentInternalInstance } from '../component'
/**
* Wrap a slot function to memoize current rendering instance
* @internal
* @private
*/
export function withCtx(
fn: Slot,

View File

@@ -229,11 +229,11 @@ export {
// them in @vue/shared's typings
import { toDisplayString, camelize } from '@vue/shared'
/**
* @internal
* @private
*/
const _toDisplayString = toDisplayString
/**
* @internal
* @private
*/
const _camelize = camelize
export { _toDisplayString as toDisplayString, _camelize as camelize }

View File

@@ -161,7 +161,7 @@ let currentBlock: VNode[] | null = null
* disableTracking is true when creating a v-for fragment block, since a v-for
* fragment always diffs its children.
*
* @internal
* @private
*/
export function openBlock(disableTracking = false) {
blockStack.push((currentBlock = disableTracking ? null : []))
@@ -187,7 +187,7 @@ let shouldTrack = 1
* )
* ```
*
* @internal
* @private
*/
export function setBlockTracking(value: number) {
shouldTrack += value
@@ -198,7 +198,7 @@ export function setBlockTracking(value: number) {
* A block root keeps track of dynamic nodes within the block in the
* `dynamicChildren` array.
*
* @internal
* @private
*/
export function createBlock(
type: VNodeTypes | ClassComponent,
@@ -453,14 +453,14 @@ export function cloneVNode<T, U>(
}
/**
* @internal
* @private
*/
export function createTextVNode(text: string = ' ', flag: number = 0): VNode {
return createVNode(Text, null, text, flag)
}
/**
* @internal
* @private
*/
export function createStaticVNode(
content: string,
@@ -474,7 +474,7 @@ export function createStaticVNode(
}
/**
* @internal
* @private
*/
export function createCommentVNode(
text: string = '',