* wip * First pass at standalone and embedded redux stores and usage * wip * First pass at standalone and embedded redux stores and usage * wip * clean up * wip * refact(NA): remove extra pkg_npm target and add specific target folders on @kbn/i18n * cleanup * - fixes type errors in tests * WIP remove use_manage_timeline * wip add query + selector * finishing integrating timeline manage context from redux * integrating t-grid in security solution * fix RowRender type * WIP begin to move components from package to plugin * integration of t-grid inside of security solution * wip to make redux work * little trick to make it render * - fixes a few type errors * better integration betwen tgrid and security solutions * bringing back tsconfig on timeline * wip integration t-grid in observability * fix types * fix type in security solutions * add type to import + trie dto get the bundle size as small as possible * fix type in integration test * fix type in integration test * - fix tests * clean up to use technical fields * - fixes unit tests * - mocks the `useDateFormat` function of the `useKibana` service to fix unit tests * fix t-grid settings vs create timeline + fix inspect button * fix last suites test * Update unit tests, snapshots and lint * Fix bad merge * fix plugin export * Fix some failing tests * fix unit tets in timelines plugins * fix latest test * fix i18n * free obs from t-grid * Fix timeline functional plugin types * fix store provider * Update failing defaultHeader test * Fix i18n usage in security solution * Fix remaining i18n errors in timelines plugin * Dedupe common shared types * move drag and drop utils in package to avoid duplication * More shared type cleanup * add feature flag * review I * fix merge with master * fix i18n translation * More type deduping * Use @kbn/common-utils, fix remaining types * fix types * fix tests * missing type * fix cypress tests Co-authored-by: Kevin Qualters <kevin.qualters@elastic.co> Co-authored-by: Tiago Costa <tiagoffcc@hotmail.com> Co-authored-by: Andrew Goldstein <andrew.goldstein@elastic.co>
54 lines
2.2 KiB
TypeScript
54 lines
2.2 KiB
TypeScript
/*
|
|
* 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.
|
|
*/
|
|
|
|
import * as runtimeTypes from 'io-ts';
|
|
import { ReactNode } from 'react';
|
|
|
|
// This type is for typing EuiDescriptionList
|
|
export interface DescriptionList {
|
|
title: NonNullable<ReactNode>;
|
|
description: NonNullable<ReactNode>;
|
|
}
|
|
|
|
export const unionWithNullType = <T extends runtimeTypes.Mixed>(type: T) =>
|
|
runtimeTypes.union([type, runtimeTypes.null]);
|
|
|
|
export const stringEnum = <T>(enumObj: T, enumName = 'enum') =>
|
|
new runtimeTypes.Type<T[keyof T], string>(
|
|
enumName,
|
|
(u): u is T[keyof T] => Object.values(enumObj).includes(u),
|
|
(u, c) =>
|
|
Object.values(enumObj).includes(u)
|
|
? runtimeTypes.success(u as T[keyof T])
|
|
: runtimeTypes.failure(u, c),
|
|
(a) => (a as unknown) as string
|
|
);
|
|
|
|
/**
|
|
* Unreachable Assertion helper for scenarios like exhaustive switches.
|
|
* For references see: https://stackoverflow.com/questions/39419170/how-do-i-check-that-a-switch-block-is-exhaustive-in-typescript
|
|
* This "x" should _always_ be a type of "never" and not change to "unknown" or any other type. See above link or the generic
|
|
* concept of exhaustive checks in switch blocks.
|
|
*
|
|
* Optionally you can avoid the use of this by using early returns and TypeScript will clear your type checking without complaints
|
|
* but there are situations and times where this function might still be needed.
|
|
*
|
|
* If you see an error, DO NOT cast "as never" such as:
|
|
* assertUnreachable(x as never) // BUG IN YOUR CODE NOW AND IT WILL THROW DURING RUNTIME
|
|
* If you see code like that remove it, as that deactivates the intent of this utility.
|
|
* If you need to do that, then you should remove assertUnreachable from your code and
|
|
* use a default at the end of the switch instead.
|
|
* @param x Unreachable field
|
|
* @param message Message of error thrown
|
|
*/
|
|
export const assertUnreachable = (
|
|
x: never, // This should always be a type of "never"
|
|
message = 'Unknown Field in switch statement'
|
|
): never => {
|
|
throw new Error(`${message}: ${x}`);
|
|
};
|