From 4d23d3ceb33cf1d86a36536202587d50e906dfc6 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Wed, 31 Jul 2019 11:24:56 +0300 Subject: [PATCH] [Markdown] Shim new platform - cleanup plugin (#41760) * [Markdown] Shim new platform - cleanup plugin --- .../core_plugins/vis_type_markdown/index.ts | 30 +++++++----- .../vis_type_markdown/package.json | 2 +- .../vis_type_markdown/public/index.ts | 40 ++------------- .../vis_type_markdown/public/legacy.ts | 35 +++++++++++++ .../public/markdown_fn.test.ts | 6 +-- .../vis_type_markdown/public/markdown_fn.ts | 2 +- .../vis_type_markdown/public/plugin.ts | 49 +++++++++++++++++++ 7 files changed, 111 insertions(+), 53 deletions(-) create mode 100644 src/legacy/core_plugins/vis_type_markdown/public/legacy.ts create mode 100644 src/legacy/core_plugins/vis_type_markdown/public/plugin.ts diff --git a/src/legacy/core_plugins/vis_type_markdown/index.ts b/src/legacy/core_plugins/vis_type_markdown/index.ts index 46e73d2642502..5bfea17be5824 100644 --- a/src/legacy/core_plugins/vis_type_markdown/index.ts +++ b/src/legacy/core_plugins/vis_type_markdown/index.ts @@ -18,19 +18,27 @@ */ import { resolve } from 'path'; -import { Legacy } from '../../../../kibana'; -import { LegacyPluginApi } from '../../plugin_discovery/types'; +import { Legacy } from 'kibana'; -// eslint-disable-next-line import/no-default-export -export default function MarkdownVisTypePlugin(kibana: LegacyPluginApi) { - const config: Legacy.PluginSpecOptions = { - id: 'vis_type_markdown', - require: ['data', 'visualizations'], +import { LegacyPluginApi, LegacyPluginInitializer } from '../../../../src/legacy/types'; + +const markdownPluginInitializer: LegacyPluginInitializer = ({ Plugin }: LegacyPluginApi) => + new Plugin({ + id: 'markdown_vis', + require: ['kibana', 'elasticsearch', 'visualizations', 'interpreter', 'data'], + publicDir: resolve(__dirname, 'public'), uiExports: { styleSheetPaths: resolve(__dirname, 'public/index.scss'), - hacks: ['plugins/vis_type_markdown/index'], + hacks: [resolve(__dirname, 'public/legacy')], + injectDefaultVars: server => ({}), }, - }; + init: (server: Legacy.Server) => ({}), + config(Joi: any) { + return Joi.object({ + enabled: Joi.boolean().default(true), + }).default(); + }, + } as Legacy.PluginSpecOptions); - return new kibana.Plugin(config); -} +// eslint-disable-next-line import/no-default-export +export default markdownPluginInitializer; diff --git a/src/legacy/core_plugins/vis_type_markdown/package.json b/src/legacy/core_plugins/vis_type_markdown/package.json index 62b275929ea10..5c233d82fe506 100644 --- a/src/legacy/core_plugins/vis_type_markdown/package.json +++ b/src/legacy/core_plugins/vis_type_markdown/package.json @@ -1,4 +1,4 @@ { - "name": "vis_type_markdown", + "name": "markdown_vis", "version": "kibana" } diff --git a/src/legacy/core_plugins/vis_type_markdown/public/index.ts b/src/legacy/core_plugins/vis_type_markdown/public/index.ts index 4ad15d47f2c93..22dd61b6bda9c 100644 --- a/src/legacy/core_plugins/vis_type_markdown/public/index.ts +++ b/src/legacy/core_plugins/vis_type_markdown/public/index.ts @@ -17,41 +17,9 @@ * under the License. */ -// @ts-ignore -import { markdownVis } from './markdown_vis'; -// @ts-ignore -import { kibanaMarkdown } from './markdown_fn'; +import { PluginInitializerContext } from '../../../../core/public'; +import { MarkdownPlugin as Plugin } from './plugin'; -// @ts-ignore -import { functionsRegistry } from '../../interpreter/public/registries'; -import { - visualizations as visualizationsService, - VisualizationsSetup, -} from '../../visualizations/public'; - -export interface SetupDeps { - visualizations: VisualizationsSetup; - data: any; +export function plugin(initializerContext: PluginInitializerContext) { + return new Plugin(initializerContext); } - -class VisTypeMarkdownPlugin { - constructor() {} - - public setup({ visualizations, data }: SetupDeps) { - visualizations.types.VisTypesRegistryProvider.register(() => markdownVis); - data.expressions.registerFunction(kibanaMarkdown); - } - - public start() {} - - public stop() {} -} - -new VisTypeMarkdownPlugin().setup({ - visualizations: visualizationsService, - data: { - expressions: { - registerFunction: (fn: any) => functionsRegistry.register(fn), - }, - }, -}); diff --git a/src/legacy/core_plugins/vis_type_markdown/public/legacy.ts b/src/legacy/core_plugins/vis_type_markdown/public/legacy.ts new file mode 100644 index 0000000000000..769fc72b4c661 --- /dev/null +++ b/src/legacy/core_plugins/vis_type_markdown/public/legacy.ts @@ -0,0 +1,35 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PluginInitializerContext } from 'kibana/public'; +import { npSetup, npStart } from 'ui/new_platform'; + +import { visualizations } from '../../visualizations/public'; +import { MarkdownPluginSetupDependencies } from './plugin'; +import { plugin } from '.'; + +const plugins: Readonly = { + visualizations, + data: npSetup.plugins.data, +}; + +const pluginInstance = plugin({} as PluginInitializerContext); + +export const setup = pluginInstance.setup(npSetup.core, plugins); +export const start = pluginInstance.start(npStart.core); diff --git a/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.test.ts b/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.test.ts index 64c5b7ddb4b2e..28021a763b287 100644 --- a/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.test.ts +++ b/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.test.ts @@ -19,12 +19,10 @@ // @ts-ignore import { functionWrapper } from '../../interpreter/test_helpers'; -import { kibanaMarkdown } from './markdown_fn'; - -jest.mock('ui/new_platform'); +import { createMarkdownVisFn } from './markdown_fn'; describe('interpreter/functions#markdown', () => { - const fn = functionWrapper(kibanaMarkdown); + const fn = functionWrapper(createMarkdownVisFn); const args = { font: { spec: { fontSize: 12 } }, openLinksInNewTab: true, diff --git a/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.ts b/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.ts index 40d0d796eb365..683ce521817f6 100644 --- a/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.ts +++ b/src/legacy/core_plugins/vis_type_markdown/public/markdown_fn.ts @@ -37,7 +37,7 @@ export interface MarkdownVisParams { type Return = Promise>; -export const kibanaMarkdown = (): ExpressionFunction< +export const createMarkdownVisFn = (): ExpressionFunction< typeof name, KibanaDatatable, Arguments, diff --git a/src/legacy/core_plugins/vis_type_markdown/public/plugin.ts b/src/legacy/core_plugins/vis_type_markdown/public/plugin.ts new file mode 100644 index 0000000000000..286b233280382 --- /dev/null +++ b/src/legacy/core_plugins/vis_type_markdown/public/plugin.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from '../../../../core/public'; +import { Plugin as DataPublicPlugin } from '../../../../plugins/data/public'; +import { VisualizationsSetup } from '../../visualizations/public'; + +import { markdownVis } from './markdown_vis'; +import { createMarkdownVisFn } from './markdown_fn'; + +/** @internal */ +export interface MarkdownPluginSetupDependencies { + data: ReturnType; + visualizations: VisualizationsSetup; +} + +/** @internal */ +export class MarkdownPlugin implements Plugin { + initializerContext: PluginInitializerContext; + + constructor(initializerContext: PluginInitializerContext) { + this.initializerContext = initializerContext; + } + + public setup(core: CoreSetup, { data, visualizations }: MarkdownPluginSetupDependencies) { + visualizations.types.VisTypesRegistryProvider.register(() => markdownVis); + data.expressions.registerFunction(createMarkdownVisFn); + } + + public start(core: CoreStart) { + // nothing to do here yet + } +}