string
| If the visual label isn't appropriate for screen readers, can override it here |
| [euiIconType](./kibana-plugin-core-public.appcategory.euiicontype.md) | string
| Define an icon to be used for the category If the category is only 1 item, and no icon is defined, will default to the product icon Defaults to initials if no icon is defined |
+| [id](./kibana-plugin-core-public.appcategory.id.md) | string
| Unique identifier for the categories |
| [label](./kibana-plugin-core-public.appcategory.label.md) | string
| Label used for cateogry name. Also used as aria-label if one isn't set. |
| [order](./kibana-plugin-core-public.appcategory.order.md) | number
| The order that categories will be sorted in Prefer large steps between categories to allow for further editing (Default categories are in steps of 1000) |
diff --git a/docs/development/core/public/kibana-plugin-core-public.assertnever.md b/docs/development/core/public/kibana-plugin-core-public.assertnever.md
new file mode 100644
index 0000000000000..8fefd4450d49b
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.assertnever.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [assertNever](./kibana-plugin-core-public.assertnever.md)
+
+## assertNever() function
+
+Can be used in switch statements to ensure we perform exhaustive checks, see https://www.typescriptlang.org/docs/handbook/advanced-types.html\#exhaustiveness-checking
+
+Signature:
+
+```typescript
+export declare function assertNever(x: never): never;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| x | never
| |
+
+Returns:
+
+`never`
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getnavtype_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getnavtype_.md
new file mode 100644
index 0000000000000..09864be43996d
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.chromestart.getnavtype_.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getNavType$](./kibana-plugin-core-public.chromestart.getnavtype_.md)
+
+## ChromeStart.getNavType$() method
+
+Get the navigation type TODO \#64541 Can delete
+
+Signature:
+
+```typescript
+getNavType$(): ObservableaddApplicationClass()
. If className is unknown it is ignored. |
| [setAppTitle(appTitle)](./kibana-plugin-core-public.chromestart.setapptitle.md) | Sets the current app's title |
| [setBadge(badge)](./kibana-plugin-core-public.chromestart.setbadge.md) | Override the current badge |
diff --git a/docs/development/core/public/kibana-plugin-core-public.deepfreeze.md b/docs/development/core/public/kibana-plugin-core-public.deepfreeze.md
new file mode 100644
index 0000000000000..7c879b659a852
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.deepfreeze.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [deepFreeze](./kibana-plugin-core-public.deepfreeze.md)
+
+## deepFreeze() function
+
+Apply Object.freeze to a value recursively and convert the return type to Readonly variant recursively
+
+Signature:
+
+```typescript
+export declare function deepFreezeT
| |
+
+Returns:
+
+`RecursiveReadonlyRecord<string, any>
| |
+
+Returns:
+
+`{
+ [key: string]: any;
+}`
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.isrelativeurl.md b/docs/development/core/public/kibana-plugin-core-public.isrelativeurl.md
new file mode 100644
index 0000000000000..3c2ffa6340a97
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.isrelativeurl.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [isRelativeUrl](./kibana-plugin-core-public.isrelativeurl.md)
+
+## isRelativeUrl() function
+
+Determine if a url is relative. Any url including a protocol, hostname, or port is not considered relative. This means that absolute \*paths\* are considered to be relative \*urls\*
+
+Signature:
+
+```typescript
+export declare function isRelativeUrl(candidatePath: string): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| candidatePath | string
| |
+
+Returns:
+
+`boolean`
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md
index adc87de2b9e7e..eafc81447ee03 100644
--- a/docs/development/core/public/kibana-plugin-core-public.md
+++ b/docs/development/core/public/kibana-plugin-core-public.md
@@ -27,6 +27,16 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) | Status of the application's navLink. |
| [AppStatus](./kibana-plugin-core-public.appstatus.md) | Accessibility status of an application. |
+## Functions
+
+| Function | Description |
+| --- | --- |
+| [assertNever(x)](./kibana-plugin-core-public.assertnever.md) | Can be used in switch statements to ensure we perform exhaustive checks, see https://www.typescriptlang.org/docs/handbook/advanced-types.html\#exhaustiveness-checking |
+| [deepFreeze(object)](./kibana-plugin-core-public.deepfreeze.md) | Apply Object.freeze to a value recursively and convert the return type to Readonly variant recursively |
+| [getFlattenedObject(rootValue)](./kibana-plugin-core-public.getflattenedobject.md) | Flattens a deeply nested object to a map of dot-separated paths pointing to all primitive values \*\*and arrays\*\* from rootValue
.example: getFlattenedObject({ a: { b: 1, c: \[2,3\] } }) // => { 'a.b': 1, 'a.c': \[2,3\] } |
+| [isRelativeUrl(candidatePath)](./kibana-plugin-core-public.isrelativeurl.md) | Determine if a url is relative. Any url including a protocol, hostname, or port is not considered relative. This means that absolute \*paths\* are considered to be relative \*urls\* |
+| [modifyUrl(url, urlModifier)](./kibana-plugin-core-public.modifyurl.md) | Takes a URL and a function that takes the meaningful parts of the URL as a key-value object, modifies some or all of the parts, and returns the modified parts formatted again as a url.Url Parts sent: - protocol - slashes (does the url have the //) - auth - hostname (just the name of the host, no port or auth information) - port - pathname (the path after the hostname, no query or hash, starts with a slash if there was a path) - query (always an object, even when no query on original url) - hashWhy? - The default url library in node produces several conflicting properties on the "parsed" output. Modifying any of these might lead to the modifications being ignored (depending on which property was modified) - It's not always clear whether to use path/pathname, host/hostname, so this tries to add helpful constraints |
+
## Interfaces
| Interface | Description |
@@ -118,6 +128,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | Options available for [IToasts](./kibana-plugin-core-public.itoasts.md) APIs. |
| [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) | UiSettings parameters defined by the plugins. |
| [UiSettingsState](./kibana-plugin-core-public.uisettingsstate.md) | |
+| [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) | We define our own typings because the current version of @types/node declares properties to be optional "hostname?: string". Although, parse call returns "hostname: null \| string". |
| [UserProvidedValues](./kibana-plugin-core-public.userprovidedvalues.md) | Describes the values explicitly set by user. |
## Type Aliases
@@ -139,6 +150,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [ChromeHelpExtensionMenuLink](./kibana-plugin-core-public.chromehelpextensionmenulink.md) | |
| [ChromeNavLinkUpdateableFields](./kibana-plugin-core-public.chromenavlinkupdateablefields.md) | |
| [FatalErrorsStart](./kibana-plugin-core-public.fatalerrorsstart.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. |
+| [Freezable](./kibana-plugin-core-public.freezable.md) | |
| [HandlerContextType](./kibana-plugin-core-public.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-core-public.handlerfunction.md) to represent the type of the context. |
| [HandlerFunction](./kibana-plugin-core-public.handlerfunction.md) | A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-core-public.icontextcontainer.md) |
| [HandlerParameters](./kibana-plugin-core-public.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-core-public.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-core-public.handlercontexttype.md). |
@@ -146,6 +158,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [IContextProvider](./kibana-plugin-core-public.icontextprovider.md) | A function that returns a context value for a specific key of given context type. |
| [IToasts](./kibana-plugin-core-public.itoasts.md) | Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-core-public.toastsapi.md). |
| [MountPoint](./kibana-plugin-core-public.mountpoint.md) | A function that should mount DOM content inside the provided container element and return a handler to unmount it. |
+| [NavType](./kibana-plugin-core-public.navtype.md) | |
| [PluginInitializer](./kibana-plugin-core-public.plugininitializer.md) | The plugin
export at the root of a plugin's public
directory should conform to this interface. |
| [PluginOpaqueId](./kibana-plugin-core-public.pluginopaqueid.md) | |
| [PublicUiSettingsParams](./kibana-plugin-core-public.publicuisettingsparams.md) | A sub-set of [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) exposed to the client-side. |
diff --git a/docs/development/core/public/kibana-plugin-core-public.modifyurl.md b/docs/development/core/public/kibana-plugin-core-public.modifyurl.md
new file mode 100644
index 0000000000000..b174f733a5c64
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.modifyurl.md
@@ -0,0 +1,31 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [modifyUrl](./kibana-plugin-core-public.modifyurl.md)
+
+## modifyUrl() function
+
+Takes a URL and a function that takes the meaningful parts of the URL as a key-value object, modifies some or all of the parts, and returns the modified parts formatted again as a url.
+
+Url Parts sent: - protocol - slashes (does the url have the //) - auth - hostname (just the name of the host, no port or auth information) - port - pathname (the path after the hostname, no query or hash, starts with a slash if there was a path) - query (always an object, even when no query on original url) - hash
+
+Why? - The default url library in node produces several conflicting properties on the "parsed" output. Modifying any of these might lead to the modifications being ignored (depending on which property was modified) - It's not always clear whether to use path/pathname, host/hostname, so this tries to add helpful constraints
+
+Signature:
+
+```typescript
+export declare function modifyUrl(url: string, urlModifier: (urlParts: URLMeaningfulParts) => Partialstring
| |
+| urlModifier | (urlParts: URLMeaningfulParts) => Partial<URLMeaningfulParts> | void
| |
+
+Returns:
+
+`string`
+
+The modified and reformatted url
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.navtype.md b/docs/development/core/public/kibana-plugin-core-public.navtype.md
new file mode 100644
index 0000000000000..8f1d9a4351754
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.navtype.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavType](./kibana-plugin-core-public.navtype.md)
+
+## NavType type
+
+Signature:
+
+```typescript
+export declare type NavType = 'modern' | 'legacy';
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.auth.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.auth.md
new file mode 100644
index 0000000000000..238dd66885896
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.auth.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [auth](./kibana-plugin-core-public.urlmeaningfulparts.auth.md)
+
+## URLMeaningfulParts.auth property
+
+Signature:
+
+```typescript
+auth?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hash.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hash.md
new file mode 100644
index 0000000000000..161e7dc7ebfae
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hash.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [hash](./kibana-plugin-core-public.urlmeaningfulparts.hash.md)
+
+## URLMeaningfulParts.hash property
+
+Signature:
+
+```typescript
+hash?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hostname.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hostname.md
new file mode 100644
index 0000000000000..f1884718337b5
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.hostname.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [hostname](./kibana-plugin-core-public.urlmeaningfulparts.hostname.md)
+
+## URLMeaningfulParts.hostname property
+
+Signature:
+
+```typescript
+hostname?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.md
new file mode 100644
index 0000000000000..2816d4c7df541
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.md
@@ -0,0 +1,27 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md)
+
+## URLMeaningfulParts interface
+
+We define our own typings because the current version of @types/node declares properties to be optional "hostname?: string". Although, parse call returns "hostname: null \| string".
+
+Signature:
+
+```typescript
+export interface URLMeaningfulParts
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [auth](./kibana-plugin-core-public.urlmeaningfulparts.auth.md) | string | null
| |
+| [hash](./kibana-plugin-core-public.urlmeaningfulparts.hash.md) | string | null
| |
+| [hostname](./kibana-plugin-core-public.urlmeaningfulparts.hostname.md) | string | null
| |
+| [pathname](./kibana-plugin-core-public.urlmeaningfulparts.pathname.md) | string | null
| |
+| [port](./kibana-plugin-core-public.urlmeaningfulparts.port.md) | string | null
| |
+| [protocol](./kibana-plugin-core-public.urlmeaningfulparts.protocol.md) | string | null
| |
+| [query](./kibana-plugin-core-public.urlmeaningfulparts.query.md) | ParsedQuery
| |
+| [slashes](./kibana-plugin-core-public.urlmeaningfulparts.slashes.md) | boolean | null
| |
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.pathname.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.pathname.md
new file mode 100644
index 0000000000000..5ad21f004481c
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.pathname.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [pathname](./kibana-plugin-core-public.urlmeaningfulparts.pathname.md)
+
+## URLMeaningfulParts.pathname property
+
+Signature:
+
+```typescript
+pathname?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.port.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.port.md
new file mode 100644
index 0000000000000..2e70da2f17421
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.port.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [port](./kibana-plugin-core-public.urlmeaningfulparts.port.md)
+
+## URLMeaningfulParts.port property
+
+Signature:
+
+```typescript
+port?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.protocol.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.protocol.md
new file mode 100644
index 0000000000000..cedc7f0b878e3
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.protocol.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [protocol](./kibana-plugin-core-public.urlmeaningfulparts.protocol.md)
+
+## URLMeaningfulParts.protocol property
+
+Signature:
+
+```typescript
+protocol?: string | null;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.query.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.query.md
new file mode 100644
index 0000000000000..a9541efe0882a
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.query.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [query](./kibana-plugin-core-public.urlmeaningfulparts.query.md)
+
+## URLMeaningfulParts.query property
+
+Signature:
+
+```typescript
+query: ParsedQuery;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.slashes.md b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.slashes.md
new file mode 100644
index 0000000000000..cb28a25f9e162
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.urlmeaningfulparts.slashes.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URLMeaningfulParts](./kibana-plugin-core-public.urlmeaningfulparts.md) > [slashes](./kibana-plugin-core-public.urlmeaningfulparts.slashes.md)
+
+## URLMeaningfulParts.slashes property
+
+Signature:
+
+```typescript
+slashes?: boolean | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.assertnever.md b/docs/development/core/server/kibana-plugin-core-server.assertnever.md
new file mode 100644
index 0000000000000..c13c88df9b9bf
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.assertnever.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [assertNever](./kibana-plugin-core-server.assertnever.md)
+
+## assertNever() function
+
+Can be used in switch statements to ensure we perform exhaustive checks, see https://www.typescriptlang.org/docs/handbook/advanced-types.html\#exhaustiveness-checking
+
+Signature:
+
+```typescript
+export declare function assertNever(x: never): never;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| x | never
| |
+
+Returns:
+
+`never`
+
diff --git a/docs/development/core/server/kibana-plugin-core-server.deepfreeze.md b/docs/development/core/server/kibana-plugin-core-server.deepfreeze.md
new file mode 100644
index 0000000000000..946050bff0585
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.deepfreeze.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [deepFreeze](./kibana-plugin-core-server.deepfreeze.md)
+
+## deepFreeze() function
+
+Apply Object.freeze to a value recursively and convert the return type to Readonly variant recursively
+
+Signature:
+
+```typescript
+export declare function deepFreezeT
| |
+
+Returns:
+
+`RecursiveReadonlyRecord<string, any>
| |
+
+Returns:
+
+`{
+ [key: string]: any;
+}`
+
diff --git a/docs/development/core/server/kibana-plugin-core-server.isrelativeurl.md b/docs/development/core/server/kibana-plugin-core-server.isrelativeurl.md
new file mode 100644
index 0000000000000..bff9eb05419be
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.isrelativeurl.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [isRelativeUrl](./kibana-plugin-core-server.isrelativeurl.md)
+
+## isRelativeUrl() function
+
+Determine if a url is relative. Any url including a protocol, hostname, or port is not considered relative. This means that absolute \*paths\* are considered to be relative \*urls\*
+
+Signature:
+
+```typescript
+export declare function isRelativeUrl(candidatePath: string): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| candidatePath | string
| |
+
+Returns:
+
+`boolean`
+
diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md
index a91a5bec988b7..14e01fda3d287 100644
--- a/docs/development/core/server/kibana-plugin-core-server.md
+++ b/docs/development/core/server/kibana-plugin-core-server.md
@@ -41,8 +41,13 @@ The plugin integrates with the core system via lifecycle events: `setup`
| Function | Description |
| --- | --- |
+| [assertNever(x)](./kibana-plugin-core-server.assertnever.md) | Can be used in switch statements to ensure we perform exhaustive checks, see https://www.typescriptlang.org/docs/handbook/advanced-types.html\#exhaustiveness-checking |
+| [deepFreeze(object)](./kibana-plugin-core-server.deepfreeze.md) | Apply Object.freeze to a value recursively and convert the return type to Readonly variant recursively |
| [exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, })](./kibana-plugin-core-server.exportsavedobjectstostream.md) | Generates sorted saved object stream to be used for export. See the [options](./kibana-plugin-core-server.savedobjectsexportoptions.md) for more detailed information. |
+| [getFlattenedObject(rootValue)](./kibana-plugin-core-server.getflattenedobject.md) | Flattens a deeply nested object to a map of dot-separated paths pointing to all primitive values \*\*and arrays\*\* from rootValue
.example: getFlattenedObject({ a: { b: 1, c: \[2,3\] } }) // => { 'a.b': 1, 'a.c': \[2,3\] } |
| [importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-core-server.importsavedobjectsfromstream.md) | Import saved objects from given stream. See the [options](./kibana-plugin-core-server.savedobjectsimportoptions.md) for more detailed information. |
+| [isRelativeUrl(candidatePath)](./kibana-plugin-core-server.isrelativeurl.md) | Determine if a url is relative. Any url including a protocol, hostname, or port is not considered relative. This means that absolute \*paths\* are considered to be relative \*urls\* |
+| [modifyUrl(url, urlModifier)](./kibana-plugin-core-server.modifyurl.md) | Takes a URL and a function that takes the meaningful parts of the URL as a key-value object, modifies some or all of the parts, and returns the modified parts formatted again as a url.Url Parts sent: - protocol - slashes (does the url have the //) - auth - hostname (just the name of the host, no port or auth information) - port - pathname (the path after the hostname, no query or hash, starts with a slash if there was a path) - query (always an object, even when no query on original url) - hashWhy? - The default url library in node produces several conflicting properties on the "parsed" output. Modifying any of these might lead to the modifications being ignored (depending on which property was modified) - It's not always clear whether to use path/pathname, host/hostname, so this tries to add helpful constraints |
| [resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-core-server.resolvesavedobjectsimporterrors.md) | Resolve and return saved object import errors. See the [options](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) for more detailed informations. |
## Interfaces
@@ -186,6 +191,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) | UiSettings parameters defined by the plugins. |
| [UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) | |
| [UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) | |
+| [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) | We define our own typings because the current version of @types/node declares properties to be optional "hostname?: string". Although, parse call returns "hostname: null \| string". |
| [UserProvidedValues](./kibana-plugin-core-server.userprovidedvalues.md) | Describes the values explicitly set by user. |
| [UuidServiceSetup](./kibana-plugin-core-server.uuidservicesetup.md) | APIs to access the application's instance uuid. |
@@ -212,6 +218,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [ConfigPath](./kibana-plugin-core-server.configpath.md) | |
| [DestructiveRouteMethod](./kibana-plugin-core-server.destructiveroutemethod.md) | Set of HTTP methods changing the state of the server. |
| [ElasticsearchClientConfig](./kibana-plugin-core-server.elasticsearchclientconfig.md) | |
+| [Freezable](./kibana-plugin-core-server.freezable.md) | |
| [GetAuthHeaders](./kibana-plugin-core-server.getauthheaders.md) | Get headers to authenticate a user against Elasticsearch. |
| [GetAuthState](./kibana-plugin-core-server.getauthstate.md) | Gets authentication state for a request. Returned by auth
interceptor. |
| [HandlerContextType](./kibana-plugin-core-server.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md) to represent the type of the context. |
diff --git a/docs/development/core/server/kibana-plugin-core-server.modifyurl.md b/docs/development/core/server/kibana-plugin-core-server.modifyurl.md
new file mode 100644
index 0000000000000..fc0bc354a3ca3
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.modifyurl.md
@@ -0,0 +1,31 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [modifyUrl](./kibana-plugin-core-server.modifyurl.md)
+
+## modifyUrl() function
+
+Takes a URL and a function that takes the meaningful parts of the URL as a key-value object, modifies some or all of the parts, and returns the modified parts formatted again as a url.
+
+Url Parts sent: - protocol - slashes (does the url have the //) - auth - hostname (just the name of the host, no port or auth information) - port - pathname (the path after the hostname, no query or hash, starts with a slash if there was a path) - query (always an object, even when no query on original url) - hash
+
+Why? - The default url library in node produces several conflicting properties on the "parsed" output. Modifying any of these might lead to the modifications being ignored (depending on which property was modified) - It's not always clear whether to use path/pathname, host/hostname, so this tries to add helpful constraints
+
+Signature:
+
+```typescript
+export declare function modifyUrl(url: string, urlModifier: (urlParts: URLMeaningfulParts) => Partialstring
| |
+| urlModifier | (urlParts: URLMeaningfulParts) => Partial<URLMeaningfulParts> | void
| |
+
+Returns:
+
+`string`
+
+The modified and reformatted url
+
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.auth.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.auth.md
new file mode 100644
index 0000000000000..0422738669a70
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.auth.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [auth](./kibana-plugin-core-server.urlmeaningfulparts.auth.md)
+
+## URLMeaningfulParts.auth property
+
+Signature:
+
+```typescript
+auth?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hash.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hash.md
new file mode 100644
index 0000000000000..13a3f4a9c95c8
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hash.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [hash](./kibana-plugin-core-server.urlmeaningfulparts.hash.md)
+
+## URLMeaningfulParts.hash property
+
+Signature:
+
+```typescript
+hash?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hostname.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hostname.md
new file mode 100644
index 0000000000000..6631f6f6744c5
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.hostname.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [hostname](./kibana-plugin-core-server.urlmeaningfulparts.hostname.md)
+
+## URLMeaningfulParts.hostname property
+
+Signature:
+
+```typescript
+hostname?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.md
new file mode 100644
index 0000000000000..257f7b4b634ab
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.md
@@ -0,0 +1,27 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md)
+
+## URLMeaningfulParts interface
+
+We define our own typings because the current version of @types/node declares properties to be optional "hostname?: string". Although, parse call returns "hostname: null \| string".
+
+Signature:
+
+```typescript
+export interface URLMeaningfulParts
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [auth](./kibana-plugin-core-server.urlmeaningfulparts.auth.md) | string | null
| |
+| [hash](./kibana-plugin-core-server.urlmeaningfulparts.hash.md) | string | null
| |
+| [hostname](./kibana-plugin-core-server.urlmeaningfulparts.hostname.md) | string | null
| |
+| [pathname](./kibana-plugin-core-server.urlmeaningfulparts.pathname.md) | string | null
| |
+| [port](./kibana-plugin-core-server.urlmeaningfulparts.port.md) | string | null
| |
+| [protocol](./kibana-plugin-core-server.urlmeaningfulparts.protocol.md) | string | null
| |
+| [query](./kibana-plugin-core-server.urlmeaningfulparts.query.md) | ParsedQuery
| |
+| [slashes](./kibana-plugin-core-server.urlmeaningfulparts.slashes.md) | boolean | null
| |
+
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.pathname.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.pathname.md
new file mode 100644
index 0000000000000..8fee8c8e146ca
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.pathname.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [pathname](./kibana-plugin-core-server.urlmeaningfulparts.pathname.md)
+
+## URLMeaningfulParts.pathname property
+
+Signature:
+
+```typescript
+pathname?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.port.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.port.md
new file mode 100644
index 0000000000000..dcf3517d92ba2
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.port.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [port](./kibana-plugin-core-server.urlmeaningfulparts.port.md)
+
+## URLMeaningfulParts.port property
+
+Signature:
+
+```typescript
+port?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.protocol.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.protocol.md
new file mode 100644
index 0000000000000..914dcd4e8a8a5
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.protocol.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [protocol](./kibana-plugin-core-server.urlmeaningfulparts.protocol.md)
+
+## URLMeaningfulParts.protocol property
+
+Signature:
+
+```typescript
+protocol?: string | null;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.query.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.query.md
new file mode 100644
index 0000000000000..358adcfd3d180
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.query.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [query](./kibana-plugin-core-server.urlmeaningfulparts.query.md)
+
+## URLMeaningfulParts.query property
+
+Signature:
+
+```typescript
+query: ParsedQuery;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.slashes.md b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.slashes.md
new file mode 100644
index 0000000000000..d5b598167f2f2
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.urlmeaningfulparts.slashes.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [URLMeaningfulParts](./kibana-plugin-core-server.urlmeaningfulparts.md) > [slashes](./kibana-plugin-core-server.urlmeaningfulparts.slashes.md)
+
+## URLMeaningfulParts.slashes property
+
+Signature:
+
+```typescript
+slashes?: boolean | null;
+```
diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc
index 51910169e8673..cafd50d92376f 100644
--- a/docs/management/advanced-options.asciidoc
+++ b/docs/management/advanced-options.asciidoc
@@ -68,6 +68,9 @@ into the document when displaying it.
`metrics:max_buckets`:: The maximum numbers of buckets that a single
data source can return. This might arise when the user selects a
short interval (for example, 1s) for a long time period (1 year).
+`pageNavigation`:: The style of navigation menu for Kibana.
+Choices are Legacy, the legacy style where every plugin is represented in the nav,
+and Modern, a new format that bundles related plugins together in flyaway nested navigation.
`query:allowLeadingWildcards`:: Allows a wildcard (*) as the first character
in a query clause. Only applies when experimental query features are
enabled in the query bar. To disallow leading wildcards in Lucene queries,
diff --git a/docs/user/security/securing-kibana.asciidoc b/docs/user/security/securing-kibana.asciidoc
index 24aacd6a47626..f4178bacb111e 100644
--- a/docs/user/security/securing-kibana.asciidoc
+++ b/docs/user/security/securing-kibana.asciidoc
@@ -31,14 +31,14 @@ file:
[source,yaml]
-----------------------------------------------
-elasticsearch.username: "kibana"
+elasticsearch.username: "kibana_system"
elasticsearch.password: "kibanapassword"
-----------------------------------------------
The {kib} server submits requests as this user to access the cluster monitoring
APIs and the `.kibana` index. The server does _not_ need access to user indices.
-The password for the built-in `kibana` user is typically set as part of the
+The password for the built-in `kibana_system` user is typically set as part of the
{security} configuration process on {es}. For more information, see
{ref}/built-in-users.html[Built-in users].
--
diff --git a/docs/visualize/timelion.asciidoc b/docs/visualize/timelion.asciidoc
index a7520227977bc..852c3e1ecdeca 100644
--- a/docs/visualize/timelion.asciidoc
+++ b/docs/visualize/timelion.asciidoc
@@ -50,10 +50,10 @@ To compare the two data sets, add another series with data from the previous hou
.es(index=metricbeat-*,
timefield='@timestamp',
metric='avg:system.cpu.user.pct'),
- .es(offset=-1h, <1>
- index=metricbeat-*,
- timefield='@timestamp',
- metric='avg:system.cpu.user.pct')
+.es(offset=-1h, <1>
+ index=metricbeat-*,
+ timefield='@timestamp',
+ metric='avg:system.cpu.user.pct')
----------------------------------
<1> `offset` offsets the data retrieval by a date expression. In this example, `-1h` offsets the data back by one hour.
@@ -119,11 +119,11 @@ To differentiate between the current hour data and the last hour data, change th
metric='avg:system.cpu.user.pct')
.label('last hour')
.lines(fill=1,width=0.5), <1>
- .es(index=metricbeat-*,
- timefield='@timestamp',
- metric='avg:system.cpu.user.pct')
- .label('current hour')
- .title('CPU usage over time')
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='avg:system.cpu.user.pct')
+ .label('current hour')
+ .title('CPU usage over time')
----------------------------------
<1> `.lines()` changes the appearance of the chart lines. In this example, `.lines(fill=1,width=0.5)` sets the fill level to `1`, and the border width to `0.5`.
@@ -169,7 +169,20 @@ Change the position and style of the legend:
[source,text]
----------------------------------
-.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour').lines(fill=1,width=0.5).color(gray), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour').title('CPU usage over time').color(#1E90FF).legend(columns=2, position=nw) <1>
+.es(offset=-1h,
+ index=metricbeat-*,
+ timefield='@timestamp',
+ metric='avg:system.cpu.user.pct')
+ .label('last hour')
+ .lines(fill=1,width=0.5)
+ .color(gray),
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='avg:system.cpu.user.pct')
+ .label('current hour')
+ .title('CPU usage over time')
+ .color(#1E90FF)
+ .legend(columns=2, position=nw) <1>
----------------------------------
<1> `.legend()` sets the position and style of the legend. In this example, `.legend(columns=2, position=nw)` places the legend in the north west position of the visualization with two columns.
@@ -192,7 +205,9 @@ To start tracking the inbound and outbound network traffic, enter the following
[source,text]
----------------------------------
-.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes)
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.in.bytes)
----------------------------------
[role="screenshot"]
@@ -207,7 +222,10 @@ Change how the data is displayed so that you can easily monitor the inbound traf
[source,text]
----------------------------------
-.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative() <1>
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.in.bytes)
+ .derivative() <1>
----------------------------------
<1> `.derivative` plots the change in values over time.
@@ -220,7 +238,15 @@ Add a similar calculation for outbound traffic:
[source,text]
----------------------------------
-.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative(), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1) <1>
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.in.bytes)
+ .derivative(),
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.out.bytes)
+ .derivative()
+ .multiply(-1) <1>
----------------------------------
<1> `.multiply()` multiplies the data series by a number, the result of a data series, or a list of data series. For this example, `.multiply(-1)` converts the outbound network traffic to a negative value since the outbound network traffic is leaving your machine.
@@ -237,7 +263,17 @@ To make the visualization easier to analyze, change the data metric from bytes t
[source,text]
----------------------------------
-.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative().divide(1048576), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1).divide(1048576) <1>
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.in.bytes)
+ .derivative()
+ .divide(1048576),
+.es(index=metricbeat*,
+ timefield=@timestamp,
+ metric=max:system.network.out.bytes)
+ .derivative()
+ .multiply(-1)
+ .divide(1048576) <1>
----------------------------------
<1> `.divide()` accepts the same input as `.multiply()`, then divides the data series by the defined divisor.
@@ -271,8 +307,8 @@ Customize and format the visualization using functions:
.divide(1048576)
.lines(fill=2, width=1) <3>
.color(blue) <4>
- .label("Outbound traffic")
- .legend(columns=2, position=nw) <5>
+ .label("Outbound traffic")
+ .legend(columns=2, position=nw) <5>
----------------------------------
<1> `.label()` adds custom labels to the visualization.
@@ -309,7 +345,9 @@ To chart the maximum value of `system.memory.actual.used.bytes`, enter the follo
[source,text]
----------------------------------
-.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes')
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
----------------------------------
[role="screenshot"]
@@ -338,17 +376,17 @@ To track the amount of memory used, create two thresholds:
null)
.label('warning')
.color('#FFCC11'),
- .es(index=metricbeat-*,
- timefield='@timestamp',
- metric='max:system.memory.actual.used.bytes')
- .if(gt,
- 11375000000,
- .es(index=metricbeat-*,
- timefield='@timestamp',
- metric='max:system.memory.actual.used.bytes'),
- null)
- .label('severe')
- .color('red')
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .if(gt,
+ 11375000000,
+ .es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes'),
+ null)
+ .label('severe')
+ .color('red')
----------------------------------
<1> Timelion conditional logic for the _greater than_ operator. In this example, the warning threshold is 11.3GB (`11300000000`), and the severe threshold is 11.375GB (`11375000000`). If the threshold values are too high or low for your machine, adjust the values accordingly.
@@ -366,7 +404,33 @@ To determine the trend, create a new data series:
[source,text]
----------------------------------
-.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,11300000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('warning').color('#FFCC11'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,11375000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('severe').color('red'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').mvavg(10) <1>
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes'),
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .if(gt,11300000000,
+ .es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes'),
+ null)
+ .label('warning')
+ .color('#FFCC11'),
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .if(gt,11375000000,
+ .es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes'),
+ null).
+ label('severe')
+ .color('red'),
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .mvavg(10) <1>
----------------------------------
<1> `mvavg()` calculates the moving average over a specified period of time. In this example, `.mvavg(10)` creates a moving average with a window of 10 data points.
@@ -396,30 +460,30 @@ Customize and format the visualization using functions:
.es(index=metricbeat-*,
timefield='@timestamp',
metric='max:system.memory.actual.used.bytes'),
- null)
- .label('warning')
- .color('#FFCC11') <3>
- .lines(width=5), <4>
- .es(index=metricbeat-*,
- timefield='@timestamp',
- metric='max:system.memory.actual.used.bytes')
- .if(gt,
- 11375000000,
- .es(index=metricbeat-*,
- timefield='@timestamp',
- metric='max:system.memory.actual.used.bytes'),
- null)
- .label('severe')
- .color('red')
- .lines(width=5),
+ null)
+ .label('warning')
+ .color('#FFCC11') <3>
+ .lines(width=5), <4>
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .if(gt,
+ 11375000000,
.es(index=metricbeat-*,
timefield='@timestamp',
- metric='max:system.memory.actual.used.bytes')
- .mvavg(10)
- .label('mvavg')
- .lines(width=2)
- .color(#5E5E5E)
- .legend(columns=4, position=nw) <5>
+ metric='max:system.memory.actual.used.bytes'),
+ null)
+ .label('severe')
+ .color('red')
+ .lines(width=5),
+.es(index=metricbeat-*,
+ timefield='@timestamp',
+ metric='max:system.memory.actual.used.bytes')
+ .mvavg(10)
+ .label('mvavg')
+ .lines(width=2)
+ .color(#5E5E5E)
+ .legend(columns=4, position=nw) <5>
----------------------------------
<1> `.label()` adds custom labels to the visualization.
diff --git a/package.json b/package.json
index 1f0658bd2a138..8a92b46489308 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"test:ftr:server": "node scripts/functional_tests_server",
"test:ftr:runner": "node scripts/functional_test_runner",
"test:coverage": "grunt test:coverage",
- "typespec": "typings-tester --config x-pack/legacy/plugins/canvas/public/lib/aeroelastic/tsconfig.json x-pack/legacy/plugins/canvas/public/lib/aeroelastic/__fixtures__/typescript/typespec_tests.ts",
+ "typespec": "typings-tester --config x-pack/plugins/canvas/public/lib/aeroelastic/tsconfig.json x-pack/plugins/canvas/public/lib/aeroelastic/__fixtures__/typescript/typespec_tests.ts",
"checkLicenses": "node scripts/check_licenses --dev",
"build": "node scripts/build --all-platforms",
"start": "node scripts/kibana --dev",
@@ -122,10 +122,10 @@
"@babel/core": "^7.9.0",
"@babel/register": "^7.9.0",
"@elastic/apm-rum": "^5.1.1",
- "@elastic/charts": "19.1.2",
+ "@elastic/charts": "19.2.0",
"@elastic/datemath": "5.0.3",
"@elastic/ems-client": "7.8.0",
- "@elastic/eui": "22.3.0",
+ "@elastic/eui": "22.3.1",
"@elastic/filesaver": "1.1.2",
"@elastic/good": "8.1.1-kibana2",
"@elastic/numeral": "2.4.0",
@@ -200,7 +200,7 @@
"inert": "^5.1.0",
"inline-style": "^2.0.0",
"joi": "^13.5.2",
- "jquery": "^3.4.1",
+ "jquery": "^3.5.0",
"js-yaml": "3.13.1",
"json-stable-stringify": "^1.0.1",
"json-stringify-pretty-compact": "1.2.0",
@@ -297,6 +297,7 @@
"@elastic/eslint-plugin-eui": "0.0.2",
"@elastic/github-checks-reporter": "0.0.20b3",
"@elastic/makelogs": "^5.0.1",
+ "@elastic/static-fs": "1.0.1",
"@kbn/dev-utils": "1.0.0",
"@kbn/es": "1.0.0",
"@kbn/eslint-import-resolver-kibana": "2.0.0",
diff --git a/packages/kbn-dev-utils/src/precommit_hook/cli.ts b/packages/kbn-dev-utils/src/precommit_hook/cli.ts
new file mode 100644
index 0000000000000..a83e8c2b193d9
--- /dev/null
+++ b/packages/kbn-dev-utils/src/precommit_hook/cli.ts
@@ -0,0 +1,50 @@
+/*
+ * 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 Path from 'path';
+import { chmod, writeFile } from 'fs';
+import { promisify } from 'util';
+
+import { run } from '../run';
+import { REPO_ROOT } from '../repo_root';
+import { SCRIPT_SOURCE } from './script_source';
+import { getGitDir } from './get_git_dir';
+
+const chmodAsync = promisify(chmod);
+const writeFileAsync = promisify(writeFile);
+
+run(
+ async ({ log }) => {
+ try {
+ const gitDir = await getGitDir();
+ const installPath = Path.resolve(REPO_ROOT, gitDir, 'hooks/pre-commit');
+
+ log.info(`Registering Kibana pre-commit git hook...`);
+ await writeFileAsync(installPath, SCRIPT_SOURCE);
+ await chmodAsync(installPath, 0o755);
+ log.success(`Kibana pre-commit git hook was installed successfully.`);
+ } catch (e) {
+ log.error(`Kibana pre-commit git hook was not installed as an error occur.`);
+ throw e;
+ }
+ },
+ {
+ description: 'Register git hooks in the local repo',
+ }
+);
diff --git a/test/functional/page_objects/monitoring_page.js b/packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts
similarity index 67%
rename from test/functional/page_objects/monitoring_page.js
rename to packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts
index 7dab9dc3e52b1..5ca7d67d0d4ea 100644
--- a/test/functional/page_objects/monitoring_page.js
+++ b/packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts
@@ -17,19 +17,16 @@
* under the License.
*/
-export function MonitoringPageProvider({ getService }) {
- const find = getService('find');
+import execa from 'execa';
- class MonitoringPage {
- async getWelcome() {
- const el = await find.displayedByCssSelector('render-directive');
- return await el.getVisibleText();
- }
+import { REPO_ROOT } from '../repo_root';
- async clickOptOut() {
- return find.clickByLinkText('Opt out here');
- }
- }
-
- return new MonitoringPage();
+// Retrieves the correct location for the .git dir for
+// every git setup (including git worktree)
+export async function getGitDir() {
+ return (
+ await execa('git', ['rev-parse', '--git-common-dir'], {
+ cwd: REPO_ROOT,
+ })
+ ).stdout.trim();
}
diff --git a/packages/kbn-dev-utils/src/precommit_hook/script_source.ts b/packages/kbn-dev-utils/src/precommit_hook/script_source.ts
new file mode 100644
index 0000000000000..61b4552f6eaef
--- /dev/null
+++ b/packages/kbn-dev-utils/src/precommit_hook/script_source.ts
@@ -0,0 +1,117 @@
+/*
+ * 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 os from 'os';
+
+import normalizePath from 'normalize-path';
+
+const HOME_DIR = normalizePath(os.homedir());
+
+export const SCRIPT_SOURCE = `#!/usr/bin/env bash
+#
+# ** THIS IS AN AUTO-GENERATED FILE **
+# ** PLEASE DO NOT CHANGE IT MANUALLY **
+#
+# GENERATED BY \`node scripts/register_git_hook\`
+# IF YOU WANNA CHANGE SOMETHING IN THIS SCRIPT
+# PLEASE RE-RUN 'yarn kbn bootstrap' or 'node scripts/register_git_hook'
+
+# pre-commit script takes zero arguments: https://git-scm.com/docs/githooks#_pre_commit
+
+set -euo pipefail
+
+# Make it possible to terminate pre commit hook
+# using ctrl-c so nothing else would happen or be
+# sent to the output.
+#
+# The correct exit code on that situation
+# according the linux documentation project is 130
+# https://www.tldp.org/LDP/abs/html/exitcodes.html
+trap "exit 130" INT
+
+has_node() {
+ command -v node >/dev/null 2>&1
+}
+
+has_nvm() {
+ command -v nvm >/dev/null 2>&1
+}
+
+try_load_node_from_nvm_paths () {
+ # If nvm is not loaded, load it
+ has_node || {
+ NVM_SH="${HOME_DIR}/.nvm/nvm.sh"
+
+ if [ "${process.platform}" == "darwin" ] && [ -s "$(brew --prefix nvm)/nvm.sh" ]; then
+ NVM_SH="$(brew --prefix nvm)/nvm.sh"
+ fi
+
+ export NVM_DIR="${HOME_DIR}/.nvm"
+
+ [ -s "$NVM_SH" ] && \. "$NVM_SH"
+
+ # If nvm has been loaded correctly, use project .nvmrc
+ has_nvm && nvm use
+ }
+}
+
+extend_user_path() {
+ if [ "${process.platform}" == "win32" ]; then
+ export PATH="$PATH:/c/Program Files/nodejs"
+ else
+ export PATH="$PATH:/usr/local/bin:/usr/local"
+ try_load_node_from_nvm_paths
+ fi
+}
+
+# Extend path with common path locations for node
+# in order to make the hook working on git GUI apps
+extend_user_path
+
+# Check if we have node js bin in path
+has_node || {
+ echo "Can't found node bin in the PATH. Please update the PATH to proceed."
+ echo "If your PATH already has the node bin, maybe you are using some git GUI app."
+ echo "Can't found node bin in the PATH. Please update the PATH to proceed."
+ echo "If your PATH already has the node bin, maybe you are using some git GUI app not launched from the shell."
+ echo "In order to proceed, you need to config the PATH used by the application that are launching your git GUI app."
+ echo "If you are running macOS, you can do that using:"
+ echo "'sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'"
+
+ exit 1
+}
+
+execute_precommit_hook() {
+ node scripts/precommit_hook || return 1
+
+ PRECOMMIT_FILE="./.git/hooks/pre-commit.local"
+ if [ -x "\${PRECOMMIT_FILE}" ]; then
+ echo "Executing local precommit hook found in \${PRECOMMIT_FILE}"
+ "$PRECOMMIT_FILE" || return 1
+ fi
+}
+
+execute_precommit_hook || {
+ echo "Pre-commit hook failed (add --no-verify to bypass)";
+ echo ' For eslint failures you can try running \`node scripts/precommit_hook --fix\`';
+ exit 1;
+}
+
+exit 0
+`;
diff --git a/packages/kbn-es/src/utils/native_realm.test.js b/packages/kbn-es/src/utils/native_realm.test.js
index 99c7ed1623014..54732f7136fcc 100644
--- a/packages/kbn-es/src/utils/native_realm.test.js
+++ b/packages/kbn-es/src/utils/native_realm.test.js
@@ -109,7 +109,7 @@ describe('setPasswords', () => {
mockClient.security.getUser.mockImplementation(() => ({
body: {
- kibana: {
+ kibana_system: {
metadata: {
_reserved: true,
},
@@ -138,7 +138,7 @@ describe('setPasswords', () => {
}));
await nativeRealm.setPasswords({
- 'password.kibana': 'bar',
+ 'password.kibana_system': 'bar',
});
expect(mockClient.security.changePassword.mock.calls).toMatchInlineSnapshot(`
@@ -149,7 +149,7 @@ Array [
"password": "bar",
},
"refresh": "wait_for",
- "username": "kibana",
+ "username": "kibana_system",
},
],
Array [
@@ -188,7 +188,7 @@ describe('getReservedUsers', () => {
it('returns array of reserved usernames', async () => {
mockClient.security.getUser.mockImplementation(() => ({
body: {
- kibana: {
+ kibana_system: {
metadata: {
_reserved: true,
},
@@ -206,17 +206,17 @@ describe('getReservedUsers', () => {
},
}));
- expect(await nativeRealm.getReservedUsers()).toEqual(['kibana', 'logstash_system']);
+ expect(await nativeRealm.getReservedUsers()).toEqual(['kibana_system', 'logstash_system']);
});
});
describe('setPassword', () => {
it('sets password for provided user', async () => {
- await nativeRealm.setPassword('kibana', 'foo');
+ await nativeRealm.setPassword('kibana_system', 'foo');
expect(mockClient.security.changePassword).toHaveBeenCalledWith({
body: { password: 'foo' },
refresh: 'wait_for',
- username: 'kibana',
+ username: 'kibana_system',
});
});
@@ -226,7 +226,7 @@ describe('setPassword', () => {
});
await expect(
- nativeRealm.setPassword('kibana', 'foo')
+ nativeRealm.setPassword('kibana_system', 'foo')
).rejects.toThrowErrorMatchingInlineSnapshot(`"SomeError"`);
});
});
diff --git a/packages/kbn-interpreter/tasks/build/server_code_transformer.js b/packages/kbn-interpreter/tasks/build/server_code_transformer.js
deleted file mode 100644
index 4bd9220993c62..0000000000000
--- a/packages/kbn-interpreter/tasks/build/server_code_transformer.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-
-const { extname } = require('path');
-
-const { transform } = require('@babel/core');
-
-exports.createServerCodeTransformer = sourceMaps => {
- return (content, path) => {
- switch (extname(path)) {
- case '.js':
- const { code = '' } = transform(content.toString('utf8'), {
- filename: path,
- ast: false,
- code: true,
- sourceMaps: sourceMaps ? 'inline' : false,
- babelrc: false,
- presets: [require.resolve('@kbn/babel-preset/webpack_preset')],
- });
-
- return code;
-
- default:
- return content.toString('utf8');
- }
- };
-};
diff --git a/packages/kbn-interpreter/tasks/build/server_code_transformer.test.js b/packages/kbn-interpreter/tasks/build/server_code_transformer.test.js
deleted file mode 100644
index 519e529c20bf5..0000000000000
--- a/packages/kbn-interpreter/tasks/build/server_code_transformer.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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 { readFileSync } from 'fs';
-import { resolve } from 'path';
-import { createServerCodeTransformer } from './server_code_transformer';
-
-const JS_FIXTURE_PATH = resolve(__dirname, '__fixtures__/sample.js');
-const JS_FIXTURE = readFileSync(JS_FIXTURE_PATH);
-
-describe('js support', () => {
- it('transpiles js file', () => {
- const transformer = createServerCodeTransformer();
- expect(transformer(JS_FIXTURE, JS_FIXTURE_PATH)).toMatchInlineSnapshot(`
-"\\"use strict\\";
-
-var _util = _interopRequireDefault(require(\\"util\\"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/* eslint-disable */
-console.log(_util.default.format('hello world'));"
-`);
- });
-
- it('throws errors for js syntax errors', () => {
- const transformer = createServerCodeTransformer();
- expect(() => transformer(Buffer.from(`export default 'foo`), JS_FIXTURE_PATH)).toThrowError(
- /Unterminated string constant/
- );
- });
-});
diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json
index 5ea031595d1d4..47ed69bc95697 100644
--- a/packages/kbn-ui-framework/package.json
+++ b/packages/kbn-ui-framework/package.json
@@ -50,7 +50,7 @@
"html": "1.0.0",
"html-loader": "^0.5.5",
"imports-loader": "^0.8.0",
- "jquery": "^3.4.1",
+ "jquery": "^3.5.0",
"keymirror": "0.1.1",
"moment": "^2.24.0",
"node-sass": "^4.13.1",
diff --git a/packages/kbn-ui-shared-deps/package.json b/packages/kbn-ui-shared-deps/package.json
index a2248f1ae655e..8259f251a9be3 100644
--- a/packages/kbn-ui-shared-deps/package.json
+++ b/packages/kbn-ui-shared-deps/package.json
@@ -9,8 +9,8 @@
"kbn:watch": "node scripts/build --watch"
},
"dependencies": {
- "@elastic/charts": "19.1.2",
- "@elastic/eui": "22.3.0",
+ "@elastic/charts": "19.2.0",
+ "@elastic/eui": "22.3.1",
"@kbn/i18n": "1.0.0",
"abortcontroller-polyfill": "^1.4.0",
"angular": "^1.7.9",
@@ -18,7 +18,7 @@
"core-js": "^3.6.4",
"custom-event-polyfill": "^0.3.0",
"elasticsearch-browser": "^16.7.0",
- "jquery": "^3.4.1",
+ "jquery": "^3.5.0",
"moment": "^2.24.0",
"moment-timezone": "^0.5.27",
"monaco-editor": "~0.17.0",
diff --git a/renovate.json5 b/renovate.json5
index 61b2485ecf44b..c4efa86366bf4 100644
--- a/renovate.json5
+++ b/renovate.json5
@@ -771,6 +771,14 @@
'@types/podium',
],
},
+ {
+ groupSlug: 'pretty-ms',
+ groupName: 'pretty-ms related packages',
+ packageNames: [
+ 'pretty-ms',
+ '@types/pretty-ms',
+ ],
+ },
{
groupSlug: 'proper-lockfile',
groupName: 'proper-lockfile related packages',
@@ -864,6 +872,14 @@
'@types/sinon',
],
},
+ {
+ groupSlug: 'stats-lite',
+ groupName: 'stats-lite related packages',
+ packageNames: [
+ 'stats-lite',
+ '@types/stats-lite',
+ ],
+ },
{
groupSlug: 'storybook',
groupName: 'storybook related packages',
diff --git a/scripts/kibana.js b/scripts/kibana.js
index f5a63e6c07dd6..4da739469ffb1 100644
--- a/scripts/kibana.js
+++ b/scripts/kibana.js
@@ -17,6 +17,6 @@
* under the License.
*/
-require('../src/apm')(process.env.ELASTIC_APM_PROXY_SERVICE_NAME || 'kibana-proxy');
require('../src/setup_node_env');
+require('../src/apm')(process.env.ELASTIC_APM_PROXY_SERVICE_NAME || 'kibana-proxy');
require('../src/cli/cli');
diff --git a/scripts/register_git_hook.js b/scripts/register_git_hook.js
index 8e03f17967f3f..af3f54619bcec 100644
--- a/scripts/register_git_hook.js
+++ b/scripts/register_git_hook.js
@@ -17,5 +17,5 @@
* under the License.
*/
-require('../src/setup_node_env');
-require('../src/dev/run_register_git_hook');
+require('../src/setup_node_env/prebuilt_dev_only_entry');
+require('@kbn/dev-utils/target/precommit_hook/cli');
diff --git a/src/cli/cluster/cluster_manager.ts b/src/cli/cluster/cluster_manager.ts
index 97dec3eead303..3b3e4d78320d2 100644
--- a/src/cli/cluster/cluster_manager.ts
+++ b/src/cli/cluster/cluster_manager.ts
@@ -268,7 +268,7 @@ export class ClusterManager {
fromRoot('x-pack/plugins/siem/cypress'),
fromRoot('x-pack/plugins/apm/e2e'),
fromRoot('x-pack/plugins/apm/scripts'),
- fromRoot('x-pack/legacy/plugins/canvas/canvas_plugin_src'), // prevents server from restarting twice for Canvas plugin changes,
+ fromRoot('x-pack/plugins/canvas/canvas_plugin_src'), // prevents server from restarting twice for Canvas plugin changes,
'plugins/java_languageserver',
];
diff --git a/src/cli/index.js b/src/cli/index.js
index 45f88eaf82a5b..6dbdd800268a9 100644
--- a/src/cli/index.js
+++ b/src/cli/index.js
@@ -17,6 +17,6 @@
* under the License.
*/
-require('../apm')();
require('../setup_node_env');
+require('../apm')();
require('./cli');
diff --git a/src/cli/serve/serve.js b/src/cli/serve/serve.js
index 29d0fe16ee126..471939121143a 100644
--- a/src/cli/serve/serve.js
+++ b/src/cli/serve/serve.js
@@ -79,7 +79,7 @@ function applyConfigOverrides(rawConfig, opts, extraCliOptions) {
set('optimize.watch', true);
if (!has('elasticsearch.username')) {
- set('elasticsearch.username', 'kibana');
+ set('elasticsearch.username', 'kibana_system');
}
if (!has('elasticsearch.password')) {
diff --git a/src/core/MIGRATION.md b/src/core/MIGRATION.md
index 80f12dd78214d..02d46b1583b59 100644
--- a/src/core/MIGRATION.md
+++ b/src/core/MIGRATION.md
@@ -990,6 +990,9 @@ ls -lh plugins/my_plugin/target/public/
you might see at least one js bundle - `my_plugin.plugin.js`. This is the only artifact loaded by the platform during bootstrap in the browser. The rule of thumb is to keep its size as small as possible.
Other lazily loaded parts of your plugin present in the same folder as separate chunks under `{number}.plugin.js` names.
If you want to investigate what your plugin bundle consists of you need to run `@kbn/optimizer` with `--profile` flag to get generated [webpack stats file](https://webpack.js.org/api/stats/).
+```bash
+node scripts/build_kibana_platform_plugins.js --dist --no-examples --profile
+```
Many OSS tools are allowing you to analyze generated stats file
- [an official tool](http://webpack.github.io/analyse/#modules) from webpack authors
- [webpack-visualizer](https://chrisbateman.github.io/webpack-visualizer/)
diff --git a/src/core/public/application/application_service.tsx b/src/core/public/application/application_service.tsx
index 0dd77072e9eaf..8442f1ecc6411 100644
--- a/src/core/public/application/application_service.tsx
+++ b/src/core/public/application/application_service.tsx
@@ -26,6 +26,7 @@ import { InjectedMetadataSetup } from '../injected_metadata';
import { HttpSetup, HttpStart } from '../http';
import { OverlayStart } from '../overlays';
import { ContextSetup, IContextContainer } from '../context';
+import { PluginOpaqueId } from '../plugins';
import { AppRouter } from './ui';
import { Capabilities, CapabilitiesService } from './capabilities';
import {
@@ -34,7 +35,6 @@ import {
AppLeaveHandler,
AppMount,
AppMountDeprecated,
- AppMounter,
AppNavLinkStatus,
AppStatus,
AppUpdatableFields,
@@ -145,6 +145,25 @@ export class ApplicationService {
this.subscriptions.push(subscription);
};
+ const wrapMount = (plugin: PluginOpaqueId, app: App+ {i18n.translate('core.ui.EmptyRecentlyViewed', { + defaultMessage: 'No recently viewed items', + })} +
+- Elastic Kibana -
Exit full screen
diff --git a/src/legacy/ui/public/field_editor/components/field_format_editor/editors/url/__snapshots__/label_template_flyout.test.tsx.snap b/src/legacy/ui/public/field_editor/components/field_format_editor/editors/url/__snapshots__/label_template_flyout.test.tsx.snap
index cba8e85a65249..f0766df176c0d 100644
--- a/src/legacy/ui/public/field_editor/components/field_format_editor/editors/url/__snapshots__/label_template_flyout.test.tsx.snap
+++ b/src/legacy/ui/public/field_editor/components/field_format_editor/editors/url/__snapshots__/label_template_flyout.test.tsx.snap
@@ -4,12 +4,7 @@ exports[`LabelTemplateFlyout should not render if not visible 1`] = `""`;
exports[`LabelTemplateFlyout should render normally 1`] = `
-
-
-
-
-
- Elastic Kibana
-
Exit full screen
diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/_exit_full_screen_button.scss b/src/plugins/kibana_react/public/exit_full_screen_button/_exit_full_screen_button.scss
index a2e951cb5b775..7548bd0c0db5f 100644
--- a/src/plugins/kibana_react/public/exit_full_screen_button/_exit_full_screen_button.scss
+++ b/src/plugins/kibana_react/public/exit_full_screen_button/_exit_full_screen_button.scss
@@ -10,12 +10,11 @@
bottom: $euiSizeS;
position: fixed;
display: block;
- padding: 0;
+ padding: $euiSizeXS $euiSizeS;
border: none;
background: none;
z-index: 5;
background: $euiColorFullShade;
- padding: $euiSizeXS;
border-radius: $euiBorderRadius;
text-align: left;
@@ -28,11 +27,6 @@
}
}
-.dshExitFullScreenButton__title {
- line-height: 1.2;
- color: $euiColorEmptyShade;
-}
-
.dshExitFullScreenButton__text {
line-height: 1.2;
color: makeHighContrastColor($euiColorMediumShade, $euiColorFullShade);
diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx
index 97fc02ac64e12..8e3113aa9ccfd 100644
--- a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx
+++ b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.tsx
@@ -20,7 +20,7 @@
import { i18n } from '@kbn/i18n';
import React, { PureComponent } from 'react';
import { EuiScreenReaderOnly, keyCodes } from '@elastic/eui';
-import { EuiIcon, EuiTitle, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui';
+import { EuiIcon, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui';
export interface ExitFullScreenButtonProps {
onExitFullScreenMode: () => void;
@@ -69,17 +69,7 @@ class ExitFullScreenButtonUi extends PureComponent
- {i18n.translate(
- 'kibana-react.exitFullScreenButton.exitFullScreenModeButtonTitle',
- {
- defaultMessage: 'Elastic Kibana',
- }
- )}
-
{i18n.translate(
'kibana-react.exitFullScreenButton.exitFullScreenModeButtonText',
diff --git a/src/plugins/kibana_react/public/validated_range/validated_dual_range.tsx b/src/plugins/kibana_react/public/validated_range/validated_dual_range.tsx
index ce583236e7c81..8187e70b1bbd1 100644
--- a/src/plugins/kibana_react/public/validated_range/validated_dual_range.tsx
+++ b/src/plugins/kibana_react/public/validated_range/validated_dual_range.tsx
@@ -16,8 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-
-import React, { Component } from 'react';
+import { i18n } from '@kbn/i18n';
+import React, { Component, createRef } from 'react';
import { EuiFormRow, EuiDualRange } from '@elastic/eui';
import { EuiFormRowDisplayKeys } from '@elastic/eui/src/components/form/form_row/form_row';
import { EuiDualRangeProps } from '@elastic/eui/src/components/form/range/dual_range';
@@ -35,8 +35,8 @@ interface Props extends Omit
- {this.props.vis.type.title} visualization, not yet accessible
-
-
-
-
-
-