Skip to content

Commit

Permalink
fix(runtime-core): pass options to plugins (#561)
Browse files Browse the repository at this point in the history
  • Loading branch information
fnlctrl authored and yyx990803 committed Dec 24, 2019
1 parent 6a14542 commit 4d20981
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
4 changes: 2 additions & 2 deletions packages/runtime-core/__tests__/apiApp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,13 @@ describe('api: createApp', () => {
test('use', () => {
const PluginA: Plugin = app => app.provide('foo', 1)
const PluginB: Plugin = {
install: app => app.provide('bar', 2)
install: (app, arg1, arg2) => app.provide('bar', arg1 + arg2)
}
const PluginC: any = undefined

const app = createApp()
app.use(PluginA)
app.use(PluginB)
app.use(PluginB, 1, 1)

const Root = {
setup() {
Expand Down
10 changes: 5 additions & 5 deletions packages/runtime-core/src/apiCreateApp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { createVNode, cloneVNode } from './vnode'

export interface App<HostElement = any> {
config: AppConfig
use(plugin: Plugin, options?: any): this
use(plugin: Plugin, ...options: any[]): this
mixin(mixin: ComponentOptions): this
component(name: string): Component | undefined
component(name: string, component: Component): this
Expand Down Expand Up @@ -50,7 +50,7 @@ export interface AppContext {
reload?: () => void // HMR only
}

type PluginInstallFunction = (app: App) => any
type PluginInstallFunction = (app: App, ...options: any[]) => any

export type Plugin =
| PluginInstallFunction
Expand Down Expand Up @@ -97,15 +97,15 @@ export function createAppAPI<HostNode, HostElement>(
}
},

use(plugin: Plugin) {
use(plugin: Plugin, ...options: any[]) {
if (installedPlugins.has(plugin)) {
__DEV__ && warn(`Plugin has already been applied to target app.`)
} else if (isFunction(plugin)) {
installedPlugins.add(plugin)
plugin(app)
plugin(app, ...options)
} else if (plugin && isFunction(plugin.install)) {
installedPlugins.add(plugin)
plugin.install(app)
plugin.install(app, ...options)
} else if (__DEV__) {
warn(
`A plugin must either be a function or an object with an "install" ` +
Expand Down

0 comments on commit 4d20981

Please sign in to comment.