Skip to content

Commit

Permalink
feat(add): provide & inject api
Browse files Browse the repository at this point in the history
  • Loading branch information
gcclll committed Jan 21, 2021
1 parent 18fb22b commit b4a1cbc
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
6 changes: 6 additions & 0 deletions packages/runtime-core/src/apiDefineComponent.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { isFunction } from '@vue/shared'
import { AllowedComponentProps, ComponentCustomProps } from './component'
import { EmitsOptions } from './componentEmits'
import {
Expand Down Expand Up @@ -59,3 +60,8 @@ export type DefineComponent<
Defaults
> &
PP

// implementation, close to no-op
export function defineComponent(options: unknown) {
return isFunction(options) ? { setup: options, name: options.name } : options
}
24 changes: 24 additions & 0 deletions packages/runtime-core/src/apiInject.ts
Original file line number Diff line number Diff line change
@@ -1 +1,25 @@
export interface InjectionKey<T> extends Symbol {}

export function provide<T>(key: InjectionKey<T> | string | number, value: T) {
// TODO
}

export function inject<T>(key: InjectionKey<T> | string): T | undefined
export function inject<T>(
key: InjectionKey<T> | string,
defaultValue: T,
treatDefaultAsFactory?: false
): T
export function inject<T>(
key: InjectionKey<T> | string,
defaultValue: T | (() => T),
treatDefaultAsFactory: true
): T

export function inject(
key: InjectionKey<any> | string,
defaultValue?: unknown,
treatDefaultAsFactory = false
) {
// TODO
}
1 change: 1 addition & 0 deletions packages/runtime-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export {
flushPostFlushCbs,
invalidateJob
} from './scheduler'
export { defineComponent } from './apiDefineComponent'

// Advanced API ----------------------------------------------------------------
export { h } from './h'
Expand Down

0 comments on commit b4a1cbc

Please sign in to comment.