diff --git a/config/kibana.yml b/config/kibana.yml index c816337f881d47..b84b63a133f530 100644 --- a/config/kibana.yml +++ b/config/kibana.yml @@ -181,3 +181,6 @@ # Maximum number of documents loaded by each shard to generate autocomplete suggestions. # This value must be a whole number greater than zero. Defaults to 100_000 #unifiedSearch.autocomplete.valueSuggestions.terminateAfter: 100000 + +# setting needed for POC of help-center +server.securityResponseHeaders.crossOriginOpenerPolicy: unsafe-none \ No newline at end of file diff --git a/package.json b/package.json index 55eb4bfd3daec2..aedad8ae8f5707 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,8 @@ "@elastic/ems-client": "8.5.1", "@elastic/eui": "95.1.0-backport.0", "@elastic/filesaver": "1.1.2", + "@elastic/help-center-common": "file:../help-center-sdk/packages/common", + "@elastic/help-center-host": "file:../help-center-sdk/packages/host", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", "@elastic/react-search-ui": "^1.20.2", @@ -270,6 +272,8 @@ "@kbn/core-execution-context-server-internal": "link:packages/core/execution-context/core-execution-context-server-internal", "@kbn/core-fatal-errors-browser": "link:packages/core/fatal-errors/core-fatal-errors-browser", "@kbn/core-fatal-errors-browser-internal": "link:packages/core/fatal-errors/core-fatal-errors-browser-internal", + "@kbn/core-help-center-browser": "link:packages/core/help-center/core-help-center-browser", + "@kbn/core-help-center-browser-internal": "link:packages/core/help-center/core-help-center-browser-internal", "@kbn/core-history-block-plugin": "link:test/plugin_functional/plugins/core_history_block", "@kbn/core-http-browser": "link:packages/core/http/core-http-browser", "@kbn/core-http-browser-internal": "link:packages/core/http/core-http-browser-internal", diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx index 637e87773cf7a8..3e72e99adf5951 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx @@ -37,6 +37,7 @@ import useObservable from 'react-use/lib/useObservable'; import { debounceTime, Observable } from 'rxjs'; import type { CustomBranding } from '@kbn/core-custom-branding-common'; +import { LocationHelpButton } from '@elastic/help-center-host'; import { useHeaderActionMenuMounter } from '../header/header_action_menu'; import { Breadcrumbs } from './breadcrumbs'; import { HeaderHelpMenu } from '../header/header_help_menu'; @@ -283,6 +284,9 @@ export const ProjectHeader = ({ + + + /packages/core/help-center/core-help-center-browser-internal'], +}; diff --git a/packages/core/help-center/core-help-center-browser-internal/kibana.jsonc b/packages/core/help-center/core-help-center-browser-internal/kibana.jsonc new file mode 100644 index 00000000000000..3ff1ebc6c3e0ff --- /dev/null +++ b/packages/core/help-center/core-help-center-browser-internal/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/core-help-center-browser-internal", + "owner": "@elastic/appex-sharedux" +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser-internal/package.json b/packages/core/help-center/core-help-center-browser-internal/package.json new file mode 100644 index 00000000000000..f9e90e56c6df35 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser-internal/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/core-help-center-browser-internal", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser-internal/src/help_center_service.ts b/packages/core/help-center/core-help-center-browser-internal/src/help_center_service.ts new file mode 100644 index 00000000000000..d02ec4d0aa5231 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser-internal/src/help_center_service.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Subject, BehaviorSubject } from 'rxjs'; +import { shareReplay, takeUntil, map } from 'rxjs'; +import type { HelpCenterSetup, HelpCenterStart } from '@kbn/core-help-center-browser'; +import { HelpTopic } from '@elastic/help-center-common'; + +export class HelpCenterService { + private helpCenterUrl$ = new BehaviorSubject(undefined); + private helpTopics$ = new BehaviorSubject>({}); + private version$ = new BehaviorSubject(undefined); + private stop$ = new Subject(); + + /** + * @public + */ + public setup(): HelpCenterSetup { + return { + configure: ({ helpCenterUrl, version, helpTopics }) => { + this.helpCenterUrl$.next(helpCenterUrl); + this.version$.next(version); + if (helpTopics && Object.keys(helpTopics).length > 0) { + this.helpTopics$.next(helpTopics); + } + }, + addHelpTopics: (helpTopics) => { + this.helpTopics$.next({ ...this.helpTopics$.value, ...helpTopics }); + }, + hasHelpTopics$: this.helpTopics$.pipe( + takeUntil(this.stop$), + map((cb) => Object.keys(cb).length > 0), + shareReplay(1) + ), + }; + } + + /** + * @public + */ + public start(): HelpCenterStart { + if (!this.helpTopics$) { + throw new Error('Setup needs to be called before start'); + } + return { + hasHelpTopics$: this.helpTopics$.pipe( + takeUntil(this.stop$), + map((cb) => Object.keys(cb).length > 0), + shareReplay(1) + ), + helpCenterUrl$: this.helpCenterUrl$.pipe(takeUntil(this.stop$), shareReplay(1)), + helpTopics$: this.helpTopics$.pipe(takeUntil(this.stop$), shareReplay(1)), + version$: this.version$.pipe(takeUntil(this.stop$), shareReplay(1)), + }; + } + + public stop() { + this.stop$.next(); + } +} diff --git a/packages/core/help-center/core-help-center-browser-internal/tsconfig.json b/packages/core/help-center/core-help-center-browser-internal/tsconfig.json new file mode 100644 index 00000000000000..b4b8fe926a43f6 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser-internal/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser/index.ts b/packages/core/help-center/core-help-center-browser/index.ts new file mode 100644 index 00000000000000..c52128d5edbdb8 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export type { HelpCenterSetup, HelpCenterStart } from './types'; diff --git a/packages/core/help-center/core-help-center-browser/jest.config.js b/packages/core/help-center/core-help-center-browser/jest.config.js new file mode 100644 index 00000000000000..c0e5e0dad272f4 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/help-center/core-help-center-browser'], +}; diff --git a/packages/core/help-center/core-help-center-browser/kibana.jsonc b/packages/core/help-center/core-help-center-browser/kibana.jsonc new file mode 100644 index 00000000000000..739cc188051669 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/core-help-center-browser", + "owner": "@elastic/appex-sharedux" +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser/package.json b/packages/core/help-center/core-help-center-browser/package.json new file mode 100644 index 00000000000000..c6f832feb9e248 --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/core-help-center-browser", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser/tsconfig.json b/packages/core/help-center/core-help-center-browser/tsconfig.json new file mode 100644 index 00000000000000..d89e83fdea135d --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} \ No newline at end of file diff --git a/packages/core/help-center/core-help-center-browser/types.ts b/packages/core/help-center/core-help-center-browser/types.ts new file mode 100644 index 00000000000000..63683d197881ae --- /dev/null +++ b/packages/core/help-center/core-help-center-browser/types.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Observable } from 'rxjs'; +import { HelpTopic } from '@elastic/help-center-common'; + +export interface HelpCenterStart { + helpTopics$: Observable>; + hasHelpTopics$: Observable; + version$: Observable; + helpCenterUrl$: Observable; +} + +export interface HelpCenterSetup { + configure: (config: { + helpCenterUrl: string; + version: string; + helpTopics?: Record; + }) => void; + addHelpTopics: (helpTopics: Record) => void; + hasHelpTopics$: Observable; +} diff --git a/packages/core/lifecycle/core-lifecycle-browser/src/core_setup.ts b/packages/core/lifecycle/core-lifecycle-browser/src/core_setup.ts index fa276f375414b8..4538e5cab1da09 100644 --- a/packages/core/lifecycle/core-lifecycle-browser/src/core_setup.ts +++ b/packages/core/lifecycle/core-lifecycle-browser/src/core_setup.ts @@ -18,6 +18,7 @@ import type { CustomBrandingSetup } from '@kbn/core-custom-branding-browser'; import type { PluginsServiceSetup } from '@kbn/core-plugins-contracts-browser'; import type { SecurityServiceSetup } from '@kbn/core-security-browser'; import type { UserProfileServiceSetup } from '@kbn/core-user-profile-browser'; +import type { HelpCenterSetup } from '@kbn/core-help-center-browser'; import type { CoreStart } from './core_start'; /** @@ -43,6 +44,8 @@ export interface CoreSetup ); }; + +export const HelpCenterWrapper: FC< + PropsWithChildren<{ + helpTopics$: Observable>; + helpCenterUrl$: Observable; + version$: Observable; + }> +> = ({ helpTopics$, version$, helpCenterUrl$, children }) => { + const helpTopics = useObservable(helpTopics$); + const version = useObservable(version$); + const helpCenterUrl = useObservable(helpCenterUrl$); + + if (!helpTopics || !version || !helpCenterUrl) { + return <>{children}; + } + + return ( + + {children} + + + ); +}; diff --git a/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx b/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx index 0cfa0a0da2bc4d..a7f6fae943dc86 100644 --- a/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx +++ b/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx @@ -17,10 +17,12 @@ import type { I18nStart } from '@kbn/core-i18n-browser'; import type { OverlayStart } from '@kbn/core-overlays-browser'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; -import { AppWrapper } from './app_containers'; +import { HelpCenterStart } from '@kbn/core-help-center-browser'; +import { AppWrapper, HelpCenterWrapper } from './app_containers'; interface StartServices { analytics: AnalyticsServiceStart; + helpCenter: HelpCenterStart; i18n: I18nStart; theme: ThemeServiceStart; } @@ -41,7 +43,14 @@ export interface StartDeps extends StartServices { * @internal */ export class RenderingService { - start({ application, chrome, overlays, targetDomElement, ...startServices }: StartDeps) { + start({ + application, + chrome, + overlays, + targetDomElement, + helpCenter, + ...startServices + }: StartDeps) { const chromeHeader = chrome.getHeaderComponent(); const appComponent = application.getComponent(); const bannerComponent = overlays.banners.getComponent(); @@ -54,10 +63,11 @@ export class RenderingService { body.classList.remove(...previousClasses); body.classList.add(...newClasses); }); + const { helpCenterUrl$, helpTopics$, version$ } = helpCenter; ReactDOM.render( - <> + {/* Fixed headers */} {chromeHeader} @@ -72,7 +82,7 @@ export class RenderingService { {/* The actual plugin/app */} {appComponent} - + , targetDomElement ); diff --git a/packages/core/root/core-root-browser-internal/src/core_system.ts b/packages/core/root/core-root-browser-internal/src/core_system.ts index f06f1becbf2483..c886fe48670b8b 100644 --- a/packages/core/root/core-root-browser-internal/src/core_system.ts +++ b/packages/core/root/core-root-browser-internal/src/core_system.ts @@ -38,6 +38,7 @@ import { PluginsService } from '@kbn/core-plugins-browser-internal'; import { CustomBrandingService } from '@kbn/core-custom-branding-browser-internal'; import { SecurityService } from '@kbn/core-security-browser-internal'; import { UserProfileService } from '@kbn/core-user-profile-browser-internal'; +import { HelpCenterService } from '@kbn/core-help-center-browser-internal'; import { KBN_LOAD_MARKS } from './events'; import { fetchOptionalMemoryInfo } from './fetch_optional_memory_info'; import { @@ -107,6 +108,7 @@ export class CoreSystem { private readonly customBranding: CustomBrandingService; private readonly security: SecurityService; private readonly userProfile: UserProfileService; + private readonly helpCenter: HelpCenterService; private fatalErrorsSetup: FatalErrorsSetup | null = null; constructor(params: CoreSystemParams) { @@ -154,6 +156,7 @@ export class CoreSystem { this.plugins = new PluginsService(this.coreContext, injectedMetadata.uiPlugins); this.coreApp = new CoreAppsService(this.coreContext); this.customBranding = new CustomBrandingService(); + this.helpCenter = new HelpCenterService(); performance.mark(KBN_LOAD_MARKS, { detail: LOAD_CORE_CREATED, @@ -247,6 +250,7 @@ export class CoreSystem { const settings = this.settings.setup({ http, injectedMetadata }); const notifications = this.notifications.setup({ uiSettings, analytics }); const customBranding = this.customBranding.setup({ injectedMetadata }); + const helpCenter = this.helpCenter.setup(); const application = this.application.setup({ http, analytics }); this.coreApp.setup({ application, http, injectedMetadata, notifications }); @@ -255,6 +259,7 @@ export class CoreSystem { analytics, application, fatalErrors: this.fatalErrorsSetup, + helpCenter, http, injectedMetadata, notifications, @@ -344,6 +349,7 @@ export class CoreSystem { customBranding, }); const deprecations = this.deprecations.start({ http }); + const helpCenter = this.helpCenter.start(); this.coreApp.start({ application, @@ -362,6 +368,7 @@ export class CoreSystem { chrome, docLinks, executionContext, + helpCenter, http, theme, savedObjects, @@ -391,6 +398,7 @@ export class CoreSystem { application, chrome, analytics, + helpCenter, i18n, overlays, theme, diff --git a/tsconfig.base.json b/tsconfig.base.json index 8baaf9a5c0dd73..9e38094158e49f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -340,6 +340,10 @@ "@kbn/core-fatal-errors-browser-internal/*": ["packages/core/fatal-errors/core-fatal-errors-browser-internal/*"], "@kbn/core-fatal-errors-browser-mocks": ["packages/core/fatal-errors/core-fatal-errors-browser-mocks"], "@kbn/core-fatal-errors-browser-mocks/*": ["packages/core/fatal-errors/core-fatal-errors-browser-mocks/*"], + "@kbn/core-help-center-browser": ["packages/core/help-center/core-help-center-browser"], + "@kbn/core-help-center-browser/*": ["packages/core/help-center/core-help-center-browser/*"], + "@kbn/core-help-center-browser-internal": ["packages/core/help-center/core-help-center-browser-internal"], + "@kbn/core-help-center-browser-internal/*": ["packages/core/help-center/core-help-center-browser-internal/*"], "@kbn/core-history-block-plugin": ["test/plugin_functional/plugins/core_history_block"], "@kbn/core-history-block-plugin/*": ["test/plugin_functional/plugins/core_history_block/*"], "@kbn/core-http-browser": ["packages/core/http/core-http-browser"], diff --git a/x-pack/plugins/serverless_observability/public/mappings_for_docs.ts b/x-pack/plugins/serverless_observability/public/mappings_for_docs.ts new file mode 100644 index 00000000000000..cd8b2701e5f39d --- /dev/null +++ b/x-pack/plugins/serverless_observability/public/mappings_for_docs.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +const HELP_CENTER_CREATE_SLO = '/observability/create-an-slo'; +const HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG = '/observability/devtools/search-profiler/overview'; +const HELP_CENTER_OBS_DISCOVER = '/observability/discover'; +const HELP_CENTER_OBS_INDEX_MAPPING = '/observability/index-management/index-mapping'; +const HELP_CENTER_OBS_KIBANA_SEARCH = '/observability/search'; +const HELP_CENTER_OBS_PREPROCESS_DATA = + '/observability/project-settings/preprocess-data-before-indexing'; +const HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE = + '/observability/devtools/console/query-cluster-with-console'; +const HELP_CENTER_API_KEYS = '/serverless/api-keys'; + +const createItem = (name: string, hostPath?: string | RegExp) => ({ + name, + path: name, + hostPath, + popup: { width: 600, height: 800 }, +}); + +export const helpTopics = { + [HELP_CENTER_CREATE_SLO]: createItem(HELP_CENTER_CREATE_SLO, '/observability/create-an-slo'), + [HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG]: createItem( + HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG, + '/observability/devtools/search-profiler/overview' + ), + [HELP_CENTER_OBS_DISCOVER]: createItem(HELP_CENTER_OBS_DISCOVER, '/observability/discover'), + [HELP_CENTER_OBS_INDEX_MAPPING]: createItem( + HELP_CENTER_OBS_INDEX_MAPPING, + '/observability/index-management/index-mapping' + ), + [HELP_CENTER_OBS_KIBANA_SEARCH]: createItem( + HELP_CENTER_OBS_KIBANA_SEARCH, + '/observability/search' + ), + [HELP_CENTER_OBS_PREPROCESS_DATA]: createItem( + HELP_CENTER_OBS_PREPROCESS_DATA, + '/observability/project-settings/preprocess-data-before-indexing' + ), + [HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE]: createItem( + HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE, + '/observability/devtools/console/query-cluster-with-console' + ), + [HELP_CENTER_API_KEYS]: createItem(HELP_CENTER_API_KEYS, 'serverless/api_keys'), +}; diff --git a/x-pack/plugins/serverless_observability/public/plugin.ts b/x-pack/plugins/serverless_observability/public/plugin.ts index 4910b7de92a44e..d3f580fc85b42a 100644 --- a/x-pack/plugins/serverless_observability/public/plugin.ts +++ b/x-pack/plugins/serverless_observability/public/plugin.ts @@ -17,6 +17,7 @@ import { ServerlessObservabilityPublicSetupDependencies, ServerlessObservabilityPublicStartDependencies, } from './types'; +import { helpTopics } from './mappings_for_docs'; export class ServerlessObservabilityPlugin implements @@ -42,6 +43,12 @@ export class ServerlessObservabilityPlugin }) ); + _core.helpCenter.configure({ + helpCenterUrl: 'https://www.elastic.co/docs/current/serverless/', + version: '0.0.1', + helpTopics, + }); + return {}; } diff --git a/x-pack/plugins/serverless_search/public/mappings_for_docs.ts b/x-pack/plugins/serverless_search/public/mappings_for_docs.ts new file mode 100644 index 00000000000000..c884a399b314ac --- /dev/null +++ b/x-pack/plugins/serverless_search/public/mappings_for_docs.ts @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +const HELP_CENTER_ES_HOME = 'elasticsearch/what-is-elasticsearch-serverless'; +const HELP_CENTER_CONSOLE = 'devtools/run-api-requests-in-the-console'; +const HELP_CENTER_SEARCH_PROFILER = 'devtools/profile-queries-and-aggregations'; +const HELP_CENTER_GROK = 'devtools/debug-grok-expressions'; +const HELP_CENTER_CONNECTORS = 'elasticsearch/ingest-data-through-integrations-connector-client'; +const HELP_CENTER_CONNECTOR_CLIENT = '/elasticsearch/setup-connector-client'; +const HELP_CENTER_ES_DIAGNOSE_AND_DEBUG = '/elasticsearch/devtools/search-profiler/overview'; +const HELP_CENTER_ES_DISCOVER = '/elasticsearch/discover'; +const HELP_CENTER_ES_INDEX_MAPPING = '/elasticsearch/index-management/index-mapping'; +const HELP_CENTER_ES_KIBANA_SEARCH = '/elasticsearch/search'; +const HELP_CENTER_ES_PREPROCESS_DATA = + '/elasticsearch/project-settings/preprocess-data-before-indexing'; +const HELP_CENTER_QUERY_CLUSTER_WITH_CONSOLE = + '/elasticsearch/devtools/console/query-cluster-with-console'; +// const HELP_CENTER_FIND_APPS_AND_OBJECTS = ''; +// const HELP_CENTER_INDEX_MAPPING = ''; + +// Observability specific +const HELP_CENTER_CREATE_SLO = '/observability/create-an-slo'; +const HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG = '/observability/devtools/search-profiler/overview'; +const HELP_CENTER_OBS_DISCOVER = '/observability/discover'; +const HELP_CENTER_OBS_INDEX_MAPPING = '/observability/index-management/index-mapping'; +const HELP_CENTER_OBS_KIBANA_SEARCH = '/observability/search'; +const HELP_CENTER_OBS_PREPROCESS_DATA = + '/observability/project-settings/preprocess-data-before-indexing'; +const HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE = + '/observability/devtools/console/query-cluster-with-console'; +// const HELP_CENTER_PREPROCESS_DATA = ''; +// const HELP_CENTER_SEARCH_PROFILER_BASICS = ''; + +// Security specific +const HELP_CENTER_SEC_DIAGNOSE_AND_DEBUG = '/security/devtools/search-profiler/overview'; +const HELP_CENTER_SEC_DISCOVER = '/security/discover'; +const HELP_CENTER_SEC_INDEX_MAPPING = '/security/index-management/index-mapping'; +const HELP_CENTER_SEC_KIBANA_SEARCH = '/security/search'; +const HELP_CENTER_SEC_NAV_AND_INTERACT_WITH_SECURITY = '/security/interact-with-ui'; +const HELP_CENTER_SEC_PREPROCESS_DATA = + '/security/project-settings/preprocess-data-before-indexing'; +const HELP_CENTER_SEC_QUERY_CLUSTER_WITH_CONSOLE = + '/security/devtools/console/query-cluster-with-console'; +// const HELP_CENTER_ = ''; +const HELP_CENTER_API_KEYS = '/serverless/api-keys'; + +const createItem = (name: string, hostPath?: string | RegExp) => ({ + name, + path: name, + hostPath, + popup: { width: 600, height: 800 }, +}); + +export const helpTopics = { + [HELP_CENTER_ES_HOME]: createItem(HELP_CENTER_ES_HOME), + [HELP_CENTER_CONSOLE]: createItem(HELP_CENTER_CONSOLE, '/console'), + [HELP_CENTER_SEARCH_PROFILER]: createItem(HELP_CENTER_SEARCH_PROFILER, '/searchprofiler'), + [HELP_CENTER_GROK]: createItem(HELP_CENTER_GROK, '/grokdebugger'), + [HELP_CENTER_CONNECTORS]: createItem(HELP_CENTER_CONNECTORS, '/connectors'), + [HELP_CENTER_CONNECTOR_CLIENT]: createItem( + HELP_CENTER_CONNECTOR_CLIENT, + '/elasticsearch/setup-connector-client' + ), + [HELP_CENTER_CREATE_SLO]: createItem(HELP_CENTER_CREATE_SLO, '/observability/create-an-slo'), + [HELP_CENTER_ES_DIAGNOSE_AND_DEBUG]: createItem( + HELP_CENTER_ES_DIAGNOSE_AND_DEBUG, + '/elasticsearch/devtools/search-profiler/overview' + ), + [HELP_CENTER_ES_DISCOVER]: createItem(HELP_CENTER_ES_DISCOVER, '/elasticsearch/discover'), + [HELP_CENTER_ES_INDEX_MAPPING]: createItem( + HELP_CENTER_ES_INDEX_MAPPING, + '/elasticsearch/index-management/index-mapping' + ), + [HELP_CENTER_ES_KIBANA_SEARCH]: createItem(HELP_CENTER_ES_KIBANA_SEARCH, '/elasticsearch/search'), + [HELP_CENTER_ES_PREPROCESS_DATA]: createItem( + HELP_CENTER_ES_PREPROCESS_DATA, + '/elasticsearch/project-settings/preprocess-data-before-indexing' + ), + [HELP_CENTER_QUERY_CLUSTER_WITH_CONSOLE]: createItem( + HELP_CENTER_QUERY_CLUSTER_WITH_CONSOLE, + '/elasticsearch/devtools/console/query-cluster-with-console' + ), + [HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG]: createItem( + HELP_CENTER_OBS_DIAGNOSE_AND_DEBUG, + '/observability/devtools/search-profiler/overview' + ), + [HELP_CENTER_OBS_DISCOVER]: createItem(HELP_CENTER_OBS_DISCOVER, '/observability/discover'), + [HELP_CENTER_OBS_INDEX_MAPPING]: createItem( + HELP_CENTER_OBS_INDEX_MAPPING, + '/observability/index-management/index-mapping' + ), + [HELP_CENTER_OBS_KIBANA_SEARCH]: createItem( + HELP_CENTER_OBS_KIBANA_SEARCH, + '/observability/search' + ), + [HELP_CENTER_OBS_PREPROCESS_DATA]: createItem( + HELP_CENTER_OBS_PREPROCESS_DATA, + '/observability/project-settings/preprocess-data-before-indexing' + ), + [HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE]: createItem( + HELP_CENTER_OBS_QUERY_CLUSTER_WITH_CONSOLE, + '/observability/devtools/console/query-cluster-with-console' + ), + [HELP_CENTER_SEC_DIAGNOSE_AND_DEBUG]: createItem( + HELP_CENTER_SEC_DIAGNOSE_AND_DEBUG, + '/security/devtools/search-profiler/overview' + ), + [HELP_CENTER_SEC_DISCOVER]: createItem(HELP_CENTER_SEC_DISCOVER, '/security/discover'), + [HELP_CENTER_SEC_INDEX_MAPPING]: createItem( + HELP_CENTER_SEC_INDEX_MAPPING, + '/security/index-management/index-mapping' + ), + [HELP_CENTER_SEC_KIBANA_SEARCH]: createItem(HELP_CENTER_SEC_KIBANA_SEARCH, '/security/search'), + [HELP_CENTER_SEC_NAV_AND_INTERACT_WITH_SECURITY]: createItem( + HELP_CENTER_SEC_NAV_AND_INTERACT_WITH_SECURITY, + '/security/interact-with-ui' + ), + [HELP_CENTER_SEC_PREPROCESS_DATA]: createItem( + HELP_CENTER_SEC_PREPROCESS_DATA, + '/security/project-settings/preprocess-data-before-indexing' + ), + [HELP_CENTER_SEC_QUERY_CLUSTER_WITH_CONSOLE]: createItem( + HELP_CENTER_SEC_QUERY_CLUSTER_WITH_CONSOLE, + '/security/devtools/console/query-cluster-with-console' + ), + [HELP_CENTER_API_KEYS]: createItem(HELP_CENTER_API_KEYS, 'serverless/api_keys'), +}; diff --git a/x-pack/plugins/serverless_search/public/plugin.ts b/x-pack/plugins/serverless_search/public/plugin.ts index e72e1a4575079a..bb9244e3c2c79c 100644 --- a/x-pack/plugins/serverless_search/public/plugin.ts +++ b/x-pack/plugins/serverless_search/public/plugin.ts @@ -29,6 +29,7 @@ import { import { createIndexDocumentsContent } from './application/components/index_documents/documents_tab'; import { getErrorCode, getErrorMessage, isKibanaServerError } from './utils/get_error_message'; import { navigationTree } from './navigation_tree'; +import { helpTopics } from './mappings_for_docs'; export class ServerlessSearchPlugin implements @@ -133,7 +134,11 @@ export class ServerlessSearchPlugin }, }); - setupDeps.discover.showInlineTopNav(); + core.helpCenter.configure({ + helpCenterUrl: 'https://www.elastic.co/docs/current/serverless/', + version: '0.0.1', + helpTopics, + }); return {}; } diff --git a/yarn.lock b/yarn.lock index d168b25927c984..99e09f793cce07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1683,7 +1683,7 @@ utility-types "^3.10.0" uuid "^9" -"@elastic/datemath@5.0.3": +"@elastic/datemath@5.0.3", "@elastic/datemath@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@elastic/datemath/-/datemath-5.0.3.tgz#7baccdab672b9a3ecb7fe8387580670936b58573" integrity sha512-8Hbr1Uyjm5OcYBfEB60K7sCP6U3IXuWDaLaQmYv3UxgI4jqBWbakoemwWvsqPVUvnwEjuX6z7ghPZbefs8xiaA== @@ -1782,11 +1782,67 @@ uuid "^8.3.0" vfile "^4.2.1" +"@elastic/eui@^94.5.2": + version "94.6.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-94.6.0.tgz#fd56be1dbdcdea259cdb3504085c8479fa35bcef" + integrity sha512-lYXVcylXn4Iz2WumBuOEkc1PRFoUby7CTnNhTS/gVrbTP7Mn0ombcoPFUSiZcA7VuN2mHfPmTUdBQptC/apTzA== + dependencies: + "@hello-pangea/dnd" "^16.6.0" + "@types/lodash" "^4.14.202" + "@types/numeral" "^2.0.5" + "@types/react-window" "^1.8.8" + "@types/refractor" "^3.4.0" + chroma-js "^2.4.2" + classnames "^2.5.1" + lodash "^4.17.21" + mdast-util-to-hast "^10.2.0" + numeral "^2.0.6" + prop-types "^15.8.1" + react-dropzone "^11.7.1" + react-element-to-jsx-string "^15.0.0" + react-focus-on "^3.9.1" + react-is "^17.0.2" + react-remove-scroll-bar "^2.3.4" + react-virtualized-auto-sizer "^1.0.24" + react-window "^1.8.10" + refractor "^3.6.0" + rehype-raw "^5.1.0" + rehype-react "^6.2.1" + rehype-stringify "^8.0.0" + remark-breaks "^2.0.2" + remark-emoji "^2.1.0" + remark-parse-no-trim "^8.0.4" + remark-rehype "^8.1.0" + tabbable "^5.3.3" + text-diff "^1.0.1" + unified "^9.2.2" + unist-util-visit "^2.0.3" + url-parse "^1.5.10" + uuid "^8.3.0" + vfile "^4.2.1" + "@elastic/filesaver@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@elastic/filesaver/-/filesaver-1.1.2.tgz#1998ffb3cd89c9da4ec12a7793bfcae10e30c77a" integrity sha512-YZbSufYFBhAj+S2cJgiKALoxIJevqXN2MSr6Yqr42rJdaPuM31cj6pUDwflkql1oDjupqD9la+MfxPFjXI1JFQ== +"@elastic/help-center-common@file:../help-center-sdk/packages/common": + version "0.0.1" + dependencies: + "@reduxjs/toolkit" "^1.9.7" + redux-dynamic-middlewares "^2.2.0" + +"@elastic/help-center-host@file:../help-center-sdk/packages/host": + version "0.0.1" + dependencies: + "@elastic/datemath" "^5.0.3" + "@elastic/eui" "^94.5.2" + "@reduxjs/toolkit" "1.9.7" + moment "^2.30.1" + react "^17.0.2" + react-redux "^7.2.8" + react-use "^17.5.0" + "@elastic/makelogs@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@elastic/makelogs/-/makelogs-6.1.1.tgz#5bc173b16acdfd7844fd85c97824ddcffd67cfb3" @@ -3889,6 +3945,14 @@ version "0.0.0" uid "" +"@kbn/core-help-center-browser-internal@link:packages/core/help-center/core-help-center-browser-internal": + version "0.0.0" + uid "" + +"@kbn/core-help-center-browser@link:packages/core/help-center/core-help-center-browser": + version "0.0.0" + uid "" + "@kbn/core-history-block-plugin@link:test/plugin_functional/plugins/core_history_block": version "0.0.0" uid "" @@ -8177,7 +8241,7 @@ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204" integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== -"@reduxjs/toolkit@1.9.7": +"@reduxjs/toolkit@1.9.7", "@reduxjs/toolkit@^1.9.7": version "1.9.7" resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz" integrity sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ== @@ -10362,6 +10426,11 @@ resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== +"@types/js-cookie@^2.2.6": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== + "@types/js-levenshtein@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.0.tgz#9541eec4ad6e3ec5633270a3a2b55d981edc44a9" @@ -11742,7 +11811,7 @@ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== -"@xobotyi/scrollbar-width@1.9.5": +"@xobotyi/scrollbar-width@1.9.5", "@xobotyi/scrollbar-width@^1.9.5": version "1.9.5" resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== @@ -14832,6 +14901,13 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + css-loader@^3.4.2, css-loader@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" @@ -15008,6 +15084,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== +csstype@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -17626,6 +17707,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-loops@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75" + integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g== + fast-redact@^3.0.0, fast-redact@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" @@ -17658,6 +17744,11 @@ fastest-stable-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= +fastest-stable-stringify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" + integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== + fastq@^1.13.0, fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -19598,6 +19689,11 @@ hyphenate-style-name@^1.0.2: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== +hyphenate-style-name@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== + i18n-iso-countries@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/i18n-iso-countries/-/i18n-iso-countries-4.3.1.tgz#f110a8824ce14edbb0eb8f3b0bd817ff950af37c" @@ -19770,6 +19866,14 @@ inline-style-prefixer@^4.0.0: bowser "^1.7.3" css-in-js-utils "^2.0.0" +inline-style-prefixer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-7.0.0.tgz#991d550735d42069f528ac1bcdacd378d1305442" + integrity sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ== + dependencies: + css-in-js-utils "^3.1.0" + fast-loops "^1.1.3" + inquirer@^7.0.0, inquirer@^7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -23340,6 +23444,11 @@ moment@>=2.14.0, moment@^2.10.6, moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + monaco-editor@^0.44.0: version "0.44.0" resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.44.0.tgz#3c0fe3655923bbf7dd647057302070b5095b6c59" @@ -23584,6 +23693,20 @@ nano-css@^5.2.1: stacktrace-js "^2.0.0" stylis "3.5.0" +nano-css@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.6.1.tgz#964120cb1af6cccaa6d0717a473ccd876b34c197" + integrity sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + css-tree "^1.1.2" + csstype "^3.1.2" + fastest-stable-stringify "^2.0.2" + inline-style-prefixer "^7.0.0" + rtl-css-js "^1.16.1" + stacktrace-js "^2.0.2" + stylis "^4.3.0" + nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" @@ -26777,6 +26900,26 @@ react-use@^15.3.8: ts-easing "^0.2.0" tslib "^2.0.0" +react-use@^17.5.0: + version "17.5.0" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.5.0.tgz#1fae45638828a338291efa0f0c61862db7ee6442" + integrity sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.6.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + react-virtualized-auto-sizer@^1.0.24: version "1.0.24" resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz#3ebdc92f4b05ad65693b3cc8e7d8dd54924c0227" @@ -27056,6 +27199,11 @@ redux-devtools-extension@^2.13.8: resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz#37b982688626e5e4993ff87220c9bbb7cd2d96e1" integrity sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg== +redux-dynamic-middlewares@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/redux-dynamic-middlewares/-/redux-dynamic-middlewares-2.2.0.tgz#6835dd6d4f2fd975266376b45dcae0141320ae97" + integrity sha512-GHESQC+Y0PV98ZBoaC6br6cDOsNiM1Cu4UleGMqMWCXX03jIr3BoozYVrRkLVVAl4sC216chakMnZOu6SwNdGA== + redux-saga@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.1.3.tgz#9f3e6aebd3c994bbc0f6901a625f9a42b51d1112" @@ -27716,6 +27864,13 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rtl-css-js@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" + integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg== + dependencies: + "@babel/runtime" "^7.1.2" + rtl-css-js@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.13.1.tgz#80deabf6e8f36d6767d495cd3eb60fecb20c67e1" @@ -28082,6 +28237,11 @@ screenfull@^5.0.0: resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.0.tgz#5c2010c0e84fd4157bf852877698f90b8cbe96f6" integrity sha512-yShzhaIoE9OtOhWVyBBffA6V98CDCoyHTsp8228blmqYy1Z5bddzE/4FPiJKlr8DVR4VBiiUyfPzIQPIYDkeMA== +screenfull@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + secure-json-parse@^2.4.0: version "2.6.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.6.0.tgz#95d89f84adf32d76ff7800e68a673b129fe918b0" @@ -29042,6 +29202,13 @@ stack-generator@^2.0.4: dependencies: stackframe "^1.1.0" +stack-generator@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" + integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== + dependencies: + stackframe "^1.3.4" + stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -29069,6 +29236,11 @@ stackframe@^1.1.0, stackframe@^1.1.1: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + stacktrace-gps@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.3.tgz#b89f84cc13bb925b96607e737b617c8715facf57" @@ -29077,6 +29249,14 @@ stacktrace-gps@^3.0.3: source-map "0.5.6" stackframe "^1.1.0" +stacktrace-gps@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" + integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== + dependencies: + source-map "0.5.6" + stackframe "^1.3.4" + stacktrace-js@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.1.tgz#ebdb0e9a16e6f171f96ca7878404e7f15c3d42ba" @@ -29086,6 +29266,15 @@ stacktrace-js@^2.0.0: stack-generator "^2.0.4" stacktrace-gps "^3.0.3" +stacktrace-js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + state-toggle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" @@ -29247,7 +29436,7 @@ string-replace-loader@^2.2.0: loader-utils "^1.2.3" schema-utils "^1.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -29265,6 +29454,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -29374,7 +29572,7 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -29388,6 +29586,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -29577,6 +29782,11 @@ stylis@4.3.1: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== +stylis@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" + integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== + stylus-lookup@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-5.0.1.tgz#3c4d116c3b1e8e1a8169c0d9cd20e608595560f4" @@ -32265,7 +32475,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -32291,6 +32501,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"