Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) &gt; [update](./kibana-plugin-public.chromenavlinks.update.md)

## ChromeNavLinks.update() method

> Warning: This API is now obsolete.
>
> Uses the [AppBase.updater$](./kibana-plugin-public.appbase.updater_.md) property when registering your application with [ApplicationSetup.register()](./kibana-plugin-public.applicationsetup.register.md) instead.
>

Update the navlink for the given id with the updated attributes. Returns the updated navlink or `undefined` if it does not exist.

<b>Signature:</b>

```typescript
update(id: string, values: ChromeNavLinkUpdateableFields): ChromeNavLink | undefined;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| id | <code>string</code> | |
| values | <code>ChromeNavLinkUpdateableFields</code> | |

<b>Returns:</b>

`ChromeNavLink | undefined`

<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) &gt; [update](./kibana-plugin-public.chromenavlinks.update.md)
## ChromeNavLinks.update() method
> Warning: This API is now obsolete.
>
> Uses the [AppBase.updater$](./kibana-plugin-public.appbase.updater_.md) property when registering your application with [ApplicationSetup.register()](./kibana-plugin-public.applicationsetup.register.md) instead.
>
Update the navlink for the given id with the updated attributes. Returns the updated navlink or `undefined` if it does not exist.
<b>Signature:</b>
```typescript
update(id: string, values: ChromeNavLinkUpdateableFields): ChromeNavLink | undefined;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| id | <code>string</code> | |
| values | <code>ChromeNavLinkUpdateableFields</code> | |
<b>Returns:</b>
`ChromeNavLink | undefined`
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [CoreStart](./kibana-plugin-public.corestart.md) &gt; [fatalErrors](./kibana-plugin-public.corestart.fatalerrors.md)

## CoreStart.fatalErrors property

[FatalErrorsStart](./kibana-plugin-public.fatalerrorsstart.md)

<b>Signature:</b>

```typescript
fatalErrors: FatalErrorsStart;
```
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export interface CoreStart
| [application](./kibana-plugin-public.corestart.application.md) | <code>ApplicationStart</code> | [ApplicationStart](./kibana-plugin-public.applicationstart.md) |
| [chrome](./kibana-plugin-public.corestart.chrome.md) | <code>ChromeStart</code> | [ChromeStart](./kibana-plugin-public.chromestart.md) |
| [docLinks](./kibana-plugin-public.corestart.doclinks.md) | <code>DocLinksStart</code> | [DocLinksStart](./kibana-plugin-public.doclinksstart.md) |
| [fatalErrors](./kibana-plugin-public.corestart.fatalerrors.md) | <code>FatalErrorsStart</code> | [FatalErrorsStart](./kibana-plugin-public.fatalerrorsstart.md) |
| [http](./kibana-plugin-public.corestart.http.md) | <code>HttpStart</code> | [HttpStart](./kibana-plugin-public.httpstart.md) |
| [i18n](./kibana-plugin-public.corestart.i18n.md) | <code>I18nStart</code> | [I18nStart](./kibana-plugin-public.i18nstart.md) |
| [injectedMetadata](./kibana-plugin-public.corestart.injectedmetadata.md) | <code>{</code><br/><code> getInjectedVar: (name: string, defaultValue?: any) =&gt; unknown;</code><br/><code> }</code> | exposed temporarily until https://github.com/elastic/kibana/issues/41990 done use \*only\* to retrieve config values. There is no way to set injected values in the new platform. Use the legacy platform API instead. |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [FatalErrorsStart](./kibana-plugin-public.fatalerrorsstart.md)

## FatalErrorsStart type

FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error.

<b>Signature:</b>

```typescript
export declare type FatalErrorsStart = FatalErrorsSetup;
```
1 change: 1 addition & 0 deletions docs/development/core/public/kibana-plugin-public.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
| [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-public.chromehelpextensionmenugithublink.md) | |
| [ChromeHelpExtensionMenuLink](./kibana-plugin-public.chromehelpextensionmenulink.md) | |
| [ChromeNavLinkUpdateableFields](./kibana-plugin-public.chromenavlinkupdateablefields.md) | |
| [FatalErrorsStart](./kibana-plugin-public.fatalerrorsstart.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. |
| [HandlerContextType](./kibana-plugin-public.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md) to represent the type of the context. |
| [HandlerFunction](./kibana-plugin-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-public.icontextcontainer.md) |
| [HandlerParameters](./kibana-plugin-public.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md)<!-- -->, excluding the [HandlerContextType](./kibana-plugin-public.handlercontexttype.md)<!-- -->. |
Expand Down
2 changes: 2 additions & 0 deletions src/core/public/core_system.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ export class CoreSystem {
const http = await this.http.start({ injectedMetadata, fatalErrors: this.fatalErrorsSetup! });
const savedObjects = await this.savedObjects.start({ http });
const i18n = await this.i18n.start();
const fatalErrors = await this.fatalErrors.start();
await this.integrations.start({ uiSettings });

const coreUiTargetDomElement = document.createElement('div');
Expand Down Expand Up @@ -271,6 +272,7 @@ export class CoreSystem {
notifications,
overlays,
uiSettings,
fatalErrors,
};

const plugins = await this.plugins.start(core);
Expand Down
4 changes: 4 additions & 0 deletions src/core/public/fatal_errors/fatal_errors_service.mock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,22 @@ const createSetupContractMock = () => {

return setupContract;
};
const createStartContractMock = createSetupContractMock;

type FatalErrorsServiceContract = PublicMethodsOf<FatalErrorsService>;
const createMock = () => {
const mocked: jest.Mocked<FatalErrorsServiceContract> = {
setup: jest.fn(),
start: jest.fn(),
};

mocked.setup.mockReturnValue(createSetupContractMock());
mocked.start.mockReturnValue(createStartContractMock());
return mocked;
};

export const fatalErrorsServiceMock = {
create: createMock,
createSetupContract: createSetupContractMock,
createStartContract: createStartContractMock,
};
21 changes: 18 additions & 3 deletions src/core/public/fatal_errors/fatal_errors_service.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,18 @@ export interface FatalErrorsSetup {
get$: () => Rx.Observable<FatalErrorInfo>;
}

/**
* FatalErrors stop the Kibana Public Core and displays a fatal error screen
* with details about the Kibana build and the error.
*
* @public
*/
export type FatalErrorsStart = FatalErrorsSetup;

/** @interal */
export class FatalErrorsService {
private readonly errorInfo$ = new Rx.ReplaySubject<FatalErrorInfo>();
private fatalErrors?: FatalErrorsSetup;

/**
*
Expand All @@ -82,7 +91,7 @@ export class FatalErrorsService {
},
});

const fatalErrorsSetup: FatalErrorsSetup = {
this.fatalErrors = {
add: (error, source?) => {
const errorInfo = getErrorInfo(error, source);

Expand All @@ -101,9 +110,15 @@ export class FatalErrorsService {
},
};

this.setupGlobalErrorHandlers(fatalErrorsSetup);
this.setupGlobalErrorHandlers(this.fatalErrors!);

return this.fatalErrors!;
}

return fatalErrorsSetup;
public start() {
const { fatalErrors } = this;
if (!fatalErrors) throw new Error('FatalErrorsService#setup() must be invoked before start.');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NIT/discussion: Personal opinion, but I always avoided one-liner blocks without brackets. Our linter configuration does not complains so this is not an issue, but do we have conventions on that?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no lint rule === no convention. I can update anyway to avoid confusion.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessary, as I said, linter is alright with this, so no need to change imho

return fatalErrors;
}

private renderError(injectedMetadata: InjectedMetadataSetup, i18n: I18nStart) {
Expand Down
2 changes: 1 addition & 1 deletion src/core/public/fatal_errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
* under the License.
*/

export { FatalErrorsSetup, FatalErrorsService } from './fatal_errors_service';
export { FatalErrorsSetup, FatalErrorsStart, FatalErrorsService } from './fatal_errors_service';
export { FatalErrorInfo } from './get_error_info';
5 changes: 4 additions & 1 deletion src/core/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import {
ChromeRecentlyAccessed,
ChromeRecentlyAccessedHistoryItem,
} from './chrome';
import { FatalErrorsSetup, FatalErrorInfo } from './fatal_errors';
import { FatalErrorsSetup, FatalErrorsStart, FatalErrorInfo } from './fatal_errors';
import { HttpSetup, HttpStart } from './http';
import { I18nStart } from './i18n';
import { InjectedMetadataSetup, InjectedMetadataStart, LegacyNavLink } from './injected_metadata';
Expand Down Expand Up @@ -232,6 +232,8 @@ export interface CoreStart {
overlays: OverlayStart;
/** {@link IUiSettingsClient} */
uiSettings: IUiSettingsClient;
/** {@link FatalErrorsStart} */
fatalErrors: FatalErrorsStart;
/**
* exposed temporarily until https://github.com/elastic/kibana/issues/41990 done
* use *only* to retrieve config values. There is no way to set injected values
Expand Down Expand Up @@ -302,6 +304,7 @@ export {
DocLinksStart,
FatalErrorInfo,
FatalErrorsSetup,
FatalErrorsStart,
HttpSetup,
HttpStart,
I18nStart,
Expand Down
2 changes: 2 additions & 0 deletions src/core/public/legacy/legacy_service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ const notificationsStart = notificationServiceMock.createStartContract();
const overlayStart = overlayServiceMock.createStartContract();
const uiSettingsStart = uiSettingsServiceMock.createStartContract();
const savedObjectsStart = savedObjectsMock.createStartContract();
const fatalErrorsStart = fatalErrorsServiceMock.createStartContract();
const mockStorage = { getItem: jest.fn() } as any;

const defaultStartDeps = {
Expand All @@ -112,6 +113,7 @@ const defaultStartDeps = {
overlays: overlayStart,
uiSettings: uiSettingsStart,
savedObjects: savedObjectsStart,
fatalErrors: fatalErrorsStart,
},
lastSubUrlStorage: mockStorage,
targetDomElement: document.createElement('div'),
Expand Down
1 change: 1 addition & 0 deletions src/core/public/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ function createCoreStartMock({ basePath = '' } = {}) {
injectedMetadata: {
getInjectedVar: injectedMetadataServiceMock.createStartContract().getInjectedVar,
},
fatalErrors: fatalErrorsServiceMock.createStartContract(),
};

return mock;
Expand Down
1 change: 1 addition & 0 deletions src/core/public/plugins/plugin_context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,5 +151,6 @@ export function createPluginStartContext<
injectedMetadata: {
getInjectedVar: deps.injectedMetadata.getInjectedVar,
},
fatalErrors: deps.fatalErrors,
};
}
1 change: 1 addition & 0 deletions src/core/public/plugins/plugins_service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ describe('PluginsService', () => {
overlays: overlayServiceMock.createStartContract(),
uiSettings: uiSettingsServiceMock.createStartContract(),
savedObjects: savedObjectsMock.createStartContract(),
fatalErrors: fatalErrorsServiceMock.createStartContract(),
};
mockStartContext = {
...mockStartDeps,
Expand Down
5 changes: 5 additions & 0 deletions src/core/public/public.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,8 @@ export interface CoreStart {
// (undocumented)
docLinks: DocLinksStart;
// (undocumented)
fatalErrors: FatalErrorsStart;
// (undocumented)
http: HttpStart;
// (undocumented)
i18n: I18nStart;
Expand Down Expand Up @@ -532,6 +534,9 @@ export interface FatalErrorsSetup {
get$: () => Rx.Observable<FatalErrorInfo>;
}

// @public
export type FatalErrorsStart = FatalErrorsSetup;

// @public
export type HandlerContextType<T extends HandlerFunction<any>> = T extends HandlerFunction<infer U> ? U : never;

Expand Down