TypeScriptify index_patterns/index_patterns/flatten_hit.js (#45269) (#45763)

* Typescriptify flatten_hit.js

* Fix path
This commit is contained in:
Artyom Gospodarsky 2019-09-16 16:35:56 +03:00 committed by GitHub
parent 7b12301f2d
commit ec4de9993b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 19 deletions

View file

@ -18,18 +18,19 @@
*/
import _ from 'lodash';
import { IndexPattern } from './';
// Takes a hit, merges it with any stored/scripted fields, and with the metaFields
// returns a flattened version
function flattenHit(indexPattern, hit, deep) {
const flat = {};
function flattenHit(indexPattern: IndexPattern, hit: Record<string, any>, deep: boolean) {
const flat = {} as Record<string, any>;
// recursively merge _source
const fields = indexPattern.fields.byName;
(function flatten(obj, keyPrefix) {
(function flatten(obj, keyPrefix = '') {
keyPrefix = keyPrefix ? keyPrefix + '.' : '';
_.forOwn(obj, function (val, key) {
_.forOwn(obj, function(val, key) {
key = keyPrefix + key;
if (deep) {
@ -52,28 +53,28 @@ function flattenHit(indexPattern, hit, deep) {
} else if (Array.isArray(flat[key])) {
flat[key].push(val);
} else {
flat[key] = [ flat[key], val ];
flat[key] = [flat[key], val];
}
return;
}
flatten(val, key);
});
}(hit._source));
})(hit._source);
return flat;
}
function decorateFlattenedWrapper(hit, metaFields) {
return function (flattened) {
function decorateFlattenedWrapper(hit: Record<string, any>, metaFields: Record<string, any>) {
return function(flattened: Record<string, any>) {
// assign the meta fields
_.each(metaFields, function (meta) {
_.each(metaFields, function(meta) {
if (meta === '_source') return;
flattened[meta] = hit[meta];
});
// unwrap computed fields
_.forOwn(hit.fields, function (val, key) {
_.forOwn(hit.fields, function(val, key: any) {
if (key[0] === '_' && !_.contains(metaFields, key)) return;
flattened[key] = Array.isArray(val) && val.length === 1 ? val[0] : val;
});
@ -88,8 +89,12 @@ function decorateFlattenedWrapper(hit, metaFields) {
*
* @internal
*/
export function flattenHitWrapper(indexPattern, metaFields = {}, cache = new WeakMap()) {
return function cachedFlatten(hit, deep = false) {
export function flattenHitWrapper(
indexPattern: IndexPattern,
metaFields = {},
cache = new WeakMap()
) {
return function cachedFlatten(hit: Record<string, any>, deep = false) {
const decorateFlattened = decorateFlattenedWrapper(hit, metaFields);
const cached = cache.get(hit);
const flattened = cached || flattenHit(indexPattern, hit, deep);

View file

@ -17,7 +17,6 @@
* under the License.
*/
// @ts-ignore
export * from './flatten_hit';
export * from './format_hit';
export * from './index_pattern';

View file

@ -38,7 +38,6 @@ import { Field, FieldList, FieldType } from '../fields';
import { createFieldsFetcher } from './_fields_fetcher';
import { getRoutes } from '../utils';
import { formatHitProvider } from './format_hit';
// @ts-ignore
import { flattenHitWrapper } from './flatten_hit';
import { IndexPatternsApiClient } from './index_patterns_api_client';

View file

@ -18,8 +18,7 @@
*/
import { IndexPatternsService, IndexPatternsSetup } from '.';
// @ts-ignore
import { flattenHitWrapper } from './index_patterns/flatten_hit';
import { flattenHitWrapper } from './index_patterns';
type IndexPatternsServiceClientContract = PublicMethodsOf<IndexPatternsService>;

View file

@ -19,8 +19,7 @@
import { UiSettingsClientContract, SavedObjectsClientContract } from 'src/core/public';
import { Field, FieldList, FieldType } from './fields';
// @ts-ignore
import { createFlattenHitWrapper } from './index_patterns/flatten_hit';
import { createFlattenHitWrapper } from './index_patterns';
import { createIndexPatternSelect } from './components';
import {
formatHitProvider,

View file

@ -21,7 +21,6 @@ import { mount } from 'enzyme';
import { IndexPattern } from 'ui/index_patterns';
// @ts-ignore
import { findTestSubject } from '@elastic/eui/lib/test';
// @ts-ignore
import { flattenHitWrapper } from '../../../../data/public/index_patterns/index_patterns/flatten_hit';
import { DocViewTable } from './table';